diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsFix.java index 9786972a40d9..f3a5f90ea1d3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsFix.java @@ -9,6 +9,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.Presentation; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.psi.*; +import com.intellij.psi.util.PsiTypesUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,7 +28,11 @@ public class ChangeExtendsToImplementsFix extends PsiUpdateModCommandAction 0) { + typeToExtend = typeToExtend.annotate(TypeAnnotationProvider.Static.create(PsiAnnotation.EMPTY_ARRAY)); + } + myTypeToExtendFrom = typeToExtend.getCanonicalText(true); } @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithAnnotation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithAnnotation.java new file mode 100644 index 000000000000..25f02f1cbbf8 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithAnnotation.java @@ -0,0 +1,10 @@ +// "Change 'implements B' to 'extends B'" "true-preview" + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + + +class A extends B<@NotNull String, @NotNull Integer> { +} + +class B<@Nullable T, @NotNull K> {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithNestedAnnotation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithNestedAnnotation.java new file mode 100644 index 000000000000..e5a8c2c31346 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithNestedAnnotation.java @@ -0,0 +1,18 @@ +// "Change 'implements B' to 'extends B'" "true-preview" + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class A extends B<@NotNull C, @NotNull Integer> { +} + +class B<@Nullable T, @NotNull K>{} + + +class C<@Nullable T> { +} + diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithNestedFQNAnnotation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithNestedFQNAnnotation.java new file mode 100644 index 000000000000..d0eb4d078987 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/afterWithNestedFQNAnnotation.java @@ -0,0 +1,11 @@ +import org.jetbrains.annotations.NotNull; + +// "Change 'implements B' to 'extends B'" "true-preview" +class A extends B<@NotNull C, @NotNull Integer> { +} + +class B<@org.jetbrains.annotations.Nullable T, @org.jetbrains.annotations.NotNull K>{} + + +class C<@org.jetbrains.annotations.Nullable T> { +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithAnnotation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithAnnotation.java new file mode 100644 index 000000000000..554efadc17c1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithAnnotation.java @@ -0,0 +1,10 @@ +// "Change 'implements B' to 'extends B'" "true-preview" + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + + +class A implements B<@NotNull String, @NotNull Integer> { +} + +class B<@Nullable T, @NotNull K> {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithNestedAnnotation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithNestedAnnotation.java new file mode 100644 index 000000000000..e129585d3257 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithNestedAnnotation.java @@ -0,0 +1,18 @@ +// "Change 'implements B' to 'extends B'" "true-preview" + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class A implements B<@NotNull C, @NotNull Integer>{ +} + +class B<@Nullable T, @NotNull K>{} + + +class C<@Nullable T> { +} + diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithNestedFQNAnnotation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithNestedFQNAnnotation.java new file mode 100644 index 000000000000..3dacbeee21ea --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeExtendsToImplements/beforeWithNestedFQNAnnotation.java @@ -0,0 +1,11 @@ +// "Change 'implements B' to 'extends B'" "true-preview" +class A implements + B<@org.jetbrains.annotations.NotNull C, + @org.jetbrains.annotations.NotNull Integer>{ +} + +class B<@org.jetbrains.annotations.Nullable T, @org.jetbrains.annotations.NotNull K>{} + + +class C<@org.jetbrains.annotations.Nullable T> { +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsTest.java index d8da2f4cf240..6f70c8925ce2 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeExtendsToImplementsTest.java @@ -12,7 +12,7 @@ public class ChangeExtendsToImplementsTest extends LightQuickFixParameterizedTes @Override protected LanguageLevel getLanguageLevel() { - return LanguageLevel.JDK_1_5; + return LanguageLevel.JDK_1_8; } }