diff --git a/duchain/tests/duchain.h b/duchain/tests/duchain.h --- a/duchain/tests/duchain.h +++ b/duchain/tests/duchain.h @@ -153,6 +153,7 @@ void useThisAsArray(); void wrongUseOfThisAsArray(); void staticFunctionClassPhp54(); + void functionArgumentUnpacking_data(); void functionArgumentUnpacking(); }; diff --git a/duchain/tests/duchain.cpp b/duchain/tests/duchain.cpp --- a/duchain/tests/duchain.cpp +++ b/duchain/tests/duchain.cpp @@ -3045,21 +3045,25 @@ QCOMPARE(classDec->uses().count(),1); } +void TestDUChain::functionArgumentUnpacking_data() +{ + QTest::addColumn("code"); + + QTest::newRow("unpackVariable") << QStringLiteral("problems().isEmpty()); - QCOMPARE(top->localDeclarations().count(),3); } diff --git a/parser/php.g b/parser/php.g --- a/parser/php.g +++ b/parser/php.g @@ -599,7 +599,7 @@ #parameters=functionCallParameterListElement @ COMMA | 0 -> functionCallParameterList ;; - (BIT_AND variable=variable) | (isVariadic=ELLIPSIS variable=variable) | expr=expr + (BIT_AND variable=variable) | (isVariadic=ELLIPSIS | 0) expr=expr -> functionCallParameterListElement ;; #element=assignmentListElement @COMMA