Skip to content

Commit d1452ff

Browse files
authored
Merge pull request #1976 from Haehnchen/feature/tag-string-iterator-support
tags can also be strings
2 parents 6d5021e + ebe1b9c commit d1452ff

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlGoToDeclarationHandler.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -532,11 +532,11 @@ private Collection<PsiElement> attachTaggedIteratorClasses(@NotNull PsiElement p
532532
if ("!tagged_iterator".equals(psiElement.getText())) {
533533
PsiElement nextLeaf = PsiTreeUtil.nextCodeLeaf(psiElement);
534534

535-
if (nextLeaf != null && nextLeaf.getNode().getElementType() == YAMLTokenTypes.TEXT) {
535+
if (nextLeaf != null && (nextLeaf.getNode().getElementType() == YAMLTokenTypes.TEXT || nextLeaf.getNode().getElementType() == YAMLTokenTypes.SCALAR_STRING)) {
536536
// - !tagged_iterator app.handler
537-
String tag = nextLeaf.getText();
537+
String tag = PsiElementUtils.trimQuote(nextLeaf.getText());
538538
if (StringUtils.isNotBlank(tag)) {
539-
return new ArrayList<>(ServiceUtil.getTaggedClassesWithCompiled(psiElement.getProject(), tag));
539+
return new ArrayList<>(ServiceUtil.getTaggedClasses(psiElement.getProject(), tag));
540540
}
541541
} else {
542542
// - !tagged_iterator { tag: app.handler, default_priority_method: getPriority }
@@ -547,9 +547,9 @@ private Collection<PsiElement> attachTaggedIteratorClasses(@NotNull PsiElement p
547547
.orElse(null);
548548

549549
if (tagKeyValue != null) {
550-
String tag = tagKeyValue.getValueText();
550+
String tag = PsiElementUtils.trimQuote(tagKeyValue.getValueText());
551551
if (StringUtils.isNotBlank(tag)) {
552-
return new ArrayList<>(ServiceUtil.getTaggedClassesWithCompiled(psiElement.getProject(), tag));
552+
return new ArrayList<>(ServiceUtil.getTaggedClasses(psiElement.getProject(), tag));
553553
}
554554
}
555555
}
@@ -576,7 +576,7 @@ private Collection<PsiElement> getTagClassesGoto(@NotNull PsiElement psiElement)
576576
return Collections.emptyList();
577577
}
578578

579-
return new ArrayList<>(ServiceUtil.getTaggedClassesWithCompiled(psiElement.getProject(), tagName));
579+
return new ArrayList<>(ServiceUtil.getTaggedClasses(psiElement.getProject(), tagName));
580580
}
581581

582582
private Collection<PsiElement> getEventGoto(@NotNull PsiElement psiElement) {

src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/TagReference.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public TagReference(@NotNull StringLiteralExpression element) {
2929
@NotNull
3030
@Override
3131
public ResolveResult[] multiResolve(boolean incompleteCode) {
32-
return PsiElementResolveResult.createResults(ServiceUtil.getTaggedClassesWithCompiled(getElement().getProject(), this.tagName));
32+
return PsiElementResolveResult.createResults(ServiceUtil.getTaggedClasses(getElement().getProject(), this.tagName));
3333
}
3434

3535
@NotNull

src/main/java/fr/adrienbrault/idea/symfony2plugin/util/dict/ServiceUtil.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ public static Set<String> getServiceTags(@NotNull Project project, @NotNull Stri
316316
return service;
317317
}
318318

319-
public static Collection<PhpClass> getTaggedClasses(@NotNull Project project, @NotNull String tagName) {
319+
private static Collection<PhpClass> getTaggedClassesOnIndex(@NotNull Project project, @NotNull String tagName) {
320320

321321
List<PhpClass> phpClasses = new ArrayList<>();
322322

@@ -340,17 +340,17 @@ public static Collection<PhpClass> getTaggedClasses(@NotNull Project project, @N
340340
}
341341

342342
public static boolean isPhpClassTaggedWith(@NotNull PhpClass phpClass, @NotNull String tagName) {
343-
return ServiceUtil.getTaggedClasses(phpClass.getProject(), tagName).stream()
343+
return ServiceUtil.getTaggedClassesOnIndex(phpClass.getProject(), tagName).stream()
344344
.anyMatch(phpClass1 -> phpClass1.getFQN().equalsIgnoreCase(phpClass1.getFQN()));
345345
}
346346

347347
@NotNull
348-
public static Collection<PhpClass> getTaggedClassesWithCompiled(@NotNull Project project, @NotNull String tagName) {
348+
public static Collection<PhpClass> getTaggedClasses(@NotNull Project project, @NotNull String tagName) {
349349

350350
Set<String> uniqueClass = new HashSet<>();
351351

352352
Collection<PhpClass> taggedClasses = new ArrayList<>();
353-
for(PhpClass phpClass: getTaggedClasses(project, tagName)) {
353+
for(PhpClass phpClass: getTaggedClassesOnIndex(project, tagName)) {
354354
String presentableFQN = phpClass.getPresentableFQN();
355355
if(!uniqueClass.contains(presentableFQN)) {
356356
uniqueClass.add(presentableFQN);

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/yaml/YamlGoToDeclarationHandlerTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,13 @@ public void testNavigateToTaggedIteratorServices() {
169169
" - !tagged_<caret>iterator my_nice_tag\n",
170170
PlatformPatterns.psiElement(PhpClass.class)
171171
);
172+
173+
assertNavigationMatch(YAMLFileType.YML, "" +
174+
"App\\HandlerCollection:\n" +
175+
" arguments:\n" +
176+
" - !tagged_<caret>iterator 'my_nice_tag'\n",
177+
PlatformPatterns.psiElement(PhpClass.class)
178+
);
172179
}
173180

174181
public void testNavigateToTagInsideHash() {
@@ -178,6 +185,13 @@ public void testNavigateToTagInsideHash() {
178185
" - !tagged_it<caret>erator { tag: my_nice_tag, default_priority_method: getPriority }\n",
179186
PlatformPatterns.psiElement(PhpClass.class)
180187
);
188+
189+
assertNavigationMatch(YAMLFileType.YML, "" +
190+
"App\\HandlerCollection:\n" +
191+
" arguments:\n" +
192+
" - !tagged_it<caret>erator { tag: 'my_nice_tag', default_priority_method: getPriority }\n",
193+
PlatformPatterns.psiElement(PhpClass.class)
194+
);
181195
}
182196

183197
public void testNavigateToTaggedServicesForSymfony33Shortcut() {

0 commit comments

Comments
 (0)