diff options
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.java | 36 |
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())) { |