Skip to content

Commit c7922c6

Browse files
committed
Add new quick-fixes
- add new methods to ModifierCorrectionSubProcessor and enable quick-fixes that call them in QuickFixProcessor - add new TypeArgumentMismatchSubProcessor class and enable quick-fix that uses it - add new tests to ModifierCorrectionsQuickFixTest and add new TypeArgumentMismatchCorrectionTest
1 parent 7be965c commit c7922c6

5 files changed

Lines changed: 464 additions & 24 deletions

File tree

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

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import org.eclipse.jdt.ls.core.internal.handlers.OrganizeImportsHandler;
7676
import org.eclipse.jdt.ls.core.internal.text.correction.ModifierCorrectionSubProcessor;
7777
import org.eclipse.jdt.ls.core.internal.text.correction.NullAnnotationsCorrectionProcessor;
78+
import org.eclipse.jdt.ls.core.internal.text.correction.TypeArgumentMismatchSubProcessor;
7879
import org.eclipse.jdt.ui.cleanup.CleanUpOptions;
7980
import org.eclipse.jdt.ui.text.java.IInvocationContext;
8081
import org.eclipse.jdt.ui.text.java.IProblemLocation;
@@ -452,34 +453,23 @@ private void process(CodeActionParams params, IInvocationContext context, IProbl
452453
case IProblem.DeadCode:
453454
LocalCorrectionsSubProcessor.getUnreachableCodeProposals(context, problem, proposals);
454455
break;
455-
// case IProblem.DiamondNotBelow17:
456-
// TypeArgumentMismatchSubProcessor.getInferDiamondArgumentsProposal(context,
457-
// problem, proposals);
458-
// //$FALL-THROUGH$
459-
// case IProblem.LambdaExpressionNotBelow18:
460-
// LocalCorrectionsSubProcessor.getConvertLambdaToAnonymousClassCreationsProposals(context,
461-
// problem, proposals);
462-
// //$FALL-THROUGH$
463-
// case IProblem.NonGenericType:
464-
// TypeArgumentMismatchSubProcessor.removeMismatchedArguments(context,
465-
// problem, proposals);
466-
// break;
467-
// case IProblem.MissingOverrideAnnotation:
468-
// case
469-
// IProblem.MissingOverrideAnnotationForInterfaceMethodImplementation:
470-
// ModifierCorrectionSubProcessor.addOverrideAnnotationProposal(context,
471-
// problem, proposals);
472-
// break;
456+
case IProblem.NonGenericType:
457+
TypeArgumentMismatchSubProcessor.removeMismatchedArguments(context, problem, proposals);
458+
break;
459+
case IProblem.MissingOverrideAnnotation:
460+
case IProblem.MissingOverrideAnnotationForInterfaceMethodImplementation:
461+
ModifierCorrectionSubProcessor.addOverrideAnnotationProposal(context, problem, proposals);
462+
break;
473463
case IProblem.MethodMustOverride:
474464
case IProblem.MethodMustOverrideOrImplement:
475465
ModifierCorrectionSubProcessor.removeOverrideAnnotationProposal(context, problem, proposals);
476466
break;
477-
// case IProblem.FieldMissingDeprecatedAnnotation:
478-
// case IProblem.MethodMissingDeprecatedAnnotation:
479-
// case IProblem.TypeMissingDeprecatedAnnotation:
480-
// ModifierCorrectionSubProcessor.addDeprecatedAnnotationProposal(context,
481-
// problem, proposals);
482-
// break;
467+
case IProblem.FieldMissingDeprecatedAnnotation:
468+
case IProblem.MethodMissingDeprecatedAnnotation:
469+
case IProblem.TypeMissingDeprecatedAnnotation:
470+
case IProblem.MemberOfDeprecatedTypeNotDeprecated:
471+
ModifierCorrectionSubProcessor.addDeprecatedAnnotationProposal(context, problem, proposals);
472+
break;
483473
case IProblem.OverridingDeprecatedMethod:
484474
case IProblem.OverridingDeprecatedSinceVersionMethod:
485475
case IProblem.OverridingTerminallyDeprecatedMethod:

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/text/correction/ModifierCorrectionSubProcessor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@
3838

3939
public class ModifierCorrectionSubProcessor extends ModifierCorrectionSubProcessorCore<ProposalKindWrapper> {
4040

41+
public static void addOverrideAnnotationProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
42+
new ModifierCorrectionSubProcessor().getOverrideAnnotationProposal(context, problem, proposals);
43+
}
44+
45+
public static void addDeprecatedAnnotationProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
46+
new ModifierCorrectionSubProcessor().getDeprecatedAnnotationProposal(context, problem, proposals);
47+
}
48+
4149
public static void addNonAccessibleReferenceProposal(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals, int kind, int relevance) throws CoreException {
4250
new ModifierCorrectionSubProcessor().getNonAccessibleReferenceProposal(context, problem, proposals, kind, relevance);
4351
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2026 IBM Corporation and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License 2.0
5+
* which accompanies this distribution, and is available at
6+
* http://www.eclipse.org/legal/epl-2.0
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* IBM Corporation - initial API and implementation
12+
* Red Hat Inc. - modified for jdt.ls
13+
*******************************************************************************/
14+
package org.eclipse.jdt.ls.core.internal.text.correction;
15+
16+
import java.util.Collection;
17+
18+
import org.eclipse.jdt.internal.ui.text.correction.TypeArgumentMismatchBaseSubProcessor;
19+
import org.eclipse.jdt.ls.core.internal.corrections.ProposalKindWrapper;
20+
import org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler;
21+
import org.eclipse.jdt.ui.text.java.IInvocationContext;
22+
import org.eclipse.jdt.ui.text.java.IProblemLocation;
23+
import org.eclipse.jdt.ui.text.java.correction.ASTRewriteCorrectionProposalCore;
24+
import org.eclipse.lsp4j.CodeActionKind;
25+
26+
public class TypeArgumentMismatchSubProcessor extends TypeArgumentMismatchBaseSubProcessor<ProposalKindWrapper> {
27+
28+
public static void removeMismatchedArguments(IInvocationContext context, IProblemLocation problem, Collection<ProposalKindWrapper> proposals) {
29+
new TypeArgumentMismatchSubProcessor().addRemoveMismatchedArgumentProposals(context, problem, proposals);
30+
}
31+
32+
private TypeArgumentMismatchSubProcessor() {
33+
}
34+
35+
@Override
36+
public ProposalKindWrapper astRewriteCorrectionProposalToT(ASTRewriteCorrectionProposalCore core) {
37+
return CodeActionHandler.wrap(core, CodeActionKind.QuickFix);
38+
}
39+
40+
}

0 commit comments

Comments
 (0)