Skip to content

Commit e42d4a9

Browse files
committed
support default function parameter values for extracting template render scope
1 parent 6ec4b13 commit e42d4a9

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/util/PhpMethodVariableResolveUtil.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,17 +353,21 @@ private void resolvePhpReference(@NotNull MethodReference methodReference, PsiEl
353353
if (defaultValue instanceof StringLiteralExpression) {
354354
addStringLiteralScope(methodReference, (StringLiteralExpression) defaultValue);
355355
}
356-
}
357-
358-
// foo($var) => $var = 'test.html.twig'
359-
if (phpNamedElement instanceof Variable) {
356+
} else if (phpNamedElement instanceof Variable) {
357+
// foo($var) => $var = 'test.html.twig'
360358
PsiElement assignmentExpression = phpNamedElement.getParent();
361359
if (assignmentExpression instanceof AssignmentExpression) {
362360
PhpPsiElement value = ((AssignmentExpression) assignmentExpression).getValue();
363361
if (value instanceof StringLiteralExpression) {
364362
addStringLiteralScope(methodReference, (StringLiteralExpression) value);
365363
}
366364
}
365+
} else if (phpNamedElement instanceof Parameter) {
366+
// function foobar($defaultParameter = 'default-function-parameter.html.twig')
367+
PsiElement value = ((Parameter) phpNamedElement).getDefaultValue();
368+
if (value instanceof StringLiteralExpression) {
369+
addStringLiteralScope(methodReference, (StringLiteralExpression) value);
370+
}
367371
}
368372
}
369373
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/stubs/indexes/PhpTwigTemplateUsageStubIndexTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public void testThatTwigRenderMethodsAreInIndex() {
1818
" const FOO_TERNARY = 'const-ternary.html.twig';\n" +
1919
" const FOO_COALESCE = 'const-coalesce.html.twig';\n" +
2020
" private $foo = 'private.html.twig';\n" +
21-
" public function foobar() {\n" +
21+
" public function foobar($defaultParameter = 'default-function-parameter.html.twig') {\n" +
2222
" $var = 'var.html.twig';\n" +
2323
" $foo->render('foo-render.html.twig');\n" +
2424
" $foo->render('foo-render.html.twig');\n" +
@@ -35,6 +35,7 @@ public void testThatTwigRenderMethodsAreInIndex() {
3535
" $foo->render($var);\n" +
3636
" $foo->render($this->foo);\n" +
3737
" $foo->render(\\DateTime::foo);\n" +
38+
" $foo->renderView($defaultParameter);\n" +
3839
" }\n" +
3940
"}" +
4041
"" +
@@ -49,7 +50,7 @@ public void testThatTwigRenderMethodsAreInIndex() {
4950
"foo-render.html.twig", "foo-renderView.html.twig", "foo-renderResponse.html.twig",
5051
"@Foo/overwrite.html.twig", "const.html.twig", "var.html.twig", "private.html.twig", "foobar-render.twig",
5152
"foo-render-ternary.html.twig", "const-ternary.html.twig", "foo-render-coalesce.html.twig", "const-coalesce.html.twig",
52-
"foo-var-assignment-expression.html.twig"
53+
"foo-var-assignment-expression.html.twig", "default-function-parameter.html.twig"
5354
);
5455

5556
assertIndexContainsKeyWithValue(PhpTwigTemplateUsageStubIndex.KEY, "foo-render.html.twig", value ->

0 commit comments

Comments
 (0)