Skip to content

Commit

Permalink
Add some more quick fixes from LocalCorrectionsBaseSubProcessor.
Browse files Browse the repository at this point in the history
- UninitializedLocalVariable, UninitializedLocalVariableHintMissingDefault
  -> addUninitializedLocalVariableProposal
- UnusedTypeParameter -> addUnusedTypeParameterProposal
- DuplicateInheritedDefaultMethods, InheritedDefaultMethodConflictsWithOtherInherited
  -> addOverrideDefaultMethodProposal
- Fix quick fixes that require diagnostic data (IProblem argumments)

Signed-off-by: Roland Grunberg <rgrunber@redhat.com>
  • Loading branch information
rgrunber committed Jan 29, 2025
1 parent fffdb70 commit 9356c22
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -332,11 +332,10 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
// ModifierCorrectionSubProcessor.addNonFinalLocalProposal(context,
// problem, proposals);
// break;
// case IProblem.UninitializedLocalVariable:
// case IProblem.UninitializedLocalVariableHintMissingDefault:
// LocalCorrectionsSubProcessor.addUninitializedLocalVariableProposal(context,
// problem, proposals);
// break;
case IProblem.UninitializedLocalVariable:
case IProblem.UninitializedLocalVariableHintMissingDefault:
LocalCorrectionsSubProcessor.addUninitializedLocalVariableProposal(context, problem, proposals);
break;
case IProblem.UnhandledExceptionInDefaultConstructor:
case IProblem.UndefinedConstructorInDefaultConstructor:
case IProblem.NotVisibleConstructorInDefaultConstructor:
Expand Down Expand Up @@ -644,10 +643,9 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
// NullAnnotationsCorrectionProcessor.addRemoveRedundantAnnotationProposal(context,
// problem, proposals);
// break;
// case IProblem.UnusedTypeParameter:
// LocalCorrectionsSubProcessor.addUnusedTypeParameterProposal(context,
// problem, proposals);
// break;
case IProblem.UnusedTypeParameter:
LocalCorrectionsSubProcessor.addUnusedTypeParameterProposal(context, problem, proposals);
break;
// case IProblem.NullableFieldReference:
// NullAnnotationsCorrectionProcessor.addExtractCheckedLocalProposal(context,
// problem, proposals);
Expand All @@ -664,11 +662,10 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
case IProblem.IllegalQualifiedEnumConstantLabel:
LocalCorrectionsSubProcessor.addIllegalQualifiedEnumConstantLabelProposal(context, problem, proposals);
break;
// case IProblem.DuplicateInheritedDefaultMethods:
// case IProblem.InheritedDefaultMethodConflictsWithOtherInherited:
// LocalCorrectionsSubProcessor.addOverrideDefaultMethodProposal(context,
// problem, proposals);
// break;
case IProblem.DuplicateInheritedDefaultMethods:
case IProblem.InheritedDefaultMethodConflictsWithOtherInherited:
LocalCorrectionsSubProcessor.addOverrideDefaultMethodProposal(context, problem, proposals);
break;
// case IProblem.PotentialNullLocalVariableReference:
// IJavaProject prj2= context.getCompilationUnit().getJavaProject();
// if (prj2 != null &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
import org.eclipse.jdt.internal.corext.fix.UnusedCodeFixCore;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.internal.ui.fix.CodeStyleCleanUpCore;
import org.eclipse.jdt.internal.ui.text.correction.IProposalRelevance;
import org.eclipse.jdt.internal.ui.text.correction.LocalCorrectionsBaseSubProcessor;
import org.eclipse.jdt.internal.ui.text.correction.ProblemLocation;
import org.eclipse.jdt.internal.ui.text.correction.proposals.ChangeMethodSignatureProposalCore;
Expand Down Expand Up @@ -477,6 +478,24 @@ public static void addVariableReferenceProposal(IInvocationContext context, IPro
new LocalCorrectionsSubProcessor().getVariableReferenceProposal(context, problem, proposals);
}

public static void addUninitializedLocalVariableProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
new LocalCorrectionsSubProcessor().getUninitializedLocalVariableProposal(context, problem, proposals);
}

public static void addOverrideDefaultMethodProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
new LocalCorrectionsSubProcessor().getOverrideDefaultMethodProposal(context, problem, proposals);
}

public static void addUnusedTypeParameterProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
UnusedCodeFixCore fix = UnusedCodeFixCore.createUnusedTypeParameterFix(context.getASTRoot(), problem);
if (fix != null) {
FixCorrectionProposalCore proposal = new FixCorrectionProposalCore(fix, fix.getCleanUp(), IProposalRelevance.UNUSED_MEMBER, context);
proposals.add(CodeActionHandler.wrap(proposal, CodeActionKind.QuickFix));
}

JavadocTagsSubProcessor.getUnusedAndUndocumentedParameterOrExceptionProposals(context, problem, proposals);
}

public static void getMissingEnumConstantCaseProposals(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
for (ProposalKindWrapper proposal : proposals) {
if (CorrectionMessages.LocalCorrectionsSubProcessor_add_missing_cases_description.equals(proposal.getProposal().getName())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,11 @@ public static List<Diagnostic> toDiagnosticsArray(IOpenable openable, List<IProb
diag.setSeverity(convertSeverity(problem));
diag.setRange(convertRange(openable, problem));
Map<String, Object> data = new HashMap<>();
if (problem.getID() == IProblem.UndefinedName || problem.getID() == IProblem.UndefinedType || problem.getID() == IProblem.UninitializedBlankFinalField) {
if (problem.getID() == IProblem.UndefinedName
|| problem.getID() == IProblem.UndefinedType
|| problem.getID() == IProblem.UninitializedBlankFinalField
|| problem.getID() == IProblem.DuplicateInheritedDefaultMethods
|| problem.getID() == IProblem.InheritedDefaultMethodConflictsWithOtherInherited) {
data.put(DIAG_ARGUMENTS, problem.getArguments());
}
if (isDiagnosticTagSupported) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,10 @@ public static IProblemLocation[] getProblemLocationCores(ICompilationUnit unit,
arguments.add(e.getAsString());
}
} else if (args instanceof String[] args1) {
// Needed for test cases (no LSP4J transmission)
arguments = Arrays.asList(args1);
} else if (args instanceof List args1) {
arguments = args1;
}
Object ecjProblemId = data.get(BaseDiagnosticsHandler.DIAG_ECJ_PROBLEM_ID);
if (ecjProblemId instanceof String id) {
Expand Down

0 comments on commit 9356c22

Please sign in to comment.