From d56a90e587d198293212a634df2a6a790589b18c Mon Sep 17 00:00:00 2001 From: Sergio Alejandro Vargas Date: Wed, 8 Jan 2025 18:33:34 -0500 Subject: [PATCH] Update julia grammar Update the Julia grammar to tree-sitter-julia#135. That PR introduced several breaking changes, including changes in the way function signatures and parameters were parsed. --- .../src/semgrep-julia/grammar.js | 19 +++++-------------- .../src/semgrep-julia/test/corpus/semgrep.txt | 19 +++++++++++-------- lang/semgrep-grammars/src/tree-sitter-julia | 2 +- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/lang/semgrep-grammars/src/semgrep-julia/grammar.js b/lang/semgrep-grammars/src/semgrep-julia/grammar.js index cb9899b0..ad6417c5 100644 --- a/lang/semgrep-grammars/src/semgrep-julia/grammar.js +++ b/lang/semgrep-grammars/src/semgrep-julia/grammar.js @@ -9,16 +9,12 @@ const base_grammar = require('tree-sitter-julia/grammar'); module.exports = grammar(base_grammar, { name: 'julia', - conflicts: ($, previous) => previous.concat([ - [$.typed_parameter, $._expression], - ]), - /* Support for semgrep ellipsis ('...') and metavariables ('$FOO'), if they're not already part of the base grammar. */ rules: { - semgrep_ellipsis: $ => '...', + semgrep_ellipsis: _ => '...', catch_clause: $ => prec(1, seq( 'catch', @@ -33,8 +29,8 @@ module.exports = grammar(base_grammar, { // metavariable usually is. This is fine, because having a slightly more // permissive grammar is OK, we will just dispatch in the Generic // translation. - semgrep_extended_metavariable: $ => - /\$[A-Z_][a-zA-Z_0-9]*/, + semgrep_extended_metavariable: _ => + /\$[A-Z_][a-zA-Z_0-9]*/, // Metavariables // We allow an identifier to be a simple metavariable regex, so that @@ -69,23 +65,18 @@ module.exports = grammar(base_grammar, { // tree stays the same. Otherwise, we will fail `tree-sitter` tests. alias(prec(999, $.semgrep_extended_metavariable - ), $.identifier) + ), $.identifier) ), _expression: ($, previous) => choice( previous, $.semgrep_ellipsis, - $.deep_expression + $.deep_expression ), _statement: ($, previous) => choice( previous, $.semgrep_ellipsis, ), - - typed_parameter: ($, previous) => choice( - previous, - $.semgrep_ellipsis, - ), } }); diff --git a/lang/semgrep-grammars/src/semgrep-julia/test/corpus/semgrep.txt b/lang/semgrep-grammars/src/semgrep-julia/test/corpus/semgrep.txt index 6a474b5a..af67f2ee 100644 --- a/lang/semgrep-grammars/src/semgrep-julia/test/corpus/semgrep.txt +++ b/lang/semgrep-grammars/src/semgrep-julia/test/corpus/semgrep.txt @@ -40,10 +40,11 @@ end (source_file (function_definition - (identifier) - (parameter_list - (typed_parameter - (semgrep_ellipsis))) + (signature + (call_expression + (identifier) + (argument_list + (semgrep_ellipsis)))) (return_statement (integer_literal)))) @@ -122,9 +123,11 @@ end (source_file (function_definition - (interpolation_expression - (identifier)) - (parameter_list) + (signature + (call_expression + (interpolation_expression + (identifier)) + (argument_list))) (assignment (interpolation_expression (identifier)) @@ -219,7 +222,7 @@ end (argument_list (vector_expression)) (do_clause - (parameter_list + (argument_list (identifier (semgrep_extended_metavariable))) (return_statement diff --git a/lang/semgrep-grammars/src/tree-sitter-julia b/lang/semgrep-grammars/src/tree-sitter-julia index bb7e5878..87394e7c 160000 --- a/lang/semgrep-grammars/src/tree-sitter-julia +++ b/lang/semgrep-grammars/src/tree-sitter-julia @@ -1 +1 @@ -Subproject commit bb7e587837fdeda74dd510256253d60f59a1e2cd +Subproject commit 87394e7ce3b1aca1a7c7912d2bbc599551591093