From d008da0ec224c2b2b607f25afebcf22237747245 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 15 Jun 2011 16:08:55 +0400 Subject: [PATCH] add constructor parameter from field: annotate as @NotNull if necessary (IDEA-59977) --- .../CreateConstructorParameterFromFieldFix.java | 7 +++++++ .../afterNotNullAnnotated.java | 10 ++++++++++ .../beforeNotNullAnnotated.java | 9 +++++++++ 3 files changed, 26 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterNotNullAnnotated.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeNotNullAnnotated.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java index 78db7e055a24..ee8b7bbe7f46 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.CodeInsightUtilBase; +import com.intellij.codeInsight.NullableNotNullManager; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.codeInsight.daemon.impl.analysis.HighlightControlFlowUtil; import com.intellij.codeInsight.generation.PsiMethodMember; @@ -246,6 +247,12 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction { continue; } } + final NullableNotNullManager nullableManager = NullableNotNullManager.getInstance(field.getProject()); + if (nullableManager.isNotNull(field, false)) { + final PsiAnnotation annotation = JavaPsiFacade.getElementFactory(project).createAnnotationFromText( + "@" + nullableManager.getDefaultNotNull(), field); + parameter.getModifierList().addBefore(annotation, null); + } AssignFieldFromParameterAction.addFieldAssignmentStatement(project, field, parameter, editor); created = true; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterNotNullAnnotated.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterNotNullAnnotated.java new file mode 100644 index 000000000000..ef69bd4f8d2f --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterNotNullAnnotated.java @@ -0,0 +1,10 @@ +// "Add constructor parameter" "true" +import org.jetbrains.annotations.*; +class A { + @NotNull private final Object field; + + A(@NotNull Object field, String... strs) { + this.field = field; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeNotNullAnnotated.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeNotNullAnnotated.java new file mode 100644 index 000000000000..f2c41a859321 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeNotNullAnnotated.java @@ -0,0 +1,9 @@ +// "Add constructor parameter" "true" +import org.jetbrains.annotations.*; +class A { + @NotNull private final Object field; + + A(String... strs) { + } + +} \ No newline at end of file