Skip to content

Commit

Permalink
chore: allow named ellipsis for stmts and exp, add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
brandonspark committed Dec 19, 2023
1 parent 44699c4 commit b43d552
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 28 deletions.
5 changes: 4 additions & 1 deletion lang/semgrep-grammars/src/semgrep-java/grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,13 @@ module.exports = grammar(base_grammar, {
primary_expression: ($, previous) => choice(
previous,
$.semgrep_ellipsis,
$.semgrep_named_ellipsis
),

statement: ($, previous) => choice(
previous,
$.semgrep_ellipsis,
$.semgrep_named_ellipsis
),

formal_parameter: ($, previous) => choice(
Expand All @@ -66,7 +68,8 @@ module.exports = grammar(base_grammar, {

_class_body_declaration: ($, previous) => choice(
previous,
$.semgrep_ellipsis
$.semgrep_ellipsis,
$.semgrep_named_ellipsis
),

partials: $ => choice(
Expand Down
90 changes: 63 additions & 27 deletions lang/semgrep-grammars/src/semgrep-java/test/corpus/semgrep.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ bar();

--------------------------------------------------------------------------------

(program
(expression_statement
(method_invocation
(identifier)
(argument_list)))
(semgrep_ellipsis)
(expression_statement
(method_invocation
(identifier)
(argument_list))))
(program
(expression_statement
(method_invocation
(identifier)
(argument_list)))
(semgrep_ellipsis)
(expression_statement
(method_invocation
(identifier)
(argument_list))))

================================================================================
Top level public constructor
Expand Down Expand Up @@ -72,15 +72,16 @@ public record $R(...) {
}

--------------------------------------------------------------------------------

(program
(record_declaration
(modifiers)
(identifier)
(formal_parameters
(formal_parameter
(semgrep_ellipsis)))
(class_body
(semgrep_ellipsis))))
(record_declaration
(modifiers)
(identifier)
(formal_parameters
(formal_parameter
(semgrep_ellipsis)))
(class_body
(semgrep_ellipsis))))

================================================================================
Method header
Expand All @@ -91,14 +92,14 @@ public int foo(...)
--------------------------------------------------------------------------------

(program
(partials
(partial_method
(modifiers)
(integral_type)
(identifier)
(formal_parameters
(formal_parameter
(semgrep_ellipsis))))))
(partials
(partial_method
(modifiers)
(integral_type)
(identifier)
(formal_parameters
(formal_parameter
(semgrep_ellipsis))))))

================================================================================
Constructor body ellipsis
Expand Down Expand Up @@ -185,7 +186,7 @@ class $X {
(identifier))))))))

================================================================================
Metavariable ellipsis parameter
Named ellipsis parameter
================================================================================

class $X {
Expand All @@ -206,3 +207,38 @@ class $X {
(formal_parameter
(semgrep_named_ellipsis)))
(block)))))

================================================================================
Named ellipsis statements
================================================================================

foo();
$...STMTS
bar();

--------------------------------------------------------------------------------

(program
(expression_statement
(method_invocation
(identifier)
(argument_list)))
(semgrep_named_ellipsis)
(expression_statement
(method_invocation
(identifier)
(argument_list))))

================================================================================
Named ellipsis expression
================================================================================

1 + $...NAMED;

--------------------------------------------------------------------------------

(program
(expression_statement
(binary_expression
(decimal_integer_literal)
(semgrep_named_ellipsis))))

0 comments on commit b43d552

Please sign in to comment.