From 06c5be6489f0bb679d5eebc6a9e0e2080a201c89 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 26 Dec 2014 00:58:26 +0300 Subject: [PATCH] Fix tests: No dangling annotations in stubs --- .../jetbrains/jet/lang/psi/JetClassBody.java | 2 +- .../org/jetbrains/jet/lang/psi/JetFile.java | 9 ++++++++- .../stubs/DanglingAnnotations.expected | 18 ++++++++++++++++++ idea/testData/stubs/DanglingAnnotations.kt | 5 +++++ .../plugin/stubs/StubBuilderTestGenerated.java | 6 ++++++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 idea/testData/stubs/DanglingAnnotations.expected create mode 100644 idea/testData/stubs/DanglingAnnotations.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassBody.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassBody.java index d8959832a86..003bf0e7b32 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassBody.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassBody.java @@ -92,7 +92,7 @@ public class JetClassBody extends JetElementImplStub getDanglingAnnotations() { return KotlinPackage.flatMap( - findChildrenByClass(JetModifierList.class), + getStubOrPsiChildrenAsList(MODIFIER_LIST), new Function1>() { @Override public Iterable invoke(JetModifierList modifierList) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java index 218298fc770..bf3bacd61c3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java @@ -245,8 +245,15 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer, Jet */ @NotNull public List getDanglingAnnotations() { + KotlinFileStub stub = getStub(); + JetModifierList[] danglingModifierLists = stub == null + ? findChildrenByClass(JetModifierList.class) + : stub.getChildrenByType( + JetStubElementTypes.MODIFIER_LIST, + JetStubElementTypes.MODIFIER_LIST.getArrayFactory() + ); return KotlinPackage.flatMap( - findChildrenByClass(JetModifierList.class), + danglingModifierLists, new Function1>() { @Override public Iterable invoke(JetModifierList modifierList) { diff --git a/idea/testData/stubs/DanglingAnnotations.expected b/idea/testData/stubs/DanglingAnnotations.expected new file mode 100644 index 00000000000..1f77e0ec773 --- /dev/null +++ b/idea/testData/stubs/DanglingAnnotations.expected @@ -0,0 +1,18 @@ +PsiJetFileStubImpl[package=] + PACKAGE_DIRECTIVE: + CLASS:[fqName=C, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=C, superNames=[]] + CLASS_BODY: + MODIFIER_LIST:[] + ANNOTATION: + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Ann] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Ann] + MODIFIER_LIST:[] + ANNOTATION: + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Ann] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Ann] diff --git a/idea/testData/stubs/DanglingAnnotations.kt b/idea/testData/stubs/DanglingAnnotations.kt new file mode 100644 index 00000000000..313022386b7 --- /dev/null +++ b/idea/testData/stubs/DanglingAnnotations.kt @@ -0,0 +1,5 @@ +class C { + [Ann] +} + +[Ann] \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/stubs/StubBuilderTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/stubs/StubBuilderTestGenerated.java index 0fa6b203e26..3e7432bebf4 100644 --- a/idea/tests/org/jetbrains/jet/plugin/stubs/StubBuilderTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/stubs/StubBuilderTestGenerated.java @@ -84,6 +84,12 @@ public class StubBuilderTestGenerated extends AbstractStubBuilderTest { doTest(fileName); } + @TestMetadata("DanglingAnnotations.kt") + public void testDanglingAnnotations() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/stubs/DanglingAnnotations.kt"); + doTest(fileName); + } + @TestMetadata("DynamicType.kt") public void testDynamicType() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/stubs/DynamicType.kt");