diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigPattern.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigPattern.java index 5a34b587e..5e07cde8f 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigPattern.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigPattern.java @@ -858,7 +858,6 @@ public static ElementPattern getTransDomainPattern() { * {{ path('_profiler_info', {'foobar': 'foobar', ''}) }} */ public static ElementPattern getPathAfterLeafPattern() { - //noinspection unchecked return PlatformPatterns .psiElement(TwigTokenTypes.STRING_TEXT) .afterLeafSkipping( @@ -917,7 +916,7 @@ public static ElementPattern getTypeCompletionPattern() { } public static ElementPattern getTwigTypeDocBlockPattern() { - Collection patterns = new ArrayList<>(); + Collection> patterns = new ArrayList<>(); for (String s : TwigTypeResolveUtil.DOC_TYPE_PATTERN_SINGLE) { patterns.add(PlatformPatterns.psiElement(TwigTokenTypes.COMMENT_TEXT).withText(PlatformPatterns.string().matches(s)).withLanguage(TwigLanguage.INSTANCE)); @@ -940,7 +939,6 @@ public static ElementPattern getTwigDocSeePattern() { } public static ElementPattern getAutocompletableRoutePattern() { - //noinspection unchecked return PlatformPatterns .psiElement(TwigTokenTypes.STRING_TEXT) .afterLeafSkipping( diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateGoToDeclarationHandler.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateGoToDeclarationHandler.java index 200f41d22..259bd41ef 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateGoToDeclarationHandler.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateGoToDeclarationHandler.java @@ -362,7 +362,7 @@ private Collection getVarClassGoto(@NotNull PsiElement psiElement) { if (matcher.find()) { String className = matcher.group("class"); if(StringUtils.isNotBlank(className)) { - return PhpElementsUtil.getClassesInterface(psiElement.getProject(), className); + return PhpElementsUtil.getClassesInterface(psiElement.getProject(), StringUtils.stripEnd(className, "[]")); } } } diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/util/TwigTypeResolveUtil.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/util/TwigTypeResolveUtil.java index 2f90502de..c3780d628 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/util/TwigTypeResolveUtil.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/util/TwigTypeResolveUtil.java @@ -56,13 +56,13 @@ public class TwigTypeResolveUtil { * {# @var variable \AppBundle\Entity\Foo[] #} * {# @var variable \AppBundle\Entity\Foo #} */ - private static final String DOC_TYPE_PATTERN_CLASS_SECOND = "@var[\\s]+(?[\\w]+)[\\s]+(?[\\w\\\\\\[\\]]+)[\\s]*"; + private static final String DOC_TYPE_PATTERN_CLASS_SECOND = "@var\\s+(?\\w+)\\s+(?[\\w\\\\\\[\\]]+)\\s*"; /** * {# @var \AppBundle\Entity\Foo[] variable #} * {# @var \AppBundle\Entity\Foo variable #} */ - private static final String DOC_TYPE_PATTERN_CLASS_FIRST = "@var[\\s]+(?[\\w\\\\\\[\\]]+)[\\s]+(?[\\w]+)[\\s]*"; + private static final String DOC_TYPE_PATTERN_CLASS_FIRST = "@var\\s+(?[\\w\\\\\\[\\]]+)\\s+(?\\w+)\\s*"; public static final Pattern[] INLINE_DOC_REGEX = { Pattern.compile(DOC_TYPE_PATTERN_CLASS_SECOND, Pattern.MULTILINE), diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigTemplateGoToDeclarationHandlerTest.java b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigTemplateGoToDeclarationHandlerTest.java index 86658c27c..b2065cb7c 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigTemplateGoToDeclarationHandlerTest.java +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigTemplateGoToDeclarationHandlerTest.java @@ -131,10 +131,14 @@ public void testSimpleTestNavigationToExtension() { public void testGetVarClassGoto() { assertNavigationMatch(TwigFileType.INSTANCE, "{# @var bar \\DateTime #}", PlatformPatterns.psiElement(PhpClass.class)); assertNavigationMatch(TwigFileType.INSTANCE, "{# @var \\DateTime bar #}", PlatformPatterns.psiElement(PhpClass.class)); + + assertNavigationMatch(TwigFileType.INSTANCE, "{# @var \\DateTime[] bar #}", PlatformPatterns.psiElement(PhpClass.class)); + assertNavigationMatch(TwigFileType.INSTANCE, "{# @var bar \\DateTime[] #}", PlatformPatterns.psiElement(PhpClass.class)); } public void testGetVarClassGotoDeprecated() { assertNavigationMatch(TwigFileType.INSTANCE, "{# bar \\DateTime #}", PlatformPatterns.psiElement(PhpClass.class)); + assertNavigationMatch(TwigFileType.INSTANCE, "{# bar \\DateTime[] #}", PlatformPatterns.psiElement(PhpClass.class)); } public void testSeeTagGoto() {