From 7a6f339c855d499e84f52d7fb29dfe54e9fa4d3c Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 29 May 2025 09:29:39 +0200 Subject: [PATCH 1/5] Include callee in domain for argument iteration scope --- .../csharp/argument.actual.iteration.scope | 4 +- .../css/argument.actual.iteration.scope | 4 +- .../css/argument.actual.iteration2.scope | 4 +- ...rgument.actual.constructor.iteration.scope | 4 +- .../java/argument.actual.iteration.scope | 4 +- .../argument.actual.method.iteration.scope | 4 +- ...rgument.actual.constructor.iteration.scope | 4 +- .../argument.actual.iteration.scope | 4 +- .../argument.actual.method.iteration.scope | 4 +- ...rgument.actual.constructor.iteration.scope | 4 +- .../php/argument.actual.iteration.scope | 4 +- .../argument.actual.method.iteration.scope | 10 +- ...rgument.actual.constructor.iteration.scope | 4 +- .../python/argument.actual.iteration.scope | 4 +- .../argument.actual.method.iteration.scope | 4 +- .../scopes/r/argument.actual.iteration.scope | 13 +-- .../scopes/r/argument.formal.iteration.scope | 14 ++- .../talon/argument.actual.iteration.scope | 4 +- .../talon/argument.actual.iteration2.scope | 7 +- queries/c.scm | 8 +- queries/csharp.scm | 12 ++- queries/css.scm | 12 ++- queries/go.scm | 21 ++-- queries/java.scm | 12 ++- queries/javascript.core.scm | 8 +- queries/php.scm | 32 +++++- queries/python.scm | 8 +- queries/r.scm | 99 +++++++++---------- queries/talon.scm | 16 +-- 29 files changed, 195 insertions(+), 137 deletions(-) diff --git a/data/fixtures/scopes/csharp/argument.actual.iteration.scope b/data/fixtures/scopes/csharp/argument.actual.iteration.scope index ca2442e67f..b1b50cb7b9 100644 --- a/data/fixtures/scopes/csharp/argument.actual.iteration.scope +++ b/data/fixtures/scopes/csharp/argument.actual.iteration.scope @@ -5,6 +5,6 @@ Foo(5, "bar"); >--------< 0| Foo(5, "bar"); -[Domain] = 0:3-0:13 - >----------< +[Domain] = 0:0-0:13 + >-------------< 0| Foo(5, "bar"); diff --git a/data/fixtures/scopes/css/argument.actual.iteration.scope b/data/fixtures/scopes/css/argument.actual.iteration.scope index c3f245e5bc..ed87b584bd 100644 --- a/data/fixtures/scopes/css/argument.actual.iteration.scope +++ b/data/fixtures/scopes/css/argument.actual.iteration.scope @@ -7,6 +7,6 @@ >-----------< 1| width: calc(100% - 50px); -[Domain] = 1:13-1:26 - >-------------< +[Domain] = 1:9-1:26 + >-----------------< 1| width: calc(100% - 50px); diff --git a/data/fixtures/scopes/css/argument.actual.iteration2.scope b/data/fixtures/scopes/css/argument.actual.iteration2.scope index 0ba3798918..28c938b23e 100644 --- a/data/fixtures/scopes/css/argument.actual.iteration2.scope +++ b/data/fixtures/scopes/css/argument.actual.iteration2.scope @@ -7,6 +7,6 @@ >----------------< 1| background: repeating-linear-gradient(red, orange 50px); -[Domain] = 1:39-1:57 - >------------------< +[Domain] = 1:14-1:57 + >-------------------------------------------< 1| background: repeating-linear-gradient(red, orange 50px); diff --git a/data/fixtures/scopes/java/argument.actual.constructor.iteration.scope b/data/fixtures/scopes/java/argument.actual.constructor.iteration.scope index eeeef4b2ce..db95ab13b4 100644 --- a/data/fixtures/scopes/java/argument.actual.constructor.iteration.scope +++ b/data/fixtures/scopes/java/argument.actual.constructor.iteration.scope @@ -5,6 +5,6 @@ new Foo(123, 456); >--------< 0| new Foo(123, 456); -[Domain] = 0:7-0:17 - >----------< +[Domain] = 0:0-0:17 + >-----------------< 0| new Foo(123, 456); diff --git a/data/fixtures/scopes/java/argument.actual.iteration.scope b/data/fixtures/scopes/java/argument.actual.iteration.scope index 5488b1ab14..e08a363fef 100644 --- a/data/fixtures/scopes/java/argument.actual.iteration.scope +++ b/data/fixtures/scopes/java/argument.actual.iteration.scope @@ -5,6 +5,6 @@ myFunk(5, "hello"); >----------< 0| myFunk(5, "hello"); -[Domain] = 0:6-0:18 - >------------< +[Domain] = 0:0-0:18 + >------------------< 0| myFunk(5, "hello"); diff --git a/data/fixtures/scopes/java/argument.actual.method.iteration.scope b/data/fixtures/scopes/java/argument.actual.method.iteration.scope index bfc40570a6..df1bbc9480 100644 --- a/data/fixtures/scopes/java/argument.actual.method.iteration.scope +++ b/data/fixtures/scopes/java/argument.actual.method.iteration.scope @@ -5,6 +5,6 @@ foo.bar(123, 456); >--------< 0| foo.bar(123, 456); -[Domain] = 0:7-0:17 - >----------< +[Domain] = 0:0-0:17 + >-----------------< 0| foo.bar(123, 456); diff --git a/data/fixtures/scopes/javascript.core/argument.actual.constructor.iteration.scope b/data/fixtures/scopes/javascript.core/argument.actual.constructor.iteration.scope index 4bfcd075e0..f03c77cbb8 100644 --- a/data/fixtures/scopes/javascript.core/argument.actual.constructor.iteration.scope +++ b/data/fixtures/scopes/javascript.core/argument.actual.constructor.iteration.scope @@ -5,6 +5,6 @@ new Aaa(bbb, ccc) >--------< 0| new Aaa(bbb, ccc) -[Domain] = 0:7-0:17 - >----------< +[Domain] = 0:0-0:17 + >-----------------< 0| new Aaa(bbb, ccc) diff --git a/data/fixtures/scopes/javascript.core/argument.actual.iteration.scope b/data/fixtures/scopes/javascript.core/argument.actual.iteration.scope index cba9c192b2..bfb1ec05fd 100644 --- a/data/fixtures/scopes/javascript.core/argument.actual.iteration.scope +++ b/data/fixtures/scopes/javascript.core/argument.actual.iteration.scope @@ -5,6 +5,6 @@ aaa(bbb, ccc); >--------< 0| aaa(bbb, ccc); -[Domain] = 0:3-0:13 - >----------< +[Domain] = 0:0-0:13 + >-------------< 0| aaa(bbb, ccc); diff --git a/data/fixtures/scopes/javascript.core/argument.actual.method.iteration.scope b/data/fixtures/scopes/javascript.core/argument.actual.method.iteration.scope index 9070f913cf..cb8b7e5f1f 100644 --- a/data/fixtures/scopes/javascript.core/argument.actual.method.iteration.scope +++ b/data/fixtures/scopes/javascript.core/argument.actual.method.iteration.scope @@ -5,6 +5,6 @@ aaa.bbb(ccc, ddd); >--------< 0| aaa.bbb(ccc, ddd); -[Domain] = 0:7-0:17 - >----------< +[Domain] = 0:0-0:17 + >-----------------< 0| aaa.bbb(ccc, ddd); diff --git a/data/fixtures/scopes/php/argument.actual.constructor.iteration.scope b/data/fixtures/scopes/php/argument.actual.constructor.iteration.scope index b439199acd..5a0f448362 100644 --- a/data/fixtures/scopes/php/argument.actual.constructor.iteration.scope +++ b/data/fixtures/scopes/php/argument.actual.constructor.iteration.scope @@ -6,6 +6,6 @@ new MyClass(2, "foo") >--------< 1| new MyClass(2, "foo") -[Domain] = 1:11-1:21 - >----------< +[Domain] = 1:0-1:21 + >---------------------< 1| new MyClass(2, "foo") diff --git a/data/fixtures/scopes/php/argument.actual.iteration.scope b/data/fixtures/scopes/php/argument.actual.iteration.scope index 1f9fc8d2d9..6d44592c8d 100644 --- a/data/fixtures/scopes/php/argument.actual.iteration.scope +++ b/data/fixtures/scopes/php/argument.actual.iteration.scope @@ -6,6 +6,6 @@ myFunc(2, "foo") >--------< 1| myFunc(2, "foo") -[Domain] = 1:6-1:16 - >----------< +[Domain] = 1:0-1:16 + >----------------< 1| myFunc(2, "foo") diff --git a/data/fixtures/scopes/php/argument.actual.method.iteration.scope b/data/fixtures/scopes/php/argument.actual.method.iteration.scope index 2bc3abe329..837615380a 100644 --- a/data/fixtures/scopes/php/argument.actual.method.iteration.scope +++ b/data/fixtures/scopes/php/argument.actual.method.iteration.scope @@ -1,11 +1,11 @@ --------< -1| obj.myFunc(2, "foo") +1| obj.myFunc(2, "foo"); -[Domain] = 1:10-1:20 - >----------< -1| obj.myFunc(2, "foo") +[Domain] = 1:0-1:20 + >--------------------< +1| obj.myFunc(2, "foo"); diff --git a/data/fixtures/scopes/python/argument.actual.constructor.iteration.scope b/data/fixtures/scopes/python/argument.actual.constructor.iteration.scope index 6584f9d7f0..72e2facd44 100644 --- a/data/fixtures/scopes/python/argument.actual.constructor.iteration.scope +++ b/data/fixtures/scopes/python/argument.actual.constructor.iteration.scope @@ -5,6 +5,6 @@ Foo(123, 456) >--------< 0| Foo(123, 456) -[Domain] = 0:3-0:13 - >----------< +[Domain] = 0:0-0:13 + >-------------< 0| Foo(123, 456) diff --git a/data/fixtures/scopes/python/argument.actual.iteration.scope b/data/fixtures/scopes/python/argument.actual.iteration.scope index 0b326017ed..0d12c8d3dc 100644 --- a/data/fixtures/scopes/python/argument.actual.iteration.scope +++ b/data/fixtures/scopes/python/argument.actual.iteration.scope @@ -5,6 +5,6 @@ foo("bar", 1) >--------< 0| foo("bar", 1) -[Domain] = 0:3-0:13 - >----------< +[Domain] = 0:0-0:13 + >-------------< 0| foo("bar", 1) diff --git a/data/fixtures/scopes/python/argument.actual.method.iteration.scope b/data/fixtures/scopes/python/argument.actual.method.iteration.scope index b153d7c5b7..36c4cb67d9 100644 --- a/data/fixtures/scopes/python/argument.actual.method.iteration.scope +++ b/data/fixtures/scopes/python/argument.actual.method.iteration.scope @@ -5,6 +5,6 @@ foo.bar(123, 456) >--------< 0| foo.bar(123, 456) -[Domain] = 0:7-0:17 - >----------< +[Domain] = 0:0-0:17 + >-----------------< 0| foo.bar(123, 456) diff --git a/data/fixtures/scopes/r/argument.actual.iteration.scope b/data/fixtures/scopes/r/argument.actual.iteration.scope index a1afb2339d..5ff11cff7d 100644 --- a/data/fixtures/scopes/r/argument.actual.iteration.scope +++ b/data/fixtures/scopes/r/argument.actual.iteration.scope @@ -1,17 +1,10 @@ foo(x, y) - --- -[#1 Range] = 0:4-0:8 +[Range] = 0:4-0:8 >----< 0| foo(x, y) -[#1 Domain] = 0:3-0:9 - >------< -0| foo(x, y) - - -[#2 Range] = -[#2 Domain] = 0:4-0:8 - >----< +[Domain] = 0:0-0:9 + >---------< 0| foo(x, y) diff --git a/data/fixtures/scopes/r/argument.formal.iteration.scope b/data/fixtures/scopes/r/argument.formal.iteration.scope index 7e813687bd..8c056436cb 100644 --- a/data/fixtures/scopes/r/argument.formal.iteration.scope +++ b/data/fixtures/scopes/r/argument.formal.iteration.scope @@ -1,5 +1,4 @@ abc <- function(x, y){} - --- [#1 Range] = 0:16-0:20 @@ -11,7 +10,16 @@ abc <- function(x, y){} 0| abc <- function(x, y){} -[#2 Range] = -[#2 Domain] = 0:16-0:20 +[#2 Range] = 0:16-0:20 + >----< +0| abc <- function(x, y){} + +[#2 Domain] = 0:7-0:23 + >----------------< +0| abc <- function(x, y){} + + +[#3 Range] = +[#3 Domain] = 0:16-0:20 >----< 0| abc <- function(x, y){} diff --git a/data/fixtures/scopes/talon/argument.actual.iteration.scope b/data/fixtures/scopes/talon/argument.actual.iteration.scope index 89bf334e53..a6ebed0860 100644 --- a/data/fixtures/scopes/talon/argument.actual.iteration.scope +++ b/data/fixtures/scopes/talon/argument.actual.iteration.scope @@ -5,6 +5,6 @@ command: user.do_something(123, 456) >--------< 0| command: user.do_something(123, 456) -[Domain] = 0:26-0:36 - >----------< +[Domain] = 0:9-0:36 + >---------------------------< 0| command: user.do_something(123, 456) diff --git a/data/fixtures/scopes/talon/argument.actual.iteration2.scope b/data/fixtures/scopes/talon/argument.actual.iteration2.scope index 3ff40d44d3..7d5a20fff1 100644 --- a/data/fixtures/scopes/talon/argument.actual.iteration2.scope +++ b/data/fixtures/scopes/talon/argument.actual.iteration2.scope @@ -1,7 +1,10 @@ command: key(enter) --- -[Range] = -[Domain] = 0:13-0:18 +[Range] = 0:13-0:18 >-----< 0| command: key(enter) + +[Domain] = 0:9-0:19 + >----------< +0| command: key(enter) diff --git a/queries/c.scm b/queries/c.scm index b9afe76b22..ddbacf5f4c 100644 --- a/queries/c.scm +++ b/queries/c.scm @@ -241,9 +241,11 @@ ) ) @argumentOrParameter.iteration.domain -(argument_list - "(" @argumentOrParameter.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf +(_ + (argument_list + "(" @argumentOrParameter.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf + ) ) @argumentOrParameter.iteration.domain operator: [ diff --git a/queries/csharp.scm b/queries/csharp.scm index ef78caf501..eaf8b65345 100644 --- a/queries/csharp.scm +++ b/queries/csharp.scm @@ -274,8 +274,10 @@ (_ (parameter_list + . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf + . ) ) @argumentOrParameter.iteration.domain @@ -284,9 +286,13 @@ ")" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf ) -(argument_list - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf +(_ + (argument_list + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) ) @argumentOrParameter.iteration.domain ;; Treat interior of all bodies as iteration scopes for `name`, eg diff --git a/queries/css.scm b/queries/css.scm index e0ac6d2696..c7598addb2 100644 --- a/queries/css.scm +++ b/queries/css.scm @@ -88,11 +88,13 @@ (#insertion-delimiter! @argumentOrParameter ", ") ) -(arguments - . - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf - . +(_ + (arguments + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) ) @argumentOrParameter.iteration.domain ;; Entire file diff --git a/queries/go.scm b/queries/go.scm index 598ce90fa4..babbafdd6b 100644 --- a/queries/go.scm +++ b/queries/go.scm @@ -364,13 +364,22 @@ (#single-or-multi-line-delimiter! @argumentOrParameter @_dummy ", " ",\n") ) -(parameter_list - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf +(_ + (parameter_list + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) ) @argumentOrParameter.iteration.domain -(argument_list - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf + +(_ + (argument_list + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) ) @argumentOrParameter.iteration.domain operator: [ diff --git a/queries/java.scm b/queries/java.scm index f5c45453d1..b355fec4c7 100644 --- a/queries/java.scm +++ b/queries/java.scm @@ -531,15 +531,21 @@ (_ parameters: (_ + . "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf + . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain -(argument_list - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf +(_ + (argument_list + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) ) @argumentOrParameter.iteration.domain ;;!! try (PrintWriter writer = create()) { } diff --git a/queries/javascript.core.scm b/queries/javascript.core.scm index 4fdbcf1294..2d016e475e 100644 --- a/queries/javascript.core.scm +++ b/queries/javascript.core.scm @@ -794,9 +794,11 @@ ")" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf ) -(arguments - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf +(_ + (arguments + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + ) ) @argumentOrParameter.iteration.domain operator: [ diff --git a/queries/php.scm b/queries/php.scm index 8c0e514227..4ce024c7be 100644 --- a/queries/php.scm +++ b/queries/php.scm @@ -165,16 +165,40 @@ (_ (formal_parameters + . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf + . ) ) @argumentOrParameter.iteration.domain -(arguments - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf +;;!! foo.bar(a, b); +;;! ^^^^ +(binary_expression + (function_call_expression + (arguments + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) + ) ) @argumentOrParameter.iteration.domain +;;!! foo(a, b); +;;! ^^^^ +( + (_ + (arguments + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) + ) @argumentOrParameter.iteration.domain + (#not-parent-type? @argumentOrParameter.iteration.domain binary_expression) +) + ;;!! ['num' => 1]; ;;! ^^^^^ ;;! ^ @@ -221,8 +245,10 @@ ) @_.domain (formal_parameters + . "(" @type.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf ")" @type.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf + . ) @_.domain ;;!! (string) $str; diff --git a/queries/python.scm b/queries/python.scm index 153ec429bb..1d3eb27a89 100644 --- a/queries/python.scm +++ b/queries/python.scm @@ -719,9 +719,11 @@ (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain -(argument_list - "(" @argumentOrParameter.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf +(_ + (argument_list + "(" @argumentOrParameter.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf + ) ) @argumentOrParameter.iteration.domain @name.iteration.domain @value.iteration.domain (call diff --git a/queries/r.scm b/queries/r.scm index 529b144b90..281f37c0f6 100644 --- a/queries/r.scm +++ b/queries/r.scm @@ -46,8 +46,8 @@ (function_definition) @anonymousFunction ;; argument.actual -;;!! foo("bar") -;;! ^^^^^ +;;!! foo(a, b") +;;! ^ ^ ( (arguments ( @@ -67,7 +67,7 @@ ;; argument.formal ;;!! function(a, b){} -;;! ^^^^ +;;! ^ ^ ( (parameters ( @@ -85,65 +85,57 @@ (#single-or-multi-line-delimiter! @argumentOrParameter @_dummy ", " ",\n") ) -[ - ;; argument.actual - ;;!! foo(a, b) - ;;! ^^^^ - (call - arguments: (arguments - open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf - close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - ) @_dummy @argumentOrParameter.iteration.domain - (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") - ) +;; argumentList.actual +;;!! foo(a, b) +;;! ^^^^ +(call + (arguments + . + open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf + close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf + . + ) @_dummy + (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") +) @argumentList.domain @argumentOrParameter.iteration.domain - ;; argument.formal - ;;!! function(a, b){} - ;;! ^^^^ +;; argumentList.formal +;;!! foo <- function(a, b){ } +;;! ^^^^ +(binary_operator (function_definition - parameters: (parameters - open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf - close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - ) @_dummy - (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") + (parameters + . + open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf + close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf + . + ) @_dummy + (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) -] @argumentList.domain +) @argumentList.domain @argumentOrParameter.iteration.domain -(arguments - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf +;; argumentList.formal +;;!! function(a, b){} +;;! ^^^^ +( + (function_definition + (parameters + . + open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf + close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf + . + ) @_dummy + (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") + ) @argumentList.domain @argumentOrParameter.iteration.domain + (#not-parent-type? @argumentList.domain binary_operator) ) (parameters + . "(" @name.iteration.start.endOf @value.iteration.start.endOf @type.iteration.start.endOf ")" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf + . ) -;;!! function(a, b){ } -;;! ^^^^ -;; For domain, have to handle either named or unnamed function using -;; alternation, to ensure that the function name is part of the domain if it -;; exists -[ - (binary_operator - (function_definition - parameters: (parameters - open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf - close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - ) @_dummy - (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") - ) - ) @argumentOrParameter.iteration.domain - (function_definition - parameters: (parameters - open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf - close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - ) @_dummy - (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") - ) -] @argumentList.domain - - ;; Function calls ;;!! foo() ;;! ^^^^^ @@ -170,7 +162,10 @@ ;;! ^^^^^ ;;! ----- lhs: (identifier) @name @value.leading.endOf - operator: ["<-" "="] + operator: [ + "<-" + "=" + ] ;;!! hello <- "world" ;;! ^^^^^^^ ;;! ----- diff --git a/queries/talon.scm b/queries/talon.scm index ecf22ac523..d95ef1c319 100644 --- a/queries/talon.scm +++ b/queries/talon.scm @@ -176,16 +176,20 @@ (#insertion-delimiter! @argumentOrParameter ", ") ) -(argument_list - . - "(" @argumentOrParameter.iteration.start.endOf - ")" @argumentOrParameter.iteration.end.startOf - . +(_ + (argument_list + . + "(" @argumentOrParameter.iteration.start.endOf + ")" @argumentOrParameter.iteration.end.startOf + . + ) ) @argumentOrParameter.iteration.domain ;;!! key(enter) ;;! ^^^^^ -arguments: (implicit_string) @argumentOrParameter.iteration +(_ + arguments: (implicit_string) @argumentOrParameter.iteration +) @argumentOrParameter.iteration.domain ;;!! # foo ;;! ^^^^^ From 230212a1746fa15ad144ee8fa418d94857718b80 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 29 May 2025 09:39:12 +0200 Subject: [PATCH 2/5] update tests --- .../languages/typescript/takeEveryArgRam.yml | 8 ++--- .../scopes/r/argument.formal.iteration.scope | 19 ++---------- .../scopes/r/argumentList.formal.scope | 20 +++---------- .../scopes/r/argumentList.formal2.scope | 20 +++---------- .../scopes/r/argumentList.formal3.scope | 29 +++---------------- 5 files changed, 18 insertions(+), 78 deletions(-) diff --git a/data/fixtures/recorded/languages/typescript/takeEveryArgRam.yml b/data/fixtures/recorded/languages/typescript/takeEveryArgRam.yml index 6667ef8f2f..534f9b2c24 100644 --- a/data/fixtures/recorded/languages/typescript/takeEveryArgRam.yml +++ b/data/fixtures/recorded/languages/typescript/takeEveryArgRam.yml @@ -23,7 +23,7 @@ initialState: finalState: documentContents: foo(bar(baz, bongo), bazman) selections: - - anchor: {line: 0, character: 4} - active: {line: 0, character: 19} - - anchor: {line: 0, character: 21} - active: {line: 0, character: 27} + - anchor: {line: 0, character: 8} + active: {line: 0, character: 11} + - anchor: {line: 0, character: 13} + active: {line: 0, character: 18} diff --git a/data/fixtures/scopes/r/argument.formal.iteration.scope b/data/fixtures/scopes/r/argument.formal.iteration.scope index 8c056436cb..8a24f38440 100644 --- a/data/fixtures/scopes/r/argument.formal.iteration.scope +++ b/data/fixtures/scopes/r/argument.formal.iteration.scope @@ -1,25 +1,10 @@ abc <- function(x, y){} --- -[#1 Range] = 0:16-0:20 +[Range] = 0:16-0:20 >----< 0| abc <- function(x, y){} -[#1 Domain] = 0:0-0:23 +[Domain] = 0:0-0:23 >-----------------------< 0| abc <- function(x, y){} - - -[#2 Range] = 0:16-0:20 - >----< -0| abc <- function(x, y){} - -[#2 Domain] = 0:7-0:23 - >----------------< -0| abc <- function(x, y){} - - -[#3 Range] = -[#3 Domain] = 0:16-0:20 - >----< -0| abc <- function(x, y){} diff --git a/data/fixtures/scopes/r/argumentList.formal.scope b/data/fixtures/scopes/r/argumentList.formal.scope index 54b7297520..a55b49dcf5 100644 --- a/data/fixtures/scopes/r/argumentList.formal.scope +++ b/data/fixtures/scopes/r/argumentList.formal.scope @@ -1,25 +1,13 @@ abc <- function(x, y){ } --- -[#1 Content] = -[#1 Removal] = 0:16-0:20 +[Content] = +[Removal] = 0:16-0:20 >----< 0| abc <- function(x, y){ } -[#1 Domain] = 0:0-0:24 +[Domain] = 0:0-0:24 >------------------------< 0| abc <- function(x, y){ } -[#1 Insertion delimiter] = ", " - - -[#2 Content] = -[#2 Removal] = 0:16-0:20 - >----< -0| abc <- function(x, y){ } - -[#2 Domain] = 0:7-0:24 - >-----------------< -0| abc <- function(x, y){ } - -[#2 Insertion delimiter] = ", " +[Insertion delimiter] = ", " diff --git a/data/fixtures/scopes/r/argumentList.formal2.scope b/data/fixtures/scopes/r/argumentList.formal2.scope index ec4af72e55..c0d8725dee 100644 --- a/data/fixtures/scopes/r/argumentList.formal2.scope +++ b/data/fixtures/scopes/r/argumentList.formal2.scope @@ -1,25 +1,13 @@ abc <- function(){ } --- -[#1 Content] = -[#1 Removal] = 0:16-0:16 +[Content] = +[Removal] = 0:16-0:16 >< 0| abc <- function(){ } -[#1 Domain] = 0:0-0:20 +[Domain] = 0:0-0:20 >--------------------< 0| abc <- function(){ } -[#1 Insertion delimiter] = "" - - -[#2 Content] = -[#2 Removal] = 0:16-0:16 - >< -0| abc <- function(){ } - -[#2 Domain] = 0:7-0:20 - >-------------< -0| abc <- function(){ } - -[#2 Insertion delimiter] = "" +[Insertion delimiter] = "" diff --git a/data/fixtures/scopes/r/argumentList.formal3.scope b/data/fixtures/scopes/r/argumentList.formal3.scope index 23f68f7633..2d5f7e7f3b 100644 --- a/data/fixtures/scopes/r/argumentList.formal3.scope +++ b/data/fixtures/scopes/r/argumentList.formal3.scope @@ -5,8 +5,8 @@ abc <- function( } --- -[#1 Content] = -[#1 Removal] = 0:16-3:0 +[Content] = +[Removal] = 0:16-3:0 > 0| abc <- function( 1| x, @@ -14,7 +14,7 @@ abc <- function( 3| ){ < -[#1 Domain] = 0:0-4:1 +[Domain] = 0:0-4:1 >---------------- 0| abc <- function( 1| x, @@ -23,25 +23,4 @@ abc <- function( 4| } -< -[#1 Insertion delimiter] = ",\n" - - -[#2 Content] = -[#2 Removal] = 0:16-3:0 - > -0| abc <- function( -1| x, -2| y -3| ){ - < - -[#2 Domain] = 0:7-4:1 - >--------- -0| abc <- function( -1| x, -2| y -3| ){ -4| } - -< - -[#2 Insertion delimiter] = ",\n" +[Insertion delimiter] = ",\n" From 2a3f59432cc217672a29f8690bfd6765239c8ae0 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 29 May 2025 09:43:33 +0200 Subject: [PATCH 3/5] Cleanup --- queries/javascript.core.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/queries/javascript.core.scm b/queries/javascript.core.scm index 2d016e475e..0f118ca7a9 100644 --- a/queries/javascript.core.scm +++ b/queries/javascript.core.scm @@ -749,8 +749,10 @@ ) (statement_block + . "{" @statement.iteration.start.endOf "}" @statement.iteration.end.startOf + . ) ;;!! foo(name) {} @@ -783,21 +785,27 @@ (_ (formal_parameters + . "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf + . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain (formal_parameters + . "(" @name.iteration.start.endOf @value.iteration.start.endOf @type.iteration.start.endOf ")" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf + . ) (_ (arguments + . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf + . ) ) @argumentOrParameter.iteration.domain From 3bd8226c406c90b019295704ba736987d440b354 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 29 May 2025 09:56:10 +0200 Subject: [PATCH 4/5] Restored name and value iteration --- queries/python.scm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/queries/python.scm b/queries/python.scm index 1d3eb27a89..f4fb6ba8c4 100644 --- a/queries/python.scm +++ b/queries/python.scm @@ -688,8 +688,10 @@ ;;!! ^^^^^^^^^^^^^^^^^^^^^^^^^^ (call (generator_expression + . "(" @argumentOrParameter.start.endOf ")" @argumentOrParameter.end.startOf + . ) ) @@ -713,23 +715,29 @@ ;;! ^^^^ (_ (parameters + . "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf + . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain (_ (argument_list + . "(" @argumentOrParameter.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf - ) -) @argumentOrParameter.iteration.domain @name.iteration.domain @value.iteration.domain + . + ) @name.iteration.domain @value.iteration.domain +) @argumentOrParameter.iteration.domain (call (generator_expression + . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf + . ) ) @argumentOrParameter.iteration.domain From 6c0ae28d17d74edc29066cb3f2f9a85876f05918 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 29 May 2025 11:00:21 +0200 Subject: [PATCH 5/5] Removed unnecessary dots --- queries/csharp.scm | 6 ------ queries/css.scm | 4 ---- queries/go.scm | 4 ---- queries/java.scm | 4 ---- queries/javascript.core.scm | 8 -------- queries/php.scm | 8 -------- queries/python.scm | 8 -------- queries/r.scm | 8 -------- queries/talon.scm | 2 -- 9 files changed, 52 deletions(-) diff --git a/queries/csharp.scm b/queries/csharp.scm index eaf8b65345..7c8253c993 100644 --- a/queries/csharp.scm +++ b/queries/csharp.scm @@ -274,10 +274,8 @@ (_ (parameter_list - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain @@ -288,10 +286,8 @@ (_ (argument_list - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain @@ -300,10 +296,8 @@ ;;! *** (_ body: (_ - . "{" @name.iteration.start.endOf @value.iteration.start.endOf @type.iteration.start.endOf "}" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf - . ) ) diff --git a/queries/css.scm b/queries/css.scm index c7598addb2..062889c917 100644 --- a/queries/css.scm +++ b/queries/css.scm @@ -90,10 +90,8 @@ (_ (arguments - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain @@ -109,10 +107,8 @@ ;; { } (block - . "{" @name.iteration.start.endOf @collectionKey.iteration.start.endOf @value.iteration.start.endOf "}" @name.iteration.end.startOf @collectionKey.iteration.end.startOf @value.iteration.end.startOf - . ) @map ;;!! width: 100px; diff --git a/queries/go.scm b/queries/go.scm index babbafdd6b..455f3e404b 100644 --- a/queries/go.scm +++ b/queries/go.scm @@ -366,19 +366,15 @@ (_ (parameter_list - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain (_ (argument_list - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain diff --git a/queries/java.scm b/queries/java.scm index b355fec4c7..5fae385b9d 100644 --- a/queries/java.scm +++ b/queries/java.scm @@ -531,20 +531,16 @@ (_ parameters: (_ - . "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain (_ (argument_list - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain diff --git a/queries/javascript.core.scm b/queries/javascript.core.scm index 0f118ca7a9..2d016e475e 100644 --- a/queries/javascript.core.scm +++ b/queries/javascript.core.scm @@ -749,10 +749,8 @@ ) (statement_block - . "{" @statement.iteration.start.endOf "}" @statement.iteration.end.startOf - . ) ;;!! foo(name) {} @@ -785,27 +783,21 @@ (_ (formal_parameters - . "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain (formal_parameters - . "(" @name.iteration.start.endOf @value.iteration.start.endOf @type.iteration.start.endOf ")" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf - . ) (_ (arguments - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain diff --git a/queries/php.scm b/queries/php.scm index 4ce024c7be..3ef6552914 100644 --- a/queries/php.scm +++ b/queries/php.scm @@ -165,10 +165,8 @@ (_ (formal_parameters - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain @@ -177,10 +175,8 @@ (binary_expression (function_call_expression (arguments - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) ) @argumentOrParameter.iteration.domain @@ -190,10 +186,8 @@ ( (_ (arguments - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain (#not-parent-type? @argumentOrParameter.iteration.domain binary_expression) @@ -245,10 +239,8 @@ ) @_.domain (formal_parameters - . "(" @type.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf ")" @type.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf - . ) @_.domain ;;!! (string) $str; diff --git a/queries/python.scm b/queries/python.scm index f4fb6ba8c4..3783d2d2a9 100644 --- a/queries/python.scm +++ b/queries/python.scm @@ -688,10 +688,8 @@ ;;!! ^^^^^^^^^^^^^^^^^^^^^^^^^^ (call (generator_expression - . "(" @argumentOrParameter.start.endOf ")" @argumentOrParameter.end.startOf - . ) ) @@ -715,29 +713,23 @@ ;;! ^^^^ (_ (parameters - . "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain (_ (argument_list - . "(" @argumentOrParameter.iteration.start.endOf @name.iteration.start.endOf @value.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf @name.iteration.end.startOf @value.iteration.end.startOf - . ) @name.iteration.domain @value.iteration.domain ) @argumentOrParameter.iteration.domain (call (generator_expression - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain diff --git a/queries/r.scm b/queries/r.scm index 281f37c0f6..8b1faaabfc 100644 --- a/queries/r.scm +++ b/queries/r.scm @@ -90,10 +90,8 @@ ;;! ^^^^ (call (arguments - . open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain @@ -104,10 +102,8 @@ (binary_operator (function_definition (parameters - . open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @@ -119,10 +115,8 @@ ( (function_definition (parameters - . open: "(" @argumentList.start.endOf @argumentOrParameter.iteration.start.endOf close: ")" @argumentList.end.startOf @argumentOrParameter.iteration.end.startOf - . ) @_dummy (#empty-single-multi-delimiter! @argumentList.start.endOf @_dummy "" ", " ",\n") ) @argumentList.domain @argumentOrParameter.iteration.domain @@ -130,10 +124,8 @@ ) (parameters - . "(" @name.iteration.start.endOf @value.iteration.start.endOf @type.iteration.start.endOf ")" @name.iteration.end.startOf @value.iteration.end.startOf @type.iteration.end.startOf - . ) ;; Function calls diff --git a/queries/talon.scm b/queries/talon.scm index d95ef1c319..524fb64435 100644 --- a/queries/talon.scm +++ b/queries/talon.scm @@ -178,10 +178,8 @@ (_ (argument_list - . "(" @argumentOrParameter.iteration.start.endOf ")" @argumentOrParameter.iteration.end.startOf - . ) ) @argumentOrParameter.iteration.domain