aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--queries/cpp/highlights.scm101
-rw-r--r--tests/query/highlights/cpp/static-namespace-functions.cpp16
2 files changed, 77 insertions, 40 deletions
diff --git a/queries/cpp/highlights.scm b/queries/cpp/highlights.scm
index 586067155..97a3b9f39 100644
--- a/queries/cpp/highlights.scm
+++ b/queries/cpp/highlights.scm
@@ -49,58 +49,93 @@
(destructor_name
(identifier) @method)
+; functions
(function_declarator
- declarator: (qualified_identifier
- name: (identifier) @function))
+ (qualified_identifier
+ (identifier) @function))
(function_declarator
- declarator: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function)))
+ (qualified_identifier
+ (qualified_identifier
+ (identifier) @function)))
(function_declarator
- declarator: (template_function
- name: (identifier) @function))
+ (qualified_identifier
+ (qualified_identifier
+ (qualified_identifier
+ (identifier) @function))))
+((qualified_identifier
+ (qualified_identifier
+ (qualified_identifier
+ (qualified_identifier
+ (identifier) @function)))) @_parent
+ (#has-ancestor? @_parent function_declarator))
+
(function_declarator
- declarator: (template_method
- name: (field_identifier) @method))
-((function_declarator
- declarator: (qualified_identifier
- name: (identifier) @constructor))
- (#lua-match? @constructor "^[A-Z]"))
+ (template_function
+ (identifier) @function))
(operator_name) @function
"operator" @function
"static_assert" @function.builtin
(call_expression
- function: (qualified_identifier
- name: (identifier) @function.call))
+ (qualified_identifier
+ (identifier) @function.call))
(call_expression
- function: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function.call)))
+ (qualified_identifier
+ (qualified_identifier
+ (identifier) @function.call)))
(call_expression
- function:
+ (qualified_identifier
+ (qualified_identifier
(qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function.call))))
+ (identifier) @function.call))))
+((qualified_identifier
+ (qualified_identifier
+ (qualified_identifier
+ (qualified_identifier
+ (identifier) @function.call)))) @_parent
+ (#has-ancestor? @_parent call_expression))
+
(call_expression
- function: (template_function
- name: (identifier) @function.call))
+ (template_function
+ (identifier) @function.call))
(call_expression
- function: (qualified_identifier
- name: (template_function
- name: (identifier) @function.call)))
+ (qualified_identifier
+ (template_function
+ (identifier) @function.call)))
+(call_expression
+ (qualified_identifier
+ (qualified_identifier
+ (template_function
+ (identifier) @function.call))))
(call_expression
- function:
+ (qualified_identifier
+ (qualified_identifier
(qualified_identifier
- name: (qualified_identifier
- name: (template_function
- name: (identifier) @function.call))))
+ (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
- function: (field_expression
- field: (field_identifier) @method.call))
+ (field_expression
+ (field_identifier) @method.call))
+
+; constructors
+
+((function_declarator
+ (qualified_identifier
+ (identifier) @constructor))
+ (#lua-match? @constructor "^[A-Z]"))
((call_expression
function: (identifier) @constructor)
diff --git a/tests/query/highlights/cpp/static-namespace-functions.cpp b/tests/query/highlights/cpp/static-namespace-functions.cpp
index 2bea488a3..3d16c43cf 100644
--- a/tests/query/highlights/cpp/static-namespace-functions.cpp
+++ b/tests/query/highlights/cpp/static-namespace-functions.cpp
@@ -1,12 +1,14 @@
// Issue #2396
-int main()
-{
- B::foo();
+int main()
+{
+ B::foo();
// ^ @function.call
- Foo::A::foo();
+ Foo::A::foo();
// ^ @function.call
- Foo::a::A::foo();
+ Foo::a::A::foo();
// ^ @function.call
- return 0;
-}
+ Foo::a::A::B::foo();
+ // ^ @function.call
+ return 0;
+}