Skip to content

Commit 9356c22

Browse files
committed
Add some more quick fixes from LocalCorrectionsBaseSubProcessor.
- UninitializedLocalVariable, UninitializedLocalVariableHintMissingDefault -> addUninitializedLocalVariableProposal - UnusedTypeParameter -> addUnusedTypeParameterProposal - DuplicateInheritedDefaultMethods, InheritedDefaultMethodConflictsWithOtherInherited -> addOverrideDefaultMethodProposal - Fix quick fixes that require diagnostic data (IProblem argumments) Signed-off-by: Roland Grunberg <[email protected]>
1 parent fffdb70 commit 9356c22

File tree

4 files changed

+38
-15
lines changed

4 files changed

+38
-15
lines changed

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/corrections/QuickFixProcessor.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,10 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
332332
// ModifierCorrectionSubProcessor.addNonFinalLocalProposal(context,
333333
// problem, proposals);
334334
// break;
335-
// case IProblem.UninitializedLocalVariable:
336-
// case IProblem.UninitializedLocalVariableHintMissingDefault:
337-
// LocalCorrectionsSubProcessor.addUninitializedLocalVariableProposal(context,
338-
// problem, proposals);
339-
// break;
335+
case IProblem.UninitializedLocalVariable:
336+
case IProblem.UninitializedLocalVariableHintMissingDefault:
337+
LocalCorrectionsSubProcessor.addUninitializedLocalVariableProposal(context, problem, proposals);
338+
break;
340339
case IProblem.UnhandledExceptionInDefaultConstructor:
341340
case IProblem.UndefinedConstructorInDefaultConstructor:
342341
case IProblem.NotVisibleConstructorInDefaultConstructor:
@@ -644,10 +643,9 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
644643
// NullAnnotationsCorrectionProcessor.addRemoveRedundantAnnotationProposal(context,
645644
// problem, proposals);
646645
// break;
647-
// case IProblem.UnusedTypeParameter:
648-
// LocalCorrectionsSubProcessor.addUnusedTypeParameterProposal(context,
649-
// problem, proposals);
650-
// break;
646+
case IProblem.UnusedTypeParameter:
647+
LocalCorrectionsSubProcessor.addUnusedTypeParameterProposal(context, problem, proposals);
648+
break;
651649
// case IProblem.NullableFieldReference:
652650
// NullAnnotationsCorrectionProcessor.addExtractCheckedLocalProposal(context,
653651
// problem, proposals);
@@ -664,11 +662,10 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
664662
case IProblem.IllegalQualifiedEnumConstantLabel:
665663
LocalCorrectionsSubProcessor.addIllegalQualifiedEnumConstantLabelProposal(context, problem, proposals);
666664
break;
667-
// case IProblem.DuplicateInheritedDefaultMethods:
668-
// case IProblem.InheritedDefaultMethodConflictsWithOtherInherited:
669-
// LocalCorrectionsSubProcessor.addOverrideDefaultMethodProposal(context,
670-
// problem, proposals);
671-
// break;
665+
case IProblem.DuplicateInheritedDefaultMethods:
666+
case IProblem.InheritedDefaultMethodConflictsWithOtherInherited:
667+
LocalCorrectionsSubProcessor.addOverrideDefaultMethodProposal(context, problem, proposals);
668+
break;
672669
// case IProblem.PotentialNullLocalVariableReference:
673670
// IJavaProject prj2= context.getCompilationUnit().getJavaProject();
674671
// if (prj2 != null &&

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/corrections/proposals/LocalCorrectionsSubProcessor.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import org.eclipse.jdt.internal.corext.fix.UnusedCodeFixCore;
7878
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
7979
import org.eclipse.jdt.internal.ui.fix.CodeStyleCleanUpCore;
80+
import org.eclipse.jdt.internal.ui.text.correction.IProposalRelevance;
8081
import org.eclipse.jdt.internal.ui.text.correction.LocalCorrectionsBaseSubProcessor;
8182
import org.eclipse.jdt.internal.ui.text.correction.ProblemLocation;
8283
import org.eclipse.jdt.internal.ui.text.correction.proposals.ChangeMethodSignatureProposalCore;
@@ -477,6 +478,24 @@ public static void addVariableReferenceProposal(IInvocationContext context, IPro
477478
new LocalCorrectionsSubProcessor().getVariableReferenceProposal(context, problem, proposals);
478479
}
479480

481+
public static void addUninitializedLocalVariableProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
482+
new LocalCorrectionsSubProcessor().getUninitializedLocalVariableProposal(context, problem, proposals);
483+
}
484+
485+
public static void addOverrideDefaultMethodProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
486+
new LocalCorrectionsSubProcessor().getOverrideDefaultMethodProposal(context, problem, proposals);
487+
}
488+
489+
public static void addUnusedTypeParameterProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
490+
UnusedCodeFixCore fix = UnusedCodeFixCore.createUnusedTypeParameterFix(context.getASTRoot(), problem);
491+
if (fix != null) {
492+
FixCorrectionProposalCore proposal = new FixCorrectionProposalCore(fix, fix.getCleanUp(), IProposalRelevance.UNUSED_MEMBER, context);
493+
proposals.add(CodeActionHandler.wrap(proposal, CodeActionKind.QuickFix));
494+
}
495+
496+
JavadocTagsSubProcessor.getUnusedAndUndocumentedParameterOrExceptionProposals(context, problem, proposals);
497+
}
498+
480499
public static void getMissingEnumConstantCaseProposals(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
481500
for (ProposalKindWrapper proposal : proposals) {
482501
if (CorrectionMessages.LocalCorrectionsSubProcessor_add_missing_cases_description.equals(proposal.getProposal().getName())) {

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/BaseDiagnosticsHandler.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,11 @@ public static List<Diagnostic> toDiagnosticsArray(IOpenable openable, List<IProb
256256
diag.setSeverity(convertSeverity(problem));
257257
diag.setRange(convertRange(openable, problem));
258258
Map<String, Object> data = new HashMap<>();
259-
if (problem.getID() == IProblem.UndefinedName || problem.getID() == IProblem.UndefinedType || problem.getID() == IProblem.UninitializedBlankFinalField) {
259+
if (problem.getID() == IProblem.UndefinedName
260+
|| problem.getID() == IProblem.UndefinedType
261+
|| problem.getID() == IProblem.UninitializedBlankFinalField
262+
|| problem.getID() == IProblem.DuplicateInheritedDefaultMethods
263+
|| problem.getID() == IProblem.InheritedDefaultMethodConflictsWithOtherInherited) {
260264
data.put(DIAG_ARGUMENTS, problem.getArguments());
261265
}
262266
if (isDiagnosticTagSupported) {

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/CodeActionHandler.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,10 @@ public static IProblemLocation[] getProblemLocationCores(ICompilationUnit unit,
358358
arguments.add(e.getAsString());
359359
}
360360
} else if (args instanceof String[] args1) {
361+
// Needed for test cases (no LSP4J transmission)
361362
arguments = Arrays.asList(args1);
363+
} else if (args instanceof List args1) {
364+
arguments = args1;
362365
}
363366
Object ecjProblemId = data.get(BaseDiagnosticsHandler.DIAG_ECJ_PROBLEM_ID);
364367
if (ecjProblemId instanceof String id) {

0 commit comments

Comments
 (0)