diff --git a/.gitmodules b/.gitmodules index 98c069f0..c6388f41 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/returntocorp/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 +132,7 @@ 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 +[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/dart/test/ok/anonymous_metavar.dart b/lang/dart/test/ok/anonymous_metavar.dart new file mode 100644 index 00000000..93f3651e --- /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/import_ellipsis.dart b/lang/dart/test/ok/import_ellipsis.dart new file mode 100644 index 00000000..6b5ab78e --- /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/dart/test/ok/metavariable_stmt.dart b/lang/dart/test/ok/metavariable_stmt.dart new file mode 100644 index 00000000..9c086d6e --- /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 da6cfb9a..a049587c 100644 --- a/lang/semgrep-grammars/src/semgrep-dart/grammar.js +++ b/lang/semgrep-grammars/src/semgrep-dart/grammar.js @@ -25,14 +25,26 @@ 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, '...>' ), + _top_level_definition: ($, previous) => choice( + previous, + $.semgrep_ellipsis, + ), + + 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, diff --git a/lang/semgrep-grammars/src/tree-sitter-dart b/lang/semgrep-grammars/src/tree-sitter-dart index 5549697f..80e23c07 160000 --- a/lang/semgrep-grammars/src/tree-sitter-dart +++ b/lang/semgrep-grammars/src/tree-sitter-dart @@ -1 +1 @@ -Subproject commit 5549697ffeef681d57ba1ce72bed97961221f284 +Subproject commit 80e23c07b64494f7e21090bb3450223ef0b192f4