From 05587f1877584b1ae3384dc2c5bf78e237b0c425 Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Mon, 5 Aug 2024 16:56:07 +0200 Subject: [PATCH 1/7] added textobjects for Solidity --- queries/solidity/textobjects.scm | 176 +++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 queries/solidity/textobjects.scm diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm new file mode 100644 index 00000000..1306c11e --- /dev/null +++ b/queries/solidity/textobjects.scm @@ -0,0 +1,176 @@ +; Solidity textobjects + +; Functions +(function_definition + body: (block)) @function.outer + +(function_definition + body: (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "function.inner" @_start @_end))) + +; Constructors +(constructor_definition + body: (block)) @function.outer + +(constructor_definition + body: (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "function.inner" @_start @_end))) + +; Modifiers +(modifier_definition + body: (block)) @function.outer + +(modifier_definition + body: (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "function.inner" @_start @_end))) + +; Contracts +(contract_declaration + body: (contract_body) @class.inner) @class.outer + +; Interfaces +(interface_declaration + body: (contract_body) @class.inner) @class.outer + +; Libraries +(library_declaration + body: (contract_body) @class.inner) @class.outer + +; Structs +(struct_declaration + body: (struct_body) @class.inner) @class.outer + +; Loops +(for_statement + body: (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "loop.inner" @_start @_end))) @loop.outer + +(while_statement + body: (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "loop.inner" @_start @_end))) @loop.outer + +; Conditionals +(if_statement + consequence: (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "conditional.inner" @_start @_end))) @conditional.outer + +(if_statement + alternative: (else_clause + (block + . + "{" + . + (_) @_start @_end + (_)? @_end + . + "}" + (#make-range! "conditional.inner" @_start @_end)))) @conditional.outer + +(if_statement) @conditional.outer + +; Function calls +(call_expression) @call.outer + +(call_expression + arguments: (call_arguments + . + "(" + . + (_) @_start + (_)? @_end + . + ")" + (#make-range! "call.inner" @_start @_end))) + +; Blocks +(_ + (block) @block.inner) @block.outer + +; Parameters +(parameter_list + "," @_start + . + (_) @parameter.inner + (#make-range! "parameter.outer" @_start @parameter.inner)) + +(parameter_list + . + (_) @parameter.inner + . + ","? @_end + (#make-range! "parameter.outer" @parameter.inner @_end)) + +; Arguments +(call_arguments + "," @_start + . + (_) @parameter.inner + (#make-range! "parameter.outer" @_start @parameter.inner)) + +(call_arguments + . + (_) @parameter.inner + . + ","? @_end + (#make-range! "parameter.outer" @parameter.inner @_end)) + +; Comments +(comment) @comment.outer + +; Variable declarations +(variable_declaration + name: (_) @assignment.lhs + value: (_) @assignment.inner @assignment.rhs) @assignment.outer + +(variable_declaration + name: (_) @assignment.inner) + +; State variable declarations +(state_variable_declaration + name: (_) @assignment.lhs + value: (_) @assignment.inner @assignment.rhs) @assignment.outer + +(state_variable_declaration + name: (_) @assignment.inner) From bd2becefb3f82ee4497727fad031b938c21d28fe Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Mon, 5 Aug 2024 23:14:31 +0200 Subject: [PATCH 2/7] adjustment after running format queries script --- queries/solidity/textobjects.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm index 1306c11e..76757e60 100644 --- a/queries/solidity/textobjects.scm +++ b/queries/solidity/textobjects.scm @@ -1,5 +1,4 @@ ; Solidity textobjects - ; Functions (function_definition body: (block)) @function.outer From e5a13a59af5c7eb4e8c0599c7f0abc5b634754fa Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Mon, 5 Aug 2024 23:29:35 +0200 Subject: [PATCH 3/7] replaced 'block' nodes --- queries/solidity/textobjects.scm | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm index 76757e60..2d11b24b 100644 --- a/queries/solidity/textobjects.scm +++ b/queries/solidity/textobjects.scm @@ -1,10 +1,10 @@ ; Solidity textobjects ; Functions (function_definition - body: (block)) @function.outer + body: (_)) @function.outer (function_definition - body: (block + body: (_ . "{" . @@ -16,10 +16,10 @@ ; Constructors (constructor_definition - body: (block)) @function.outer + body: (_)) @function.outer (constructor_definition - body: (block + body: (_ . "{" . @@ -31,10 +31,10 @@ ; Modifiers (modifier_definition - body: (block)) @function.outer + body: (_)) @function.outer (modifier_definition - body: (block + body: (_ . "{" . @@ -46,23 +46,23 @@ ; Contracts (contract_declaration - body: (contract_body) @class.inner) @class.outer + body: (_) @class.inner) @class.outer ; Interfaces (interface_declaration - body: (contract_body) @class.inner) @class.outer + body: (_) @class.inner) @class.outer ; Libraries (library_declaration - body: (contract_body) @class.inner) @class.outer + body: (_) @class.inner) @class.outer ; Structs (struct_declaration - body: (struct_body) @class.inner) @class.outer + body: (_) @class.inner) @class.outer ; Loops (for_statement - body: (block + body: (_ . "{" . @@ -73,7 +73,7 @@ (#make-range! "loop.inner" @_start @_end))) @loop.outer (while_statement - body: (block + body: (_ . "{" . @@ -85,7 +85,7 @@ ; Conditionals (if_statement - consequence: (block + consequence: (_ . "{" . @@ -97,7 +97,7 @@ (if_statement alternative: (else_clause - (block + (_ . "{" . @@ -125,7 +125,7 @@ ; Blocks (_ - (block) @block.inner) @block.outer + (_) @block.inner) @block.outer ; Parameters (parameter_list From 33ae36df9065f67eb1de71e65ba39361c8691607 Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Tue, 6 Aug 2024 09:57:54 +0200 Subject: [PATCH 4/7] adapted to grammar.js parser --- queries/solidity/textobjects.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm index 2d11b24b..bbba99c1 100644 --- a/queries/solidity/textobjects.scm +++ b/queries/solidity/textobjects.scm @@ -129,7 +129,7 @@ ; Parameters (parameter_list - "," @_start + ","? @_start . (_) @parameter.inner (#make-range! "parameter.outer" @_start @parameter.inner)) @@ -143,7 +143,7 @@ ; Arguments (call_arguments - "," @_start + ","? @_start . (_) @parameter.inner (#make-range! "parameter.outer" @_start @parameter.inner)) From 1e35861de4d7a692333763e36a6f9f69c771e03f Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Tue, 6 Aug 2024 10:45:09 +0200 Subject: [PATCH 5/7] adjusted conditionals grammar --- queries/solidity/textobjects.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm index bbba99c1..bfb2a206 100644 --- a/queries/solidity/textobjects.scm +++ b/queries/solidity/textobjects.scm @@ -85,24 +85,24 @@ ; Conditionals (if_statement - consequence: (_ + consequence: (statement . "{" . (_) @_start @_end - (_)? @_end + (_) @_end . "}" (#make-range! "conditional.inner" @_start @_end))) @conditional.outer (if_statement alternative: (else_clause - (_ + (statement . "{" . (_) @_start @_end - (_)? @_end + (_) @_end . "}" (#make-range! "conditional.inner" @_start @_end)))) @conditional.outer From 9bfd7ba8f7bd18429569c0783ff2674efc2b64be Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Tue, 6 Aug 2024 10:56:57 +0200 Subject: [PATCH 6/7] removed `consequence` --- queries/solidity/textobjects.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm index bfb2a206..fb7ccb4f 100644 --- a/queries/solidity/textobjects.scm +++ b/queries/solidity/textobjects.scm @@ -85,7 +85,7 @@ ; Conditionals (if_statement - consequence: (statement + (statement . "{" . @@ -96,7 +96,7 @@ (#make-range! "conditional.inner" @_start @_end))) @conditional.outer (if_statement - alternative: (else_clause + (else_clause (statement . "{" From d1ed7ac8c2c098a1a384fc5feec7b7069d410f7a Mon Sep 17 00:00:00 2001 From: akamaitrue Date: Tue, 6 Aug 2024 12:17:25 +0200 Subject: [PATCH 7/7] updated patterns --- queries/solidity/textobjects.scm | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/queries/solidity/textobjects.scm b/queries/solidity/textobjects.scm index fb7ccb4f..7074815b 100644 --- a/queries/solidity/textobjects.scm +++ b/queries/solidity/textobjects.scm @@ -85,35 +85,14 @@ ; Conditionals (if_statement - (statement - . - "{" - . - (_) @_start @_end - (_) @_end - . - "}" - (#make-range! "conditional.inner" @_start @_end))) @conditional.outer - -(if_statement - (else_clause - (statement - . - "{" - . - (_) @_start @_end - (_) @_end - . - "}" - (#make-range! "conditional.inner" @_start @_end)))) @conditional.outer - -(if_statement) @conditional.outer + consequence: (statement_block) @conditional.inner + alternative: (statement_block)? @conditional.inner) @conditional.outer ; Function calls (call_expression) @call.outer (call_expression - arguments: (call_arguments + arguments: (_ . "(" . @@ -124,7 +103,7 @@ (#make-range! "call.inner" @_start @_end))) ; Blocks -(_ +(block (_) @block.inner) @block.outer ; Parameters