aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSalomon Popp <hi@salomonpopp.me>2025-03-13 09:21:55 +0100
committerGitHub <noreply@github.com>2025-03-13 09:21:55 +0100
commit683816f14718b257666b29f792a8d330936cf5c1 (patch)
treeca73997c9ec2a242cfc4956e25a36901c472a950
parentbot(lockfile): update cmake, liquid, meson, tera, v, vhdl (diff)
downloadnvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar
nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.gz
nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.bz2
nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.lz
nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.xz
nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.zst
nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.zip
fix(python): don't highlight parameter name as builtin (#7732)
-rw-r--r--queries/python/highlights.scm122
-rw-r--r--tests/query/highlights/python/fields.py15
-rw-r--r--tests/query/highlights/python/functions.py5
3 files changed, 77 insertions, 65 deletions
diff --git a/queries/python/highlights.scm b/queries/python/highlights.scm
index 60f3e14c0..855c96dfc 100644
--- a/queries/python/highlights.scm
+++ b/queries/python/highlights.scm
@@ -65,61 +65,6 @@
(identifier) @type))
(#eq? @_isinstance "isinstance"))
-; Normal parameters
-(parameters
- (identifier) @variable.parameter)
-
-; Lambda parameters
-(lambda_parameters
- (identifier) @variable.parameter)
-
-(lambda_parameters
- (tuple_pattern
- (identifier) @variable.parameter))
-
-; Default parameters
-(keyword_argument
- name: (identifier) @variable.parameter)
-
-; Naming parameters on call-site
-(default_parameter
- name: (identifier) @variable.parameter)
-
-(typed_parameter
- (identifier) @variable.parameter)
-
-(typed_default_parameter
- name: (identifier) @variable.parameter)
-
-; Variadic parameters *args, **kwargs
-(parameters
- (list_splat_pattern ; *args
- (identifier) @variable.parameter))
-
-(parameters
- (dictionary_splat_pattern ; **kwargs
- (identifier) @variable.parameter))
-
-; Typed variadic parameters
-(parameters
- (typed_parameter
- (list_splat_pattern ; *args: type
- (identifier) @variable.parameter)))
-
-(parameters
- (typed_parameter
- (dictionary_splat_pattern ; *kwargs: type
- (identifier) @variable.parameter)))
-
-; Lambda parameters
-(lambda_parameters
- (list_splat_pattern
- (identifier) @variable.parameter))
-
-(lambda_parameters
- (dictionary_splat_pattern
- (identifier) @variable.parameter))
-
; Literals
(none) @constant.builtin
@@ -128,12 +73,6 @@
(false)
] @boolean
-((identifier) @variable.builtin
- (#eq? @variable.builtin "self"))
-
-((identifier) @variable.builtin
- (#eq? @variable.builtin "cls"))
-
(integer) @number
(float) @number.float
@@ -369,6 +308,67 @@
"bool" "int" "float" "complex" "list" "tuple" "range" "str" "bytes" "bytearray" "memoryview"
"set" "frozenset" "dict" "type" "object"))
+; Normal parameters
+(parameters
+ (identifier) @variable.parameter)
+
+; Lambda parameters
+(lambda_parameters
+ (identifier) @variable.parameter)
+
+(lambda_parameters
+ (tuple_pattern
+ (identifier) @variable.parameter))
+
+; Default parameters
+(keyword_argument
+ name: (identifier) @variable.parameter)
+
+; Naming parameters on call-site
+(default_parameter
+ name: (identifier) @variable.parameter)
+
+(typed_parameter
+ (identifier) @variable.parameter)
+
+(typed_default_parameter
+ name: (identifier) @variable.parameter)
+
+; Variadic parameters *args, **kwargs
+(parameters
+ (list_splat_pattern ; *args
+ (identifier) @variable.parameter))
+
+(parameters
+ (dictionary_splat_pattern ; **kwargs
+ (identifier) @variable.parameter))
+
+; Typed variadic parameters
+(parameters
+ (typed_parameter
+ (list_splat_pattern ; *args: type
+ (identifier) @variable.parameter)))
+
+(parameters
+ (typed_parameter
+ (dictionary_splat_pattern ; *kwargs: type
+ (identifier) @variable.parameter)))
+
+; Lambda parameters
+(lambda_parameters
+ (list_splat_pattern
+ (identifier) @variable.parameter))
+
+(lambda_parameters
+ (dictionary_splat_pattern
+ (identifier) @variable.parameter))
+
+((identifier) @variable.builtin
+ (#eq? @variable.builtin "self"))
+
+((identifier) @variable.builtin
+ (#eq? @variable.builtin "cls"))
+
; After @type.builtin bacause builtins (such as `type`) are valid as attribute name
((attribute
attribute: (identifier) @variable.member)
diff --git a/tests/query/highlights/python/fields.py b/tests/query/highlights/python/fields.py
index cea9eccb7..cbe80cdc2 100644
--- a/tests/query/highlights/python/fields.py
+++ b/tests/query/highlights/python/fields.py
@@ -2,12 +2,15 @@ class Fields:
type: str
# ^^^^ @variable.member
- def __init__(self, fields: list[int]) -> None:
-# ^^^ @type.builtin
-# ^^^^ @constant.builtin
+ def __init__(self, type: str, fields: list[int]) -> None:
+# ^^^^ @variable.builtin
+# ^^^^ @variable.parameter
+# ^^^^^^ @variable.parameter
+# ^^^ @type.builtin
+# ^^^^ @constant.builtin
self.fields = fields
# ^^^^^^ @variable.member
- self.type = "foo"
+ self.type = type # this cannot be highlighted correctly by Treesitter
# ^^^^ @variable.member
self.__dunderfield__ = None
# ^^^^^^^^^^^^^^^ @variable.member
@@ -15,3 +18,7 @@ class Fields:
# ^^^^^^^^^^^ @variable.member
self.NOT_A_FIELD = "IM NOT A FIELD"
# ^^^^^^^^^^^ @constant
+
+Fields(type="schema", fields=[0, 1])
+# ^^^^ @variable.parameter
+# ^^^^^^ @variable.parameter
diff --git a/tests/query/highlights/python/functions.py b/tests/query/highlights/python/functions.py
index 6d3028433..7284d3fcc 100644
--- a/tests/query/highlights/python/functions.py
+++ b/tests/query/highlights/python/functions.py
@@ -8,6 +8,11 @@ _ = func()
class Foo:
def method(self) -> None: ...
+# ^^^^ @variable.builtin
+
+ @classmethod
+ def clsmethod(cls) -> None: ...
+# ^^^ @variable.builtin
Foo().method()
# ^^^^^^ @function.method.call