Skip to content

Commit 8c03ac7

Browse files
NikolasKomonenfbricon
authored andcommitted
Adds quickfix for non-accessible references
Fixes #440 Signed-off-by: Nikolas Komonen <[email protected]>
1 parent 85fa714 commit 8c03ac7

File tree

2 files changed

+276
-113
lines changed

2 files changed

+276
-113
lines changed

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

+105-113
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ private static int moveBack(int offset, int start, String ignoreCharacters, ICom
6262
return start;
6363
}
6464

65-
public List<ChangeCorrectionProposal> getCorrections(IInvocationContext context, IProblemLocationCore[] locations)
66-
throws CoreException {
65+
public List<ChangeCorrectionProposal> getCorrections(IInvocationContext context, IProblemLocationCore[] locations) throws CoreException {
6766
if (locations == null || locations.length == 0) {
6867
return Collections.emptyList();
6968
}
@@ -80,76 +79,75 @@ public List<ChangeCorrectionProposal> getCorrections(IInvocationContext context,
8079
return resultingCollections;
8180
}
8281

83-
private void process(IInvocationContext context, IProblemLocationCore problem,
84-
Collection<ChangeCorrectionProposal> proposals) throws CoreException {
82+
private void process(IInvocationContext context, IProblemLocationCore problem, Collection<ChangeCorrectionProposal> proposals) throws CoreException {
8583
int id = problem.getProblemId();
8684
if (id == 0) { // no proposals for none-problem locations
8785
return;
8886
}
8987
switch (id) {
90-
case IProblem.UnterminatedString:
91-
String quoteLabel = CorrectionMessages.JavaCorrectionProcessor_addquote_description;
92-
int pos = moveBack(problem.getOffset() + problem.getLength(), problem.getOffset(), "\n\r", //$NON-NLS-1$
93-
context.getCompilationUnit());
94-
proposals.add(new ReplaceCorrectionProposal(quoteLabel, context.getCompilationUnit(), pos, 0, "\"", //$NON-NLS-1$
95-
IProposalRelevance.ADD_QUOTE));
96-
break;
97-
case IProblem.UnusedImport:
98-
case IProblem.DuplicateImport:
99-
case IProblem.CannotImportPackage:
100-
case IProblem.ConflictingImport:
101-
case IProblem.ImportNotFound:
102-
ReorgCorrectionsSubProcessor.removeImportStatementProposals(context, problem, proposals);
103-
break;
104-
case IProblem.PublicClassMustMatchFileName:
105-
ReorgCorrectionsSubProcessor.getWrongTypeNameProposals(context, problem, proposals);
106-
break;
107-
case IProblem.PackageIsNotExpectedPackage:
108-
ReorgCorrectionsSubProcessor.getWrongPackageDeclNameProposals(context, problem, proposals);
109-
break;
88+
case IProblem.UnterminatedString:
89+
String quoteLabel = CorrectionMessages.JavaCorrectionProcessor_addquote_description;
90+
int pos = moveBack(problem.getOffset() + problem.getLength(), problem.getOffset(), "\n\r", //$NON-NLS-1$
91+
context.getCompilationUnit());
92+
proposals.add(new ReplaceCorrectionProposal(quoteLabel, context.getCompilationUnit(), pos, 0, "\"", //$NON-NLS-1$
93+
IProposalRelevance.ADD_QUOTE));
94+
break;
95+
case IProblem.UnusedImport:
96+
case IProblem.DuplicateImport:
97+
case IProblem.CannotImportPackage:
98+
case IProblem.ConflictingImport:
99+
case IProblem.ImportNotFound:
100+
ReorgCorrectionsSubProcessor.removeImportStatementProposals(context, problem, proposals);
101+
break;
102+
case IProblem.PublicClassMustMatchFileName:
103+
ReorgCorrectionsSubProcessor.getWrongTypeNameProposals(context, problem, proposals);
104+
break;
105+
case IProblem.PackageIsNotExpectedPackage:
106+
ReorgCorrectionsSubProcessor.getWrongPackageDeclNameProposals(context, problem, proposals);
107+
break;
110108

111-
case IProblem.UndefinedMethod:
112-
UnresolvedElementsSubProcessor.getMethodProposals(context, problem, false, proposals);
113-
break;
114-
case IProblem.UndefinedConstructor:
115-
UnresolvedElementsSubProcessor.getConstructorProposals(context, problem, proposals);
116-
break;
117-
case IProblem.UndefinedAnnotationMember:
118-
UnresolvedElementsSubProcessor.getAnnotationMemberProposals(context, problem, proposals);
119-
break;
120-
case IProblem.ParameterMismatch:
121-
UnresolvedElementsSubProcessor.getMethodProposals(context, problem, true, proposals);
122-
break;
109+
case IProblem.UndefinedMethod:
110+
UnresolvedElementsSubProcessor.getMethodProposals(context, problem, false, proposals);
111+
break;
112+
case IProblem.UndefinedConstructor:
113+
UnresolvedElementsSubProcessor.getConstructorProposals(context, problem, proposals);
114+
break;
115+
case IProblem.UndefinedAnnotationMember:
116+
UnresolvedElementsSubProcessor.getAnnotationMemberProposals(context, problem, proposals);
117+
break;
118+
case IProblem.ParameterMismatch:
119+
UnresolvedElementsSubProcessor.getMethodProposals(context, problem, true, proposals);
120+
break;
123121
// case IProblem.MethodButWithConstructorName:
124122
// ReturnTypeSubProcessor.addMethodWithConstrNameProposals(context,
125123
// problem, proposals);
126124
// break;
127-
case IProblem.UndefinedField:
128-
case IProblem.UndefinedName:
129-
case IProblem.UnresolvedVariable:
130-
UnresolvedElementsSubProcessor.getVariableProposals(context, problem, null, proposals);
131-
break;
132-
case IProblem.AmbiguousType:
133-
case IProblem.JavadocAmbiguousType:
134-
UnresolvedElementsSubProcessor.getAmbiguousTypeReferenceProposals(context, problem, proposals);
135-
break;
136-
case IProblem.UndefinedType:
137-
case IProblem.JavadocUndefinedType:
138-
UnresolvedElementsSubProcessor.getTypeProposals(context, problem, proposals);
139-
break;
140-
case IProblem.TypeMismatch:
141-
case IProblem.ReturnTypeMismatch:
142-
TypeMismatchSubProcessor.addTypeMismatchProposals(context, problem, proposals);
143-
break;
144-
case IProblem.IncompatibleTypesInForeach:
145-
TypeMismatchSubProcessor.addTypeMismatchInForEachProposals(context, problem, proposals);
146-
break;
147-
case IProblem.IncompatibleReturnType:
148-
TypeMismatchSubProcessor.addIncompatibleReturnTypeProposals(context, problem, proposals);
149-
break;
150-
case IProblem.IncompatibleExceptionInThrowsClause:
151-
TypeMismatchSubProcessor.addIncompatibleThrowsProposals(context, problem, proposals);
152-
break;
125+
case IProblem.UndefinedField:
126+
case IProblem.UndefinedName:
127+
case IProblem.UnresolvedVariable:
128+
UnresolvedElementsSubProcessor.getVariableProposals(context, problem, null, proposals);
129+
break;
130+
case IProblem.AmbiguousType:
131+
case IProblem.JavadocAmbiguousType:
132+
UnresolvedElementsSubProcessor.getAmbiguousTypeReferenceProposals(context, problem, proposals);
133+
break;
134+
case IProblem.UndefinedType:
135+
case IProblem.JavadocUndefinedType:
136+
UnresolvedElementsSubProcessor.getTypeProposals(context, problem, proposals);
137+
break;
138+
case IProblem.TypeMismatch:
139+
case IProblem.ReturnTypeMismatch:
140+
TypeMismatchSubProcessor.addTypeMismatchProposals(context, problem, proposals);
141+
break;
142+
case IProblem.IncompatibleTypesInForeach:
143+
TypeMismatchSubProcessor.addTypeMismatchInForEachProposals(context, problem, proposals);
144+
break;
145+
case IProblem.IncompatibleReturnType:
146+
TypeMismatchSubProcessor.addIncompatibleReturnTypeProposals(context, problem, proposals);
147+
break;
148+
case IProblem.IncompatibleExceptionInThrowsClause:
149+
TypeMismatchSubProcessor.addIncompatibleThrowsProposals(context, problem, proposals);
150+
break;
153151
case IProblem.UnhandledException:
154152
case IProblem.UnhandledExceptionOnAutoClose:
155153
LocalCorrectionsSubProcessor.addUncaughtExceptionProposals(context, problem, proposals);
@@ -163,23 +161,19 @@ private void process(IInvocationContext context, IProblemLocationCore problem,
163161
// LocalCorrectionsSubProcessor.addRedundantSuperInterfaceProposal(context,
164162
// problem, proposals);
165163
// break;
166-
case IProblem.VoidMethodReturnsValue:
167-
ReturnTypeSubProcessor.addVoidMethodReturnsProposals(context,
168-
problem, proposals);
169-
break;
170-
case IProblem.MethodReturnsVoid:
171-
ReturnTypeSubProcessor.addMethodReturnsVoidProposals(context, problem,
172-
proposals);
173-
break;
174-
case IProblem.MissingReturnType:
175-
ReturnTypeSubProcessor.addMissingReturnTypeProposals(context,
176-
problem, proposals);
177-
break;
178-
case IProblem.ShouldReturnValue:
179-
case IProblem.ShouldReturnValueHintMissingDefault:
180-
ReturnTypeSubProcessor.addMissingReturnStatementProposals(context,
181-
problem, proposals);
182-
break;
164+
case IProblem.VoidMethodReturnsValue:
165+
ReturnTypeSubProcessor.addVoidMethodReturnsProposals(context, problem, proposals);
166+
break;
167+
case IProblem.MethodReturnsVoid:
168+
ReturnTypeSubProcessor.addMethodReturnsVoidProposals(context, problem, proposals);
169+
break;
170+
case IProblem.MissingReturnType:
171+
ReturnTypeSubProcessor.addMissingReturnTypeProposals(context, problem, proposals);
172+
break;
173+
case IProblem.ShouldReturnValue:
174+
case IProblem.ShouldReturnValueHintMissingDefault:
175+
ReturnTypeSubProcessor.addMissingReturnStatementProposals(context, problem, proposals);
176+
break;
183177
// case IProblem.NonExternalizedStringLiteral:
184178
// LocalCorrectionsSubProcessor.addNLSProposals(context, problem,
185179
// proposals);
@@ -196,14 +190,12 @@ private void process(IInvocationContext context, IProblemLocationCore problem,
196190
// LocalCorrectionsSubProcessor.addCorrectAccessToStaticProposals(context,
197191
// problem, proposals);
198192
// break;
199-
// case IProblem.StaticMethodRequested:
200-
// case IProblem.NonStaticFieldFromStaticInvocation:
201-
// case IProblem.InstanceMethodDuringConstructorInvocation:
202-
// case IProblem.InstanceFieldDuringConstructorInvocation:
203-
// ModifierCorrectionSubProcessor.addNonAccessibleReferenceProposal(context,
204-
// problem, proposals, ModifierCorrectionSubProcessor.TO_STATIC,
205-
// IProposalRelevance.CHANGE_MODIFIER_TO_STATIC);
206-
// break;
193+
case IProblem.StaticMethodRequested:
194+
case IProblem.NonStaticFieldFromStaticInvocation:
195+
case IProblem.InstanceMethodDuringConstructorInvocation:
196+
case IProblem.InstanceFieldDuringConstructorInvocation:
197+
ModifierCorrectionSubProcessor.addNonAccessibleReferenceProposal(context, problem, proposals, ModifierCorrectionSubProcessor.TO_STATIC, IProposalRelevance.CHANGE_MODIFIER_TO_STATIC);
198+
break;
207199
// case IProblem.NonBlankFinalLocalAssignment:
208200
// case IProblem.DuplicateFinalLocalInitialization:
209201
// case IProblem.FinalFieldAssignment:
@@ -347,26 +339,26 @@ private void process(IInvocationContext context, IProblemLocationCore problem,
347339
// proposals.add(new TaskMarkerProposal(context.getCompilationUnit(),
348340
// problem, 10));
349341
// break;
350-
case IProblem.JavadocMissing:
351-
JavadocTagsSubProcessor.getMissingJavadocCommentProposals(context, problem, proposals);
352-
break;
353-
case IProblem.JavadocMissingParamTag:
354-
case IProblem.JavadocMissingReturnTag:
355-
case IProblem.JavadocMissingThrowsTag:
356-
JavadocTagsSubProcessor.getMissingJavadocTagProposals(context, problem, proposals);
357-
break;
358-
case IProblem.JavadocInvalidThrowsClassName:
359-
case IProblem.JavadocDuplicateThrowsClassName:
360-
case IProblem.JavadocDuplicateReturnTag:
361-
case IProblem.JavadocDuplicateParamName:
362-
case IProblem.JavadocInvalidParamName:
363-
case IProblem.JavadocUnexpectedTag:
364-
case IProblem.JavadocInvalidTag:
365-
JavadocTagsSubProcessor.getRemoveJavadocTagProposals(context, problem, proposals);
366-
break;
367-
case IProblem.JavadocInvalidMemberTypeQualification:
368-
JavadocTagsSubProcessor.getInvalidQualificationProposals(context, problem, proposals);
369-
break;
342+
case IProblem.JavadocMissing:
343+
JavadocTagsSubProcessor.getMissingJavadocCommentProposals(context, problem, proposals);
344+
break;
345+
case IProblem.JavadocMissingParamTag:
346+
case IProblem.JavadocMissingReturnTag:
347+
case IProblem.JavadocMissingThrowsTag:
348+
JavadocTagsSubProcessor.getMissingJavadocTagProposals(context, problem, proposals);
349+
break;
350+
case IProblem.JavadocInvalidThrowsClassName:
351+
case IProblem.JavadocDuplicateThrowsClassName:
352+
case IProblem.JavadocDuplicateReturnTag:
353+
case IProblem.JavadocDuplicateParamName:
354+
case IProblem.JavadocInvalidParamName:
355+
case IProblem.JavadocUnexpectedTag:
356+
case IProblem.JavadocInvalidTag:
357+
JavadocTagsSubProcessor.getRemoveJavadocTagProposals(context, problem, proposals);
358+
break;
359+
case IProblem.JavadocInvalidMemberTypeQualification:
360+
JavadocTagsSubProcessor.getInvalidQualificationProposals(context, problem, proposals);
361+
break;
370362
//
371363
// case IProblem.LocalVariableHidingLocalVariable:
372364
// case IProblem.LocalVariableHidingField:
@@ -385,9 +377,9 @@ private void process(IInvocationContext context, IProblemLocationCore problem,
385377
// LocalCorrectionsSubProcessor.addInvalidVariableNameProposals(context,
386378
// problem, proposals);
387379
// break;
388-
case IProblem.NoMessageSendOnArrayType:
389-
UnresolvedElementsSubProcessor.getArrayAccessProposals(context, problem, proposals);
390-
break;
380+
case IProblem.NoMessageSendOnArrayType:
381+
UnresolvedElementsSubProcessor.getArrayAccessProposals(context, problem, proposals);
382+
break;
391383
// case IProblem.InvalidOperator:
392384
// LocalCorrectionsSubProcessor.getInvalidOperatorProposals(context,
393385
// problem, proposals);
@@ -641,9 +633,9 @@ private void process(IInvocationContext context, IProblemLocationCore problem,
641633
// problem, proposals);
642634
// break;
643635

644-
default:
645-
String str = problem.toString();
646-
System.out.println(str);
636+
default:
637+
String str = problem.toString();
638+
System.out.println(str);
647639
}
648640
// if
649641
// (JavaModelUtil.is50OrHigher(context.getCompilationUnit().getJavaProject()))

0 commit comments

Comments
 (0)