Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java')
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java36
1 files changed, 28 insertions, 8 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
index bdf4b7f11d..52a04e8400 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
@@ -8,7 +8,11 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Benjamin Muskalla <b.muskalla@gmx.net> - [quick fix] Quick fix for missing synchronized modifier - https://bugs.eclipse.org/bugs/show_bug.cgi?id=245250
- * Stephan Herrmann - [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
+ * Stephan Herrmann - Contributions for
+ * [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
+ * [quick fix] The fix change parameter type to @Nonnull generated a null change - https://bugs.eclipse.org/400668
+ * [quick fix] don't propose null annotations when those are disabled - https://bugs.eclipse.org/405086
+ * [quickfix] Update null annotation quick fixes for bug 388281 - https://bugs.eclipse.org/395555
*******************************************************************************/
package org.eclipse.jdt.internal.ui.text.correction;
@@ -20,10 +24,12 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.compiler.IProblem;
+import org.eclipse.jdt.internal.corext.fix.NullAnnotationsRewriteOperations.ChangeKind;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.ui.text.java.IInvocationContext;
@@ -248,11 +254,13 @@ public class QuickFixProcessor implements IQuickFixProcessor {
case IProblem.IllegalDefinitionToNonNullParameter:
case IProblem.ParameterLackingNonNullAnnotation:
case IProblem.ParameterLackingNullableAnnotation:
- case IProblem.NonNullLocalVariableComparisonYieldsFalse:
- case IProblem.RedundantNullCheckOnNonNullLocalVariable:
+ case IProblem.SpecdNonNullLocalVariableComparisonYieldsFalse:
+ case IProblem.RedundantNullCheckOnSpecdNonNullLocalVariable:
case IProblem.RedundantNullAnnotation:
case IProblem.UnusedTypeParameter:
case IProblem.NullableFieldReference:
+ case IProblem.ConflictingNullAnnotations:
+ case IProblem.ConflictingInheritedNullAnnotations:
return true;
default:
return SuppressWarningsSubProcessor.hasSuppressWarningsProposal(cu.getJavaProject(), problemId);
@@ -688,8 +696,9 @@ public class QuickFixProcessor implements IQuickFixProcessor {
case IProblem.IllegalReturnNullityRedefinition:
case IProblem.IllegalDefinitionToNonNullParameter:
case IProblem.IllegalRedefinitionToNonNullParameter:
- NullAnnotationsCorrectionProcessor.addNullAnnotationInSignatureProposal(context, problem, proposals, false, true);
- NullAnnotationsCorrectionProcessor.addNullAnnotationInSignatureProposal(context, problem, proposals, true, true);
+ boolean isArgProblem = id != IProblem.IllegalReturnNullityRedefinition;
+ NullAnnotationsCorrectionProcessor.addNullAnnotationInSignatureProposal(context, problem, proposals, ChangeKind.LOCAL, isArgProblem);
+ NullAnnotationsCorrectionProcessor.addNullAnnotationInSignatureProposal(context, problem, proposals, ChangeKind.OVERRIDDEN, isArgProblem);
break;
case IProblem.RequiredNonNullButProvidedSpecdNullable:
case IProblem.RequiredNonNullButProvidedUnknown:
@@ -699,9 +708,15 @@ public class QuickFixProcessor implements IQuickFixProcessor {
case IProblem.RequiredNonNullButProvidedPotentialNull:
case IProblem.ParameterLackingNonNullAnnotation:
case IProblem.ParameterLackingNullableAnnotation:
- case IProblem.NonNullLocalVariableComparisonYieldsFalse:
- case IProblem.RedundantNullCheckOnNonNullLocalVariable:
- NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, proposals);
+ NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, ChangeKind.LOCAL, proposals);
+ NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, ChangeKind.TARGET, proposals);
+ break;
+ case IProblem.SpecdNonNullLocalVariableComparisonYieldsFalse:
+ case IProblem.RedundantNullCheckOnSpecdNonNullLocalVariable:
+ IJavaProject prj = context.getCompilationUnit().getJavaProject();
+ if (prj != null && JavaCore.ENABLED.equals(prj.getOption(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, true))) {
+ NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, ChangeKind.LOCAL, proposals);
+ }
break;
case IProblem.RedundantNullAnnotation:
case IProblem.RedundantNullDefaultAnnotationPackage:
@@ -715,6 +730,11 @@ public class QuickFixProcessor implements IQuickFixProcessor {
case IProblem.NullableFieldReference:
NullAnnotationsCorrectionProcessor.addExtractCheckedLocalProposal(context, problem, proposals);
break;
+ case IProblem.ConflictingNullAnnotations:
+ case IProblem.ConflictingInheritedNullAnnotations:
+ NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, ChangeKind.LOCAL, proposals);
+ NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, ChangeKind.INVERSE, proposals);
+ break;
default:
}
if (JavaModelUtil.is50OrHigher(context.getCompilationUnit().getJavaProject())) {

Back to the top