Skip to content

Commit ea88509

Browse files
authored
Merge pull request #1931 from Haehnchen/feature/ascommand
#1541 fix supporting "asCommand" name as default value
2 parents 41a6deb + c122355 commit ea88509

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/command/SymfonyCommandTestRunLineMarkerProvider.java

+5-17
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,11 @@
1414
import com.jetbrains.php.lang.psi.elements.PhpAttribute;
1515
import com.jetbrains.php.lang.psi.elements.PhpClass;
1616
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
17-
import com.jetbrains.php.lang.psi.stubs.indexes.expectedArguments.PhpExpectedFunctionArgument;
1817
import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil;
19-
import fr.adrienbrault.idea.symfony2plugin.util.PsiElementUtils;
20-
import org.apache.commons.lang.StringUtils;
18+
import fr.adrienbrault.idea.symfony2plugin.util.PhpPsiAttributesUtil;
2119
import org.jetbrains.annotations.NotNull;
2220
import org.jetbrains.annotations.Nullable;
2321

24-
import java.util.Collection;
25-
2622
/**
2723
* @author Daniel Espendiller <daniel@espendiller.net>
2824
*/
@@ -69,20 +65,12 @@ public static String getCommandNameFromClass(@NotNull PhpClass phpClass) {
6965
}
7066

7167
// php attributes:
68+
// #[AsCommand('app:create-user')]
7269
// #[AsCommand(name: 'app:create-user')]
7370
for (PhpAttribute attribute : phpClass.getAttributes("\\Symfony\\Component\\Console\\Attribute\\AsCommand")) {
74-
for (PhpAttribute.PhpAttributeArgument argument : attribute.getArguments()) {
75-
String name = argument.getName();
76-
if ("name".equals(name)) {
77-
PhpExpectedFunctionArgument argument1 = argument.getArgument();
78-
if (argument1 != null) {
79-
String value1 = PsiElementUtils.trimQuote(argument1.getValue());
80-
if (StringUtils.isNotBlank(value1)) {
81-
return value1;
82-
}
83-
}
84-
break;
85-
}
71+
String name = PhpPsiAttributesUtil.getAttributeValueByNameAsStringWithDefaultParameterFallback(attribute, "name");
72+
if (name != null) {
73+
return name;
8674
}
8775
}
8876

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/command/SymfonyCommandTestRunLineMarkerProviderTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,16 @@ public void testCommandNameFromDefaultPhpProperty() {
4545

4646
assertEquals("app:create-user", SymfonyCommandTestRunLineMarkerProvider.getCommandNameFromClass(phpClass));
4747
}
48+
49+
public void testCommandNameFromDefaultPhpPropertyAsDefault() {
50+
PhpClass phpClass = PhpPsiElementFactory.createFromText(getProject(), PhpClass.class, "<?php\n" +
51+
"use Symfony\\Component\\Console\\Attribute\\AsCommand;\n" +
52+
"\n" +
53+
"#[AsCommand('app:create-user')]\n" +
54+
"class FoobarCommand extends \\Symfony\\Component\\Console\\Command\\Command {\n" +
55+
"}"
56+
);
57+
58+
assertEquals("app:create-user", SymfonyCommandTestRunLineMarkerProvider.getCommandNameFromClass(phpClass));
59+
}
4860
}

0 commit comments

Comments
 (0)