mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-18 03:10:04 -04:00
feat(cpp): improve function.call to support any level of nesting for qualified identifiers
This commit is contained in:
parent
f7e8b7420c
commit
dad0864fa3
2 changed files with 80 additions and 43 deletions
|
|
@ -49,58 +49,93 @@
|
||||||
(destructor_name
|
(destructor_name
|
||||||
(identifier) @method)
|
(identifier) @method)
|
||||||
|
|
||||||
|
; functions
|
||||||
(function_declarator
|
(function_declarator
|
||||||
declarator: (qualified_identifier
|
(qualified_identifier
|
||||||
name: (identifier) @function))
|
(identifier) @function))
|
||||||
(function_declarator
|
(function_declarator
|
||||||
declarator: (qualified_identifier
|
(qualified_identifier
|
||||||
name: (qualified_identifier
|
(qualified_identifier
|
||||||
name: (identifier) @function)))
|
(identifier) @function)))
|
||||||
(function_declarator
|
(function_declarator
|
||||||
declarator: (template_function
|
(qualified_identifier
|
||||||
name: (identifier) @function))
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(identifier) @function))))
|
||||||
|
((qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(identifier) @function)))) @_parent
|
||||||
|
(#has-ancestor? @_parent function_declarator))
|
||||||
|
|
||||||
(function_declarator
|
(function_declarator
|
||||||
declarator: (template_method
|
(template_function
|
||||||
name: (field_identifier) @method))
|
(identifier) @function))
|
||||||
((function_declarator
|
|
||||||
declarator: (qualified_identifier
|
|
||||||
name: (identifier) @constructor))
|
|
||||||
(#lua-match? @constructor "^[A-Z]"))
|
|
||||||
|
|
||||||
(operator_name) @function
|
(operator_name) @function
|
||||||
"operator" @function
|
"operator" @function
|
||||||
"static_assert" @function.builtin
|
"static_assert" @function.builtin
|
||||||
|
|
||||||
(call_expression
|
(call_expression
|
||||||
function: (qualified_identifier
|
(qualified_identifier
|
||||||
name: (identifier) @function.call))
|
(identifier) @function.call))
|
||||||
(call_expression
|
(call_expression
|
||||||
function: (qualified_identifier
|
(qualified_identifier
|
||||||
name: (qualified_identifier
|
(qualified_identifier
|
||||||
name: (identifier) @function.call)))
|
(identifier) @function.call)))
|
||||||
(call_expression
|
(call_expression
|
||||||
function:
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
(qualified_identifier
|
(qualified_identifier
|
||||||
name: (qualified_identifier
|
(identifier) @function.call))))
|
||||||
name: (qualified_identifier
|
((qualified_identifier
|
||||||
name: (identifier) @function.call))))
|
(qualified_identifier
|
||||||
(call_expression
|
(qualified_identifier
|
||||||
function: (template_function
|
|
||||||
name: (identifier) @function.call))
|
|
||||||
(call_expression
|
|
||||||
function: (qualified_identifier
|
|
||||||
name: (template_function
|
|
||||||
name: (identifier) @function.call)))
|
|
||||||
(call_expression
|
|
||||||
function:
|
|
||||||
(qualified_identifier
|
(qualified_identifier
|
||||||
name: (qualified_identifier
|
(identifier) @function.call)))) @_parent
|
||||||
name: (template_function
|
(#has-ancestor? @_parent call_expression))
|
||||||
name: (identifier) @function.call))))
|
|
||||||
|
|
||||||
(call_expression
|
(call_expression
|
||||||
function: (field_expression
|
(template_function
|
||||||
field: (field_identifier) @method.call))
|
(identifier) @function.call))
|
||||||
|
(call_expression
|
||||||
|
(qualified_identifier
|
||||||
|
(template_function
|
||||||
|
(identifier) @function.call)))
|
||||||
|
(call_expression
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(template_function
|
||||||
|
(identifier) @function.call))))
|
||||||
|
(call_expression
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(template_function
|
||||||
|
(identifier) @function.call)))))
|
||||||
|
((qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(qualified_identifier
|
||||||
|
(template_function
|
||||||
|
(identifier) @function.call))))) @_parent
|
||||||
|
(#has-ancestor? @_parent call_expression))
|
||||||
|
|
||||||
|
; methods
|
||||||
|
(function_declarator
|
||||||
|
(template_method
|
||||||
|
(field_identifier) @method))
|
||||||
|
(call_expression
|
||||||
|
(field_expression
|
||||||
|
(field_identifier) @method.call))
|
||||||
|
|
||||||
|
; constructors
|
||||||
|
|
||||||
|
((function_declarator
|
||||||
|
(qualified_identifier
|
||||||
|
(identifier) @constructor))
|
||||||
|
(#lua-match? @constructor "^[A-Z]"))
|
||||||
|
|
||||||
((call_expression
|
((call_expression
|
||||||
function: (identifier) @constructor)
|
function: (identifier) @constructor)
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,7 @@ int main()
|
||||||
// ^ @function.call
|
// ^ @function.call
|
||||||
Foo::a::A::foo();
|
Foo::a::A::foo();
|
||||||
// ^ @function.call
|
// ^ @function.call
|
||||||
|
Foo::a::A::B::foo();
|
||||||
|
// ^ @function.call
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue