From 251ddbee5b26d0c5d312a1762a8076e04b7703b8 Mon Sep 17 00:00:00 2001 From: brandonspark Date: Wed, 7 May 2025 14:13:21 -0700 Subject: [PATCH 1/5] change dart submodule to rela one --- .gitmodules | 4 ++-- lang/semgrep-grammars/src/tree-sitter-dart | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 160000 lang/semgrep-grammars/src/tree-sitter-dart diff --git a/.gitmodules b/.gitmodules index 98c069f..a4d0d25 100644 --- a/.gitmodules +++ b/.gitmodules @@ -78,7 +78,7 @@ url = https://github.com/alex-pinkus/tree-sitter-swift.git [submodule "lang/semgrep-grammars/src/tree-sitter-dart"] path = lang/semgrep-grammars/src/tree-sitter-dart - url = https://github.com/returntocorp/tree-sitter-dart.git + url = https://github.com/UserNobody14/tree-sitter-dart.git [submodule "lang/semgrep-grammars/src/tree-sitter-julia"] path = lang/semgrep-grammars/src/tree-sitter-julia url = https://github.com/tree-sitter/tree-sitter-julia @@ -135,4 +135,4 @@ url = https://github.com/camdencheek/tree-sitter-go-mod.git [submodule "lang/semgrep-grammars/src/tree-sitter-requirements"] path = lang/semgrep-grammars/src/tree-sitter-requirements - url = git@github.com:tree-sitter-grammars/tree-sitter-requirements.git \ No newline at end of file + url = git@github.com:tree-sitter-grammars/tree-sitter-requirements.git diff --git a/lang/semgrep-grammars/src/tree-sitter-dart b/lang/semgrep-grammars/src/tree-sitter-dart deleted file mode 160000 index 5549697..0000000 --- a/lang/semgrep-grammars/src/tree-sitter-dart +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5549697ffeef681d57ba1ce72bed97961221f284 From 0fb256eaad93e218bae5427049eb753d4f89f220 Mon Sep 17 00:00:00 2001 From: brandonspark Date: Wed, 7 May 2025 14:21:07 -0700 Subject: [PATCH 2/5] change dart to real tree-sitter-dart --- .gitmodules | 9 ++++++--- lang/semgrep-grammars/src/semgrep-dart/grammar.js | 2 +- lang/semgrep-grammars/src/tree-sitter-dart | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) create mode 160000 lang/semgrep-grammars/src/tree-sitter-dart diff --git a/.gitmodules b/.gitmodules index a4d0d25..55b2c33 100644 --- a/.gitmodules +++ b/.gitmodules @@ -76,9 +76,6 @@ [submodule "lang/semgrep-grammars/src/tree-sitter-swift"] path = lang/semgrep-grammars/src/tree-sitter-swift url = https://github.com/alex-pinkus/tree-sitter-swift.git -[submodule "lang/semgrep-grammars/src/tree-sitter-dart"] - path = lang/semgrep-grammars/src/tree-sitter-dart - url = https://github.com/UserNobody14/tree-sitter-dart.git [submodule "lang/semgrep-grammars/src/tree-sitter-julia"] path = lang/semgrep-grammars/src/tree-sitter-julia url = https://github.com/tree-sitter/tree-sitter-julia @@ -136,3 +133,9 @@ [submodule "lang/semgrep-grammars/src/tree-sitter-requirements"] path = lang/semgrep-grammars/src/tree-sitter-requirements url = git@github.com:tree-sitter-grammars/tree-sitter-requirements.git +[submodule "lang/semgrep-grammars/src/--force"] + path = lang/semgrep-grammars/src/--force + url = https://github.com/UserNobody14/tree-sitter-dart.git +[submodule "lang/semgrep-grammars/src/tree-sitter-dart"] + path = lang/semgrep-grammars/src/tree-sitter-dart + url = https://github.com/UserNobody14/tree-sitter-dart.git diff --git a/lang/semgrep-grammars/src/semgrep-dart/grammar.js b/lang/semgrep-grammars/src/semgrep-dart/grammar.js index da6cfb9..2250333 100644 --- a/lang/semgrep-grammars/src/semgrep-dart/grammar.js +++ b/lang/semgrep-grammars/src/semgrep-dart/grammar.js @@ -25,7 +25,7 @@ module.exports = grammar(base_grammar, { program: ($, previous) => choice(previous, $.semgrep_expression), - semgrep_ellipsis: $ => '...', + semgrep_ellipsis: $ => prec.left(1, '...'), semgrep_named_ellipsis: $ => /\$\.\.\.[A-Z_][A-Z_0-9]*/, deep_ellipsis: $ => seq( '<...', $._expression, '...>' diff --git a/lang/semgrep-grammars/src/tree-sitter-dart b/lang/semgrep-grammars/src/tree-sitter-dart new file mode 160000 index 0000000..80e23c0 --- /dev/null +++ b/lang/semgrep-grammars/src/tree-sitter-dart @@ -0,0 +1 @@ +Subproject commit 80e23c07b64494f7e21090bb3450223ef0b192f4 From bc3417a1f601604ccc5c89a3db452726639f821c Mon Sep 17 00:00:00 2001 From: brandonspark Date: Wed, 7 May 2025 16:45:56 -0700 Subject: [PATCH 3/5] fix gitmodules --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 55b2c33..c6388f4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -133,9 +133,6 @@ [submodule "lang/semgrep-grammars/src/tree-sitter-requirements"] path = lang/semgrep-grammars/src/tree-sitter-requirements url = git@github.com:tree-sitter-grammars/tree-sitter-requirements.git -[submodule "lang/semgrep-grammars/src/--force"] - path = lang/semgrep-grammars/src/--force - url = https://github.com/UserNobody14/tree-sitter-dart.git [submodule "lang/semgrep-grammars/src/tree-sitter-dart"] path = lang/semgrep-grammars/src/tree-sitter-dart url = https://github.com/UserNobody14/tree-sitter-dart.git From 8a2089b7884478a0c74ae86f8149284a4eb8f917 Mon Sep 17 00:00:00 2001 From: brandonspark Date: Wed, 14 May 2025 13:24:12 -0700 Subject: [PATCH 4/5] add tests and allow metavar stmt --- lang/dart/test/ok/anonymous_metavar.dart | 1 + lang/dart/test/ok/metavariable_stmt.dart | 1 + lang/semgrep-grammars/src/semgrep-dart/grammar.js | 9 ++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 lang/dart/test/ok/anonymous_metavar.dart create mode 100644 lang/dart/test/ok/metavariable_stmt.dart diff --git a/lang/dart/test/ok/anonymous_metavar.dart b/lang/dart/test/ok/anonymous_metavar.dart new file mode 100644 index 0000000..93f3651 --- /dev/null +++ b/lang/dart/test/ok/anonymous_metavar.dart @@ -0,0 +1 @@ +__SEMGREP_EXPRESSION $_ \ No newline at end of file diff --git a/lang/dart/test/ok/metavariable_stmt.dart b/lang/dart/test/ok/metavariable_stmt.dart new file mode 100644 index 0000000..9c086d6 --- /dev/null +++ b/lang/dart/test/ok/metavariable_stmt.dart @@ -0,0 +1 @@ +__SEMGREP_EXPRESSION $X; \ No newline at end of file diff --git a/lang/semgrep-grammars/src/semgrep-dart/grammar.js b/lang/semgrep-grammars/src/semgrep-dart/grammar.js index 2250333..8a05119 100644 --- a/lang/semgrep-grammars/src/semgrep-dart/grammar.js +++ b/lang/semgrep-grammars/src/semgrep-dart/grammar.js @@ -31,8 +31,15 @@ module.exports = grammar(base_grammar, { '<...', $._expression, '...>' ), + semgrep_metavariable: $ => /\$[A-Z_][A-Z_0-9]*/, + // Alternate "entry point". Allows parsing a standalone expression. - semgrep_expression: ($) => seq("__SEMGREP_EXPRESSION", $._expression), + semgrep_expression: ($) => seq("__SEMGREP_EXPRESSION", $.semgrep_pattern), + + semgrep_pattern: $ => choice( + $._expression, + $._statement, + ), _expression: ($, previous) => choice( previous, From 3207a600a125a2909932068f4ce16f47687c90c3 Mon Sep 17 00:00:00 2001 From: brandonspark Date: Fri, 16 May 2025 15:45:33 -0700 Subject: [PATCH 5/5] allow import ellipsis --- lang/dart/test/ok/import_ellipsis.dart | 2 ++ lang/semgrep-grammars/src/semgrep-dart/grammar.js | 5 +++++ 2 files changed, 7 insertions(+) create mode 100644 lang/dart/test/ok/import_ellipsis.dart diff --git a/lang/dart/test/ok/import_ellipsis.dart b/lang/dart/test/ok/import_ellipsis.dart new file mode 100644 index 0000000..6b5ab78 --- /dev/null +++ b/lang/dart/test/ok/import_ellipsis.dart @@ -0,0 +1,2 @@ +import 'package:google_generative_ai/google_generative_ai.dart'; +... \ No newline at end of file diff --git a/lang/semgrep-grammars/src/semgrep-dart/grammar.js b/lang/semgrep-grammars/src/semgrep-dart/grammar.js index 8a05119..a049587 100644 --- a/lang/semgrep-grammars/src/semgrep-dart/grammar.js +++ b/lang/semgrep-grammars/src/semgrep-dart/grammar.js @@ -31,6 +31,11 @@ module.exports = grammar(base_grammar, { '<...', $._expression, '...>' ), + _top_level_definition: ($, previous) => choice( + previous, + $.semgrep_ellipsis, + ), + semgrep_metavariable: $ => /\$[A-Z_][A-Z_0-9]*/, // Alternate "entry point". Allows parsing a standalone expression.