diff --git a/php-frontend/src/main/java/org/sonar/php/parser/PHPGrammar.java b/php-frontend/src/main/java/org/sonar/php/parser/PHPGrammar.java index c76cff651..990b543de 100644 --- a/php-frontend/src/main/java/org/sonar/php/parser/PHPGrammar.java +++ b/php-frontend/src/main/java/org/sonar/php/parser/PHPGrammar.java @@ -1230,6 +1230,7 @@ public ExpressionTree POWER_EXPR() { b.firstOf( CAST_EXPR(), ASSIGNMENT_EXPRESSION(), + MATCH_EXPRESSION(), POSTFIX_EXPRESSION()), b.zeroOrMore(f.newTuple( b.token(STAR_STAR), diff --git a/php-frontend/src/test/java/org/sonar/php/parser/expression/PowerExpressionTest.java b/php-frontend/src/test/java/org/sonar/php/parser/expression/PowerExpressionTest.java index dc07940ce..82502008c 100644 --- a/php-frontend/src/test/java/org/sonar/php/parser/expression/PowerExpressionTest.java +++ b/php-frontend/src/test/java/org/sonar/php/parser/expression/PowerExpressionTest.java @@ -29,7 +29,12 @@ void test() { .matches("$a") .matches("$a ** $a") .matches("$a ** -2") - .matches("$a ** (int) $a"); + .matches("$a ** (int) $a") + .matches(""" + match ($food) { + 'apple' => 1, + 'bar' => 2 + } ** 3"""); } } diff --git a/php-frontend/src/test/java/org/sonar/php/parser/expression/UnaryExprTest.java b/php-frontend/src/test/java/org/sonar/php/parser/expression/UnaryExprTest.java index 91942dfc3..945aa46ff 100644 --- a/php-frontend/src/test/java/org/sonar/php/parser/expression/UnaryExprTest.java +++ b/php-frontend/src/test/java/org/sonar/php/parser/expression/UnaryExprTest.java @@ -40,6 +40,10 @@ void test() { .matches("++$a = $b") .matches("(int) $a = $b") + .matches("match ($a) {$a=>1}") + .matches("!match ($a) {$a=>1}") + .matches("(string) match ($a) {$a=>1}") + .notMatches("(int) $a + $b"); } }