diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index fb8437096563..76f0fa24b0b9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -747,6 +747,7 @@ public class JavaCompletionUtil { final String qName = psiClass.getQualifiedName(); if (qName != null) { document.replaceString(newElement.getTextRange().getStartOffset(), newEndOffset, qName); + newEndOffset = newElement.getTextRange().getStartOffset() + qName.length(); } } } diff --git a/java/java-tests/testData/codeInsight/completion/smartType/InaccessibleClassAfterNew-out.java b/java/java-tests/testData/codeInsight/completion/smartType/InaccessibleClassAfterNew-out.java new file mode 100644 index 000000000000..176db055355d --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/InaccessibleClassAfterNew-out.java @@ -0,0 +1,6 @@ +class A { + { + bar.Bar.accept(new foo.Foo() { + }); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/smartType/InaccessibleClassAfterNew.java b/java/java-tests/testData/codeInsight/completion/smartType/InaccessibleClassAfterNew.java new file mode 100644 index 000000000000..37f576982556 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/InaccessibleClassAfterNew.java @@ -0,0 +1,5 @@ +class A { + { + bar.Bar.accept(new ) + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.groovy similarity index 74% rename from java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java rename to java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.groovy index 2636722c78ef..c137c3e0ab11 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.groovy @@ -1,9 +1,12 @@ package com.intellij.codeInsight.completion; import com.intellij.JavaTestUtil; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.testFramework.PsiTestUtil; import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase; -@SuppressWarnings({"ALL"}) +@SuppressWarnings(["ALL"]) public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCase { private static final String BASE_PATH = "/codeInsight/completion/smartType"; @@ -15,7 +18,7 @@ public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCa public void testGetInstance() throws Throwable { myFixture.configureFromExistingVirtualFile( myFixture.copyFileToProject(BASE_PATH + "/foo/" + getTestName(false) + ".java", "foo/" + getTestName(false) + ".java")); - performAction(); + myFixture.complete(CompletionType.SMART); myFixture.type('\n'); myFixture.checkResultByFile(BASE_PATH + "/foo/" + getTestName(false) + "-out.java"); } @@ -64,7 +67,7 @@ public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCa private void configure() { myFixture.configureByFile(BASE_PATH + "/" + getTestName(false) + ".java"); - performAction(); + myFixture.complete(CompletionType.SMART); } public void testClassLiteralShouldInsertImport() throws Throwable { @@ -76,8 +79,19 @@ public class HeavySmartTypeCompletion15Test extends JavaCodeInsightFixtureTestCa checkResult(); } - private void performAction() { - myFixture.complete(CompletionType.SMART); + public void testInaccessibleClassAfterNew() { + Module moduleA = PsiTestUtil.addModule(project, StdModuleTypes.JAVA, 'A', myFixture.tempDirFixture.findOrCreateDir("a")) + Module moduleB = PsiTestUtil.addModule(project, StdModuleTypes.JAVA, 'B', myFixture.tempDirFixture.findOrCreateDir("b")) + + PsiTestUtil.addDependency(myModule, moduleB) + PsiTestUtil.addDependency(moduleB, moduleA) + + myFixture.addFileToProject('a/foo/Foo.java', 'package foo; public interface Foo {}') + myFixture.addFileToProject('b/bar/Bar.java', 'package bar; public class Bar { public static void accept(foo.Foo i) {} }') + + configure() + myFixture.type('\n') + checkResult() } } \ No newline at end of file