diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java b/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java index ac44474e4d4c..076bbfbc5ec1 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java @@ -491,12 +491,12 @@ public /*sealed*/ abstract class TypeInfo { else if (refTokenType == JavaElementType.REFERENCE_PARAMETER_LIST) { List subTypes = LightTreeUtil.getChildrenOfType(tree, refChild, JavaElementType.TYPE); if (!subTypes.isEmpty()) { - byte[] newPrefix = Arrays.copyOf(prefix, prefix.length + 2); - newPrefix[prefix.length] = TypeAnnotationContainer.Collector.TYPE_ARGUMENT; for (int i = 0; i < subTypes.size(); i++) { - newPrefix[prefix.length + 1] = (byte)i; TypeInfo componentInfo = info.genericComponent(i); if (componentInfo != null) { + byte[] newPrefix = Arrays.copyOf(prefix, prefix.length + 2); + newPrefix[prefix.length] = TypeAnnotationContainer.Collector.TYPE_ARGUMENT; + newPrefix[prefix.length + 1] = (byte)i; collectAnnotations(componentInfo, collector, tree, subTypes.get(i), newPrefix); } } diff --git a/java/java-tests/testSrc/com/intellij/psi/impl/cache/TypeInfoTest.java b/java/java-tests/testSrc/com/intellij/psi/impl/cache/TypeInfoTest.java index 72fb50415a28..7ce6aca88a9d 100644 --- a/java/java-tests/testSrc/com/intellij/psi/impl/cache/TypeInfoTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/impl/cache/TypeInfoTest.java @@ -72,6 +72,10 @@ public class TypeInfoTest extends LightJavaCodeInsightFixtureTestCase { public void testGenericNested() { doTest("X1<@A2 X2>.@A4 X4<@A5 X5,@A6 X6 @A7 []>"); } + + public void testGenericNested2() { + doTest("List1"); + } private void doTest(String typeText) { String javaFile = "class X { " + typeText + " x; }\n" + USED_CLASSES;