diff --git a/java/java-impl/src/com/intellij/psi/impl/java/stubs/JavaModifierListElementType.java b/java/java-impl/src/com/intellij/psi/impl/java/stubs/JavaModifierListElementType.java index 44366af5a6ff..8ebbf47f01d3 100644 --- a/java/java-impl/src/com/intellij/psi/impl/java/stubs/JavaModifierListElementType.java +++ b/java/java-impl/src/com/intellij/psi/impl/java/stubs/JavaModifierListElementType.java @@ -16,8 +16,8 @@ package com.intellij.psi.impl.java.stubs; import com.intellij.lang.ASTNode; -import com.intellij.lang.LighterASTNode; import com.intellij.lang.LighterAST; +import com.intellij.lang.LighterASTNode; import com.intellij.psi.PsiModifierList; import com.intellij.psi.impl.cache.RecordUtil; import com.intellij.psi.impl.compiled.ClsModifierListImpl; @@ -29,6 +29,7 @@ import com.intellij.psi.stubs.IndexSink; import com.intellij.psi.stubs.StubElement; import com.intellij.psi.stubs.StubInputStream; import com.intellij.psi.stubs.StubOutputStream; +import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -75,7 +76,19 @@ public class JavaModifierListElementType extends JavaStubElementType implements PsiMethodS builder.append("deprecated "); } - builder.append(getName()). - append(":").append(TypeInfo.createTypeText(getReturnTypeText(true))); + builder.append(getName()).append(":").append(TypeInfo.createTypeText(getReturnTypeText(false))); if (getDefaultValueText() != null) { builder.append(" default=").append(getDefaultValueText()); diff --git a/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java b/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java index 9a1be7b8f221..018d3d77fa28 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java @@ -43,7 +43,7 @@ import java.io.IOException; public class JavaFileElementType extends ILightStubFileElementType { public static boolean USE_NEW_STUB_BUILDER = true; - public static final int STUB_VERSION = (USE_NEW_STUB_BUILDER ? 6 : 5) + 1; + public static final int STUB_VERSION = (USE_NEW_STUB_BUILDER ? 6 : 5) + 2; public JavaFileElementType() { super("java.FILE", StdLanguages.JAVA); diff --git a/java/java-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java b/java/java-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java index 4a37e4280b74..07940621e8ce 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java @@ -49,7 +49,6 @@ public class JavaLightStubBuilder extends LightStubBuilder { @Override public boolean skipChildProcessingWhenBuildingStubs(final IElementType nodeType, final IElementType childType) { - return childType == JavaElementType.PARAMETER && nodeType != JavaElementType.PARAMETER_LIST || - childType == JavaElementType.MODIFIER_LIST && (nodeType == JavaElementType.LOCAL_VARIABLE || nodeType == JavaElementType.RESOURCE_VARIABLE); + return childType == JavaElementType.PARAMETER && nodeType != JavaElementType.PARAMETER_LIST; } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/psi/impl/source/tree/java/PsiLocalVariableImpl.java b/java/java-impl/src/com/intellij/psi/impl/source/tree/java/PsiLocalVariableImpl.java index 7ac00396e348..0f6303a6781a 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/tree/java/PsiLocalVariableImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/tree/java/PsiLocalVariableImpl.java @@ -54,6 +54,7 @@ public class PsiLocalVariableImpl extends CompositePsiElement implements PsiLoca private volatile String myCachedName = null; + @SuppressWarnings({"UnusedDeclaration"}) public PsiLocalVariableImpl() { this(LOCAL_VARIABLE); } diff --git a/java/java-tests/testSrc/com/intellij/psi/JavaStubBuilderTest.java b/java/java-tests/testSrc/com/intellij/psi/JavaStubBuilderTest.java index 75b43393acd7..0984b7b02fa8 100644 --- a/java/java-tests/testSrc/com/intellij/psi/JavaStubBuilderTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/JavaStubBuilderTest.java @@ -60,7 +60,7 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { doTest("package p;\n" + "import a/*comment to skip*/.b;\n" + "import static c.d.*;\n" + - "import static java.util.Arrays.sort", + "import static java.util.Arrays.sort;", "PsiJavaFileStub [p]\n" + " IMPORT_LIST:PsiImportListStub\n" + @@ -117,7 +117,7 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { "}\n" + "private class C {\n" + " public C() throws Exception { }\n" + - " public abstract void m(final int i, int[] a1, int a2[], int[] a3[])\n" + + " public abstract void m(final int i, int[] a1, int a2[], int[] a3[]);\n" + " private static int v2a(int... v) [] { return v; }\n" + "}", @@ -209,7 +209,7 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { public void testAnonymousClasses() { doTest("class C { {\n" + " new O.P() { };\n" + - " X.new Y() { }\n" + + " X.new Y() { };\n" + "} }", "PsiJavaFileStub []\n" + @@ -227,7 +227,7 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { public void testEnums() { doTest("enum E {\n" + - " E1() { }" + + " E1() { };\n" + " abstract void m();\n" + "}\n" + "public enum U { U1, U2 }", @@ -262,10 +262,13 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { doTest("class C {\n" + " void m() {\n" + " int local = 0;\n" + + " Object r = new Runnable() {\n" + + " public void run() { }\n" + + " };\n" + " for (int loop = 0; loop < 10; loop++) ;\n" + " try (Resource r = new Resource()) { }\n" + " try (Resource r = new Resource() {\n" + - " public void close() { }\n" + + " @Override public void close() { }\n" + " }) { }\n" + " }\n" + "}", @@ -282,9 +285,16 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { " TYPE_PARAMETER_LIST:PsiTypeParameterListStub\n" + " PARAMETER_LIST:PsiParameterListStub\n" + " THROWS_LIST:PsiRefListStub[THROWS_LIST:]\n" + + " ANONYMOUS_CLASS:PsiClassStub[anonymous name=null fqn=null baseref=Runnable]\n" + + " METHOD:PsiMethodStub[run:void]\n" + + " MODIFIER_LIST:PsiModifierListStub[mask=1]\n" + + " TYPE_PARAMETER_LIST:PsiTypeParameterListStub\n" + + " PARAMETER_LIST:PsiParameterListStub\n" + + " THROWS_LIST:PsiRefListStub[THROWS_LIST:]\n" + " ANONYMOUS_CLASS:PsiClassStub[anonymous name=null fqn=null baseref=Resource]\n" + " METHOD:PsiMethodStub[close:void]\n" + " MODIFIER_LIST:PsiModifierListStub[mask=1]\n" + + " ANNOTATION:PsiAnnotationStub[@Override]\n" + " TYPE_PARAMETER_LIST:PsiTypeParameterListStub\n" + " PARAMETER_LIST:PsiParameterListStub\n" + " THROWS_LIST:PsiRefListStub[THROWS_LIST:]\n"); @@ -294,6 +304,9 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { doTest("class C {\n" + " {\n" + " for (int i : arr) ;\n" + + " for (String s : new Iterable() {\n" + + " @Override public Iterator iterator() { return null; }\n" + + " }) ;\n" + " try { }\n" + " catch (Throwable t) { }\n" + " catch (E1|E2 e) { }\n" + @@ -308,7 +321,14 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { " EXTENDS_LIST:PsiRefListStub[EXTENDS_LIST:]\n" + " IMPLEMENTS_LIST:PsiRefListStub[IMPLEMENTS_LIST:]\n" + " CLASS_INITIALIZER:PsiClassInitializerStub\n" + - " MODIFIER_LIST:PsiModifierListStub[mask=4096]\n"); + " MODIFIER_LIST:PsiModifierListStub[mask=4096]\n" + + " ANONYMOUS_CLASS:PsiClassStub[anonymous name=null fqn=null baseref=Iterable]\n" + + " METHOD:PsiMethodStub[iterator:Iterator]\n" + + " MODIFIER_LIST:PsiModifierListStub[mask=1]\n" + + " ANNOTATION:PsiAnnotationStub[@Override]\n" + + " TYPE_PARAMETER_LIST:PsiTypeParameterListStub\n" + + " PARAMETER_LIST:PsiParameterListStub\n" + + " THROWS_LIST:PsiRefListStub[THROWS_LIST:]\n"); } public void testSOEProof() { @@ -343,6 +363,7 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { final PsiJavaFile file = (PsiJavaFile)createLightFile("test.java", new String(source)); IdeaTestUtil.assertTiming("Source file size: " + source.length, 2000, new Runnable() { + @Override public void run() { NEW_BUILDER.buildStubTree(file); } @@ -373,6 +394,14 @@ public class JavaStubBuilderTest extends LightIdeaTestCase { OLD_BUILDER.buildStubTree(file); t4 = Math.max((System.nanoTime() - t4)/1000, 1); + file.accept(new PsiRecursiveElementWalkingVisitor() { + @Override + public void visitElement(PsiElement element) { + assert !(element instanceof PsiErrorElement) : element; + super.visitElement(element); + } + }); + final String lightStr = DebugUtil.stubTreeToString(lighterTree); final String originalStr = DebugUtil.stubTreeToString(originalTree); final String lightStr2 = DebugUtil.stubTreeToString(lighterTree2);