Something like id id2("){ ... }"); is no longer wrongly recognized as a "function" id id2(") { ... } "); As the difference in the tests shows, this has the unfortunate side effect that we no longer highlight something like int f(param="default"); as a function declaration, but it is hard to imagine another way to fix this (cf. “most vexing parse” problem). Fixes #2207
41 lines
999 B
Text
41 lines
999 B
Text
---input---
|
|
// This should not be recognized as a function declaration followed by
|
|
// garbage.
|
|
string xyz(");");
|
|
|
|
// This should not be recognized as a function definition.
|
|
|
|
string xyz("){ }");
|
|
|
|
---tokens---
|
|
'// This should not be recognized as a function declaration followed by\n' Comment.Single
|
|
|
|
'// garbage.\n' Comment.Single
|
|
|
|
'string' Name
|
|
' ' Text.Whitespace
|
|
'xyz' Name
|
|
'(' Punctuation
|
|
'"' Literal.String
|
|
');' Literal.String
|
|
'"' Literal.String
|
|
')' Punctuation
|
|
';' Punctuation
|
|
'\n' Text.Whitespace
|
|
|
|
'\n' Text.Whitespace
|
|
|
|
'// This should not be recognized as a function definition.\n' Comment.Single
|
|
|
|
'\n' Text.Whitespace
|
|
|
|
'string' Name
|
|
' ' Text.Whitespace
|
|
'xyz' Name
|
|
'(' Punctuation
|
|
'"' Literal.String
|
|
'){ }' Literal.String
|
|
'"' Literal.String
|
|
')' Punctuation
|
|
';' Punctuation
|
|
'\n' Text.Whitespace
|