diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index a089ba2f9d4b..44878488dea1 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -630,7 +630,7 @@ public class ExtractMethodProcessor implements MatchProvider { private Nullness initNullness() { if (!PsiUtil.isLanguageLevel5OrHigher(myElements[0]) || PsiUtil.resolveClassInType(myReturnType) == null) return null; - final PsiMethod emptyMethod = generateEmptyMethod(getThrownExceptions(), isStatic(), "name"); + final PsiMethod emptyMethod = (PsiMethod)myTargetClass.copy().add(generateEmptyMethod(getThrownExceptions(), isStatic(), "name")); prepareMethodBody(emptyMethod, false); final NullableNotNullManager manager = NullableNotNullManager.getInstance(myProject); final PsiClass nullableAnnotationClass = JavaPsiFacade.getInstance(myProject) diff --git a/java/java-tests/testData/refactoring/extractMethod/InferredNotNull.java b/java/java-tests/testData/refactoring/extractMethod/InferredNotNull.java new file mode 100644 index 000000000000..a3f4a7fea69d --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/InferredNotNull.java @@ -0,0 +1,14 @@ +import org.jetbrains.annotations.NotNull; + +class X { + public static String main(String[] args) { + System.out.println(); + return f(); + + } + + @NotNull + String f() { + return ""; + } +} diff --git a/java/java-tests/testData/refactoring/extractMethod/InferredNotNull_after.java b/java/java-tests/testData/refactoring/extractMethod/InferredNotNull_after.java new file mode 100644 index 000000000000..fab21c49a443 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/InferredNotNull_after.java @@ -0,0 +1,19 @@ +import org.jetbrains.annotations.NotNull; + +class X { + public static String main(String[] args) { + return newMethod(); + + } + + @NotNull + private static String newMethod() { + System.out.println(); + return f(); + } + + @NotNull + String f() { + return ""; + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java index 6622ce2a0d4c..220956b56aa4 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodTest.java @@ -698,6 +698,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase { } } + public void testInferredNotNull() throws Exception { + doTest(); + } + public void testCantPassFieldAsParameter() throws Exception { try { doTestPassFieldsAsParams();