Skip to content

Commit 7b3dc78

Browse files
committed
allow navigation for twig doc types when using array
1 parent db70972 commit 7b3dc78

File tree

4 files changed

+8
-6
lines changed

4 files changed

+8
-6
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigPattern.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,6 @@ public static ElementPattern<PsiElement> getTransDomainPattern() {
858858
* {{ path('_profiler_info', {'foobar': 'foobar', '<caret>'}) }}
859859
*/
860860
public static ElementPattern<PsiElement> getPathAfterLeafPattern() {
861-
//noinspection unchecked
862861
return PlatformPatterns
863862
.psiElement(TwigTokenTypes.STRING_TEXT)
864863
.afterLeafSkipping(
@@ -917,7 +916,7 @@ public static ElementPattern<PsiElement> getTypeCompletionPattern() {
917916
}
918917

919918
public static ElementPattern<PsiComment> getTwigTypeDocBlockPattern() {
920-
Collection<ElementPattern> patterns = new ArrayList<>();
919+
Collection<PsiElementPattern.Capture<PsiElement>> patterns = new ArrayList<>();
921920

922921
for (String s : TwigTypeResolveUtil.DOC_TYPE_PATTERN_SINGLE) {
923922
patterns.add(PlatformPatterns.psiElement(TwigTokenTypes.COMMENT_TEXT).withText(PlatformPatterns.string().matches(s)).withLanguage(TwigLanguage.INSTANCE));
@@ -940,7 +939,6 @@ public static ElementPattern<PsiElement> getTwigDocSeePattern() {
940939
}
941940

942941
public static ElementPattern<PsiElement> getAutocompletableRoutePattern() {
943-
//noinspection unchecked
944942
return PlatformPatterns
945943
.psiElement(TwigTokenTypes.STRING_TEXT)
946944
.afterLeafSkipping(

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateGoToDeclarationHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ private Collection<PhpClass> getVarClassGoto(@NotNull PsiElement psiElement) {
362362
if (matcher.find()) {
363363
String className = matcher.group("class");
364364
if(StringUtils.isNotBlank(className)) {
365-
return PhpElementsUtil.getClassesInterface(psiElement.getProject(), className);
365+
return PhpElementsUtil.getClassesInterface(psiElement.getProject(), StringUtils.stripEnd(className, "[]"));
366366
}
367367
}
368368
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ public class TwigTypeResolveUtil {
5656
* {# @var variable \AppBundle\Entity\Foo[] #}
5757
* {# @var variable \AppBundle\Entity\Foo #}
5858
*/
59-
private static final String DOC_TYPE_PATTERN_CLASS_SECOND = "@var[\\s]+(?<var>[\\w]+)[\\s]+(?<class>[\\w\\\\\\[\\]]+)[\\s]*";
59+
private static final String DOC_TYPE_PATTERN_CLASS_SECOND = "@var\\s+(?<var>\\w+)\\s+(?<class>[\\w\\\\\\[\\]]+)\\s*";
6060

6161
/**
6262
* {# @var \AppBundle\Entity\Foo[] variable #}
6363
* {# @var \AppBundle\Entity\Foo variable #}
6464
*/
65-
private static final String DOC_TYPE_PATTERN_CLASS_FIRST = "@var[\\s]+(?<class>[\\w\\\\\\[\\]]+)[\\s]+(?<var>[\\w]+)[\\s]*";
65+
private static final String DOC_TYPE_PATTERN_CLASS_FIRST = "@var\\s+(?<class>[\\w\\\\\\[\\]]+)\\s+(?<var>\\w+)\\s*";
6666

6767
public static final Pattern[] INLINE_DOC_REGEX = {
6868
Pattern.compile(DOC_TYPE_PATTERN_CLASS_SECOND, Pattern.MULTILINE),

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigTemplateGoToDeclarationHandlerTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,14 @@ public void testSimpleTestNavigationToExtension() {
131131
public void testGetVarClassGoto() {
132132
assertNavigationMatch(TwigFileType.INSTANCE, "{# @var bar \\Date<caret>Time #}", PlatformPatterns.psiElement(PhpClass.class));
133133
assertNavigationMatch(TwigFileType.INSTANCE, "{# @var \\Date<caret>Time bar #}", PlatformPatterns.psiElement(PhpClass.class));
134+
135+
assertNavigationMatch(TwigFileType.INSTANCE, "{# @var \\Date<caret>Time[] bar #}", PlatformPatterns.psiElement(PhpClass.class));
136+
assertNavigationMatch(TwigFileType.INSTANCE, "{# @var bar \\Date<caret>Time[] #}", PlatformPatterns.psiElement(PhpClass.class));
134137
}
135138

136139
public void testGetVarClassGotoDeprecated() {
137140
assertNavigationMatch(TwigFileType.INSTANCE, "{# bar \\Date<caret>Time #}", PlatformPatterns.psiElement(PhpClass.class));
141+
assertNavigationMatch(TwigFileType.INSTANCE, "{# bar \\Date<caret>Time[] #}", PlatformPatterns.psiElement(PhpClass.class));
138142
}
139143

140144
public void testSeeTagGoto() {

0 commit comments

Comments
 (0)