From f0ca8898abdcb6c1a743147fe30b70cde716d727 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 26 Sep 2018 10:10:11 +0200 Subject: [PATCH] IDEA-199491 PsiInvalidElementAccessException on completion --- .../completion/ConstructorInsertHandler.java | 10 ++++++---- .../normal/DestroyingCompletedClassDeclaration.java | 12 ++++++++++++ .../DestroyingCompletedClassDeclaration_after.java | 12 ++++++++++++ .../completion/NormalCompletionTest.groovy | 2 ++ 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/completion/normal/DestroyingCompletedClassDeclaration.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/DestroyingCompletedClassDeclaration_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java b/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java index fe160e9f2270..5d0a8ffd2dea 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ConstructorInsertHandler.java @@ -61,7 +61,7 @@ public class ConstructorInsertHandler implements InsertHandler classPointer = SmartPointerManager.createPointer(psiClass); boolean isAbstract = psiClass.hasModifierProperty(PsiModifier.ABSTRACT); if (Lookup.REPLACE_SELECT_CHAR == context.getCompletionChar()) { @@ -95,12 +95,14 @@ public class ConstructorInsertHandler implements InsertHandlerumnBase() { + void foo() { + } + } + }; + + private static abstract class RepositoryItem20ColumnBase extends Column { } + static class Column { } +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/DestroyingCompletedClassDeclaration_after.java b/java/java-tests/testData/codeInsight/completion/normal/DestroyingCompletedClassDeclaration_after.java new file mode 100644 index 000000000000..b2e7c9d1f6ee --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/DestroyingCompletedClassDeclaration_after.java @@ -0,0 +1,12 @@ +class X { + + Column[] c = new Column[]{ + new RepositoryItem20ColumnBase()umnBase() { + void foo() { + } + } + }; + + private static abstract class RepositoryItem20ColumnBase extends Column { } + static class Column { } +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index 7d321a8bfaa2..071a63631fd7 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -1800,6 +1800,8 @@ class Bar {{ void testMethodReferenceCallContext() { doTest('\n') } + void testDestroyingCompletedClassDeclaration() { doTest('\n') } + void testResourceParentInResourceList() { configureByTestName() assert 'MyOuterResource' == myFixture.lookupElementStrings[0]