diff --git a/java/java-tests/testData/refactoring/extractMethodNew/FilterAnnotations.java b/java/java-tests/testData/refactoring/extractMethodNew/FilterAnnotations.java new file mode 100644 index 000000000000..b15883c713ec --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/FilterAnnotations.java @@ -0,0 +1,15 @@ +import org.intellij.lang.annotations.Language; +import org.jetbrains.annotations.Nls; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.PARAMETER}) +@interface Anno {} + +class Test { + String test(@Anno @Language("HTML") @Nls String sample){ + sample = "EOF"; + return sample; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/FilterAnnotations_after.java b/java/java-tests/testData/refactoring/extractMethodNew/FilterAnnotations_after.java new file mode 100644 index 000000000000..08d420867e86 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/FilterAnnotations_after.java @@ -0,0 +1,21 @@ +import org.intellij.lang.annotations.Language; +import org.jetbrains.annotations.Nls; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.PARAMETER}) +@interface Anno {} + +class Test { + String test(@Anno @Language("HTML") @Nls String sample){ + sample = "EOF"; + return newMethod(sample); + } + + @Language("HTML") + @Nls + private String newMethod(@Language("HTML") @Nls String sample) { + return sample; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/KeepDeclarationWithAnnotations.java b/java/java-tests/testData/refactoring/extractMethodNew/KeepDeclarationWithAnnotations.java new file mode 100644 index 000000000000..b7c92a553682 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/KeepDeclarationWithAnnotations.java @@ -0,0 +1,13 @@ +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +@Target({ElementType.LOCAL_VARIABLE}) +@interface Anno {} + +class Test { + void test() { + @Anno String s; + s = ""; + s = "external assign"; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/KeepDeclarationWithAnnotations_after.java b/java/java-tests/testData/refactoring/extractMethodNew/KeepDeclarationWithAnnotations_after.java new file mode 100644 index 000000000000..eb99d14116a1 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/KeepDeclarationWithAnnotations_after.java @@ -0,0 +1,18 @@ +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +@Target({ElementType.LOCAL_VARIABLE}) +@interface Anno {} + +class Test { + void test() { + newMethod(); + @Anno String s; + s = "external assign"; + } + + private void newMethod() { + @Anno String s; + s = ""; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/NullabilityAnnotationOverridden.java b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityAnnotationOverridden.java new file mode 100644 index 000000000000..40b812e50c87 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityAnnotationOverridden.java @@ -0,0 +1,9 @@ +import org.jetbrains.annotations.Nullable; + +class Test { + void test(){ + @Nullable String s = null; + if (s == null) return; + System.out.println(s); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/NullabilityAnnotationOverridden_after.java b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityAnnotationOverridden_after.java new file mode 100644 index 000000000000..9e2a84abae75 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityAnnotationOverridden_after.java @@ -0,0 +1,14 @@ +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class Test { + void test(){ + @Nullable String s = null; + if (s == null) return; + newMethod(s); + } + + private void newMethod(@NotNull String s) { + System.out.println(s); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/NullabilityIsTypeAnnotation.java b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityIsTypeAnnotation.java new file mode 100644 index 000000000000..2cc410e6a27b --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityIsTypeAnnotation.java @@ -0,0 +1,13 @@ +import org.jetbrains.annotations.Nullable; + +class Test { + static class A { + static class B {} + } + + void test(){ + @Nullable A.B x = new A.B(); + if (x == null) return; + System.out.println(x); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/NullabilityIsTypeAnnotation_after.java b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityIsTypeAnnotation_after.java new file mode 100644 index 000000000000..36bd6129a0ac --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/NullabilityIsTypeAnnotation_after.java @@ -0,0 +1,18 @@ +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class Test { + static class A { + static class B {} + } + + void test(){ + @Nullable A.B x = new A.B(); + if (x == null) return; + newMethod(x); + } + + private void newMethod(A.@NotNull B x) { + System.out.println(x); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/TypeUseAnnotationsOnParameter.java b/java/java-tests/testData/refactoring/extractMethodNew/SkipCustomAnnotations.java similarity index 100% rename from java/java-tests/testData/refactoring/extractMethodNew/TypeUseAnnotationsOnParameter.java rename to java/java-tests/testData/refactoring/extractMethodNew/SkipCustomAnnotations.java diff --git a/java/java-tests/testData/refactoring/extractMethodNew/TypeUseAnnotationsOnParameter_after.java b/java/java-tests/testData/refactoring/extractMethodNew/SkipCustomAnnotations_after.java similarity index 91% rename from java/java-tests/testData/refactoring/extractMethodNew/TypeUseAnnotationsOnParameter_after.java rename to java/java-tests/testData/refactoring/extractMethodNew/SkipCustomAnnotations_after.java index b4c5ea76d0c3..0515bf2dbc47 100644 --- a/java/java-tests/testData/refactoring/extractMethodNew/TypeUseAnnotationsOnParameter_after.java +++ b/java/java-tests/testData/refactoring/extractMethodNew/SkipCustomAnnotations_after.java @@ -17,7 +17,7 @@ class Test { newMethod(s); } - private void newMethod(@Anno String s) { + private void newMethod(String s) { if (s == null) {} } } diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java index 6e524159779a..0394d503d028 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java @@ -1208,7 +1208,23 @@ public class ExtractMethodNewTest extends LightJavaCodeInsightTestCase { doTest(); } - public void testTypeUseAnnotationsOnParameter() throws Exception { + public void testSkipCustomAnnotations() throws Exception { + doTest(); + } + + public void testNullabilityIsTypeAnnotation() throws Exception { + doTest(); + } + + public void testKeepDeclarationWithAnnotations() throws Exception { + doTest(); + } + + public void testFilterAnnotations() throws Exception { + doTest(); + } + + public void testNullabilityAnnotationOverridden() throws Exception { doTest(); }