From a2d3fb463f70a40646d538cc0fa37e7f1169dca0 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 21 Jul 2017 15:21:40 +0200 Subject: [PATCH] fix stub-AST mismatch when typing 'enum' in a method --- .../psi/impl/source/JavaLightStubBuilder.java | 2 +- .../com/intellij/java/psi/JavaStubsTest.groovy | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java index 3470ad3a1ca8..508216f8f56c 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaLightStubBuilder.java @@ -142,7 +142,7 @@ public class JavaLightStubBuilder extends LightStubBuilder { return (result = false); } // local classes - else if (type == JavaTokenType.CLASS_KEYWORD && last != JavaTokenType.DOT) { + else if (type == JavaTokenType.CLASS_KEYWORD ? last != JavaTokenType.DOT : ElementType.CLASS_KEYWORD_BIT_SET.contains(type)) { return (result = false); } diff --git a/java/java-tests/testSrc/com/intellij/java/psi/JavaStubsTest.groovy b/java/java-tests/testSrc/com/intellij/java/psi/JavaStubsTest.groovy index 604ba9ef1394..9517c772e0c3 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/JavaStubsTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/psi/JavaStubsTest.groovy @@ -221,4 +221,16 @@ class Foo { PsiTestUtil.checkStubsMatchText(psiFile) } + void "test inserting enum keyword"() { + String text = "class Foo { void foo() { return; } }" + PsiFile psiFile = myFixture.addFileToProject("a.java", text) + Document document = psiFile.getViewProvider().getDocument() + + WriteCommandAction.runWriteCommandAction(project) { + document.insertString(text.indexOf("return"), "enum Foo") + } + PsiDocumentManager.getInstance(getProject()).commitAllDocuments() + PsiTestUtil.checkStubsMatchText(psiFile) + } + } \ No newline at end of file