@@ -229,10 +229,10 @@ struct SemanticTokenParser {
229
229
var tokens : [ SemanticToken ] = [ ]
230
230
231
231
if let offset: Int = useName ? response [ keys. nameoffset] : response [ keys. offset] ,
232
- let length: Int = useName ? response [ keys. namelength] : response [ keys. length] ,
233
- let start: Position = snapshot. positionOf ( utf8Offset: offset) ,
234
- let skKind: sourcekitd_uid_t = response [ keys. kind] ,
235
- let ( kind, modifiers) = parseKindAndModifiers ( skKind) {
232
+ let length: Int = useName ? response [ keys. namelength] : response [ keys. length] ,
233
+ let start: Position = snapshot. positionOf ( utf8Offset: offset) ,
234
+ let skKind: sourcekitd_uid_t = response [ keys. kind] ,
235
+ let ( kind, modifiers) = parseKindAndModifiers ( skKind) {
236
236
let token = SemanticToken (
237
237
start: start,
238
238
length: length,
@@ -328,11 +328,14 @@ struct SemanticTokenParser {
328
328
case values. decl_var_local,
329
329
values. decl_var_global:
330
330
return ( . variable, [ . declaration] )
331
+ // We ignore `value.decl_var_parameter`s for now.
332
+ // SourceKit seems to use these to refer to parameter labels,
333
+ // therefore we don't use .parameter here (which LSP client like
334
+ // VSCode seem to interpret as variable identifiers, however
335
+ // causing a 'wrong highlighting' e.g. of `x` in `f(x y: Int) {}`)
331
336
case values. ref_var_local,
332
337
values. ref_var_global:
333
338
return ( . variable, [ ] )
334
- case values. decl_var_parameter:
335
- return ( . parameter, [ . declaration] )
336
339
case values. syntaxtype_comment,
337
340
values. syntaxtype_doccomment:
338
341
return ( . comment, [ ] )
0 commit comments