Cleanup ScriptCompletionEngine.
Generify some parts and remove not used private method.
Change-Id: Ib3073b6973f43ad1ecf287196cc3ff4c3ac39bf9
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/core/plugins/org.eclipse.dltk.core/codeassist/org/eclipse/dltk/codeassist/ScriptCompletionEngine.java b/core/plugins/org.eclipse.dltk.core/codeassist/org/eclipse/dltk/codeassist/ScriptCompletionEngine.java
index f2943bc..934d4cb 100644
--- a/core/plugins/org.eclipse.dltk.core/codeassist/org/eclipse/dltk/codeassist/ScriptCompletionEngine.java
+++ b/core/plugins/org.eclipse.dltk.core/codeassist/org/eclipse/dltk/codeassist/ScriptCompletionEngine.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -35,8 +35,7 @@
* Abstact base class of the {@link ICompletionEngine} implementations. Provides
* some functions which might be useful by the implementors.
*/
-public abstract class ScriptCompletionEngine extends Engine implements
- ICompletionEngine {
+public abstract class ScriptCompletionEngine extends Engine implements ICompletionEngine {
protected static final boolean DEBUG = DLTKCore.DEBUG_COMPLETION;
protected static final boolean VERBOSE = DEBUG;
@@ -55,7 +54,7 @@
* Start of the proposal replace range. Initialized by
* {@link #setSourceRange(int, int)} and used in
* {@link #accept(CompletionProposal)}
- *
+ *
* <p>
* NOTE: Visibility of this member is going to be changed, your should not
* access it directly.
@@ -67,7 +66,7 @@
* End of the proposal replace range. Initialized by
* {@link #setSourceRange(int, int)} and used in
* {@link #accept(CompletionProposal)}.
- *
+ *
* <p>
* NOTE: Visibility of this member is going to be changed, your should not
* access it directly.
@@ -96,10 +95,9 @@
private IProgressMonitor progressMonitor;
public ScriptCompletionEngine(/*
- * ISearchableEnvironment nameEnvironment,
- * CompletionRequestor requestor, Map settings,
- * IScriptProject scriptProject
- */) {
+ * ISearchableEnvironment nameEnvironment, CompletionRequestor requestor, Map
+ * settings, IScriptProject scriptProject
+ */) {
super(null);
// this.scriptProject = scriptProject;
@@ -110,8 +108,7 @@
}
protected CompletionProposal createProposal(int kind, int completionOffset) {
- CompletionProposal proposal = CompletionProposal.create(kind,
- completionOffset - this.offset);
+ CompletionProposal proposal = CompletionProposal.create(kind, completionOffset - this.offset);
return proposal;
}
@@ -169,25 +166,39 @@
}
if (VERBOSE) {
buffer.append("{\n");//$NON-NLS-1$
- buffer.append("\tCompletion[").append(proposal.getCompletion() == null ? "null" : proposal.getCompletion()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- buffer.append("\tDeclarationKey[").append(proposal.getDeclarationKey() == null ? "null" : proposal.getDeclarationKey()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- buffer.append("\tKey[").append(proposal.getKey() == null ? "null" : proposal.getKey()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- buffer.append("\tName[").append(proposal.getName() == null ? "null" : proposal.getName()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- buffer.append("\tCompletionLocation[").append(proposal.getCompletionLocation()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ buffer.append("\tCompletion[") //$NON-NLS-1$
+ .append(proposal.getCompletion() == null ? "null" //$NON-NLS-1$
+ : proposal.getCompletion())
+ .append("]\n"); //$NON-NLS-1$
+ buffer.append("\tDeclarationKey[") //$NON-NLS-1$
+ .append(proposal.getDeclarationKey() == null ? "null" //$NON-NLS-1$
+ : proposal.getDeclarationKey())
+ .append("]\n"); //$NON-NLS-1$
+ buffer.append("\tKey[").append( //$NON-NLS-1$
+ proposal.getKey() == null ? "null" : proposal.getKey()) //$NON-NLS-1$
+ .append("]\n"); //$NON-NLS-1$
+ buffer.append("\tName[").append( //$NON-NLS-1$
+ proposal.getName() == null ? "null" : proposal.getName()) //$NON-NLS-1$
+ .append("]\n"); //$NON-NLS-1$
+ buffer.append("\tCompletionLocation[") //$NON-NLS-1$
+ .append(proposal.getCompletionLocation()).append("]\n"); //$NON-NLS-1$
int start = proposal.getReplaceStart();
int end = proposal.getReplaceEnd();
buffer.append("\tReplaceStart[").append(start).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
buffer.append("-ReplaceEnd[").append(end).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
if (this.source != null)
- buffer.append("\tReplacedText[").append(this.source, start, end - start).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
- buffer.append("\tTokenStart[").append(proposal.getTokenStart()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
- buffer.append("-TokenEnd[").append(proposal.getTokenEnd()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
- buffer.append("\tRelevance[").append(proposal.getRelevance()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ buffer.append("\tReplacedText[") //$NON-NLS-1$
+ .append(this.source, start, end - start).append("]\n"); //$NON-NLS-1$
+ buffer.append("\tTokenStart[").append(proposal.getTokenStart()) //$NON-NLS-1$
+ .append("]"); //$NON-NLS-1$
+ buffer.append("-TokenEnd[").append(proposal.getTokenEnd()) //$NON-NLS-1$
+ .append("]\n"); //$NON-NLS-1$
+ buffer.append("\tRelevance[").append(proposal.getRelevance()) //$NON-NLS-1$
+ .append("]\n"); //$NON-NLS-1$
buffer.append("}\n");//$NON-NLS-1$
} else {
if (proposal.getCompletion() != null) {
- buffer.append(' ').append('"').append(proposal.getCompletion())
- .append('"');
+ buffer.append(' ').append('"').append(proposal.getCompletion()).append('"');
}
}
System.out.println(buffer.toString());
@@ -198,8 +209,7 @@
this.setSourceRange(start, end, true);
}
- protected void setSourceRange(int start, int end,
- boolean emptyTokenAdjstment) {
+ protected void setSourceRange(int start, int end, boolean emptyTokenAdjstment) {
this.startPosition = start;
if (emptyTokenAdjstment) {
int endOfEmptyToken = getEndOfEmptyToken();
@@ -227,22 +237,18 @@
return field.getElementName();
}
- public void findKeywords(char[] keyword, String[] choices,
- boolean canCompleteEmptyToken) {
+ public void findKeywords(char[] keyword, String[] choices, boolean canCompleteEmptyToken) {
if (choices == null || choices.length == 0)
return;
int length = keyword.length;
if (canCompleteEmptyToken || length > 0) {
for (int i = 0; i < choices.length; i++) {
- if (length <= choices[i].length()
- && CharOperation.prefixEquals(keyword, choices[i],
- false)) {
+ if (length <= choices[i].length() && CharOperation.prefixEquals(keyword, choices[i], false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
- relevance += computeRelevanceForCaseMatching(keyword,
- choices[i]);
+ relevance += computeRelevanceForCaseMatching(keyword, choices[i]);
relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); // no
/*
* access restriction for keywords
@@ -256,8 +262,7 @@
// }
this.noProposal = false;
if (!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
- CompletionProposal proposal = this.createProposal(
- CompletionProposal.KEYWORD,
+ CompletionProposal proposal = this.createProposal(CompletionProposal.KEYWORD,
this.actualCompletionPosition);
proposal.setName(choices[i]);
proposal.setCompletion(choices[i]);
@@ -269,14 +274,14 @@
}
}
- protected void findLocalVariables(char[] token, String[] choices,
- boolean canCompleteEmptyToken, boolean provideDollar) {
+ protected void findLocalVariables(char[] token, String[] choices, boolean canCompleteEmptyToken,
+ boolean provideDollar) {
int kind = CompletionProposal.LOCAL_VARIABLE_REF;
findElements(token, choices, canCompleteEmptyToken, provideDollar, kind);
}
- protected void findElements(char[] token, String[] choices,
- boolean canCompleteEmptyToken, boolean provideDollar, int kind) {
+ protected void findElements(char[] token, String[] choices, boolean canCompleteEmptyToken, boolean provideDollar,
+ int kind) {
if (choices == null || choices.length == 0)
return;
@@ -287,8 +292,7 @@
if (!provideDollar && co.length() > 1 && co.charAt(0) == '$') {
co = co.substring(1);
}
- if (length <= co.length()
- && CharOperation.prefixEquals(token, co, false)) {
+ if (length <= co.length() && CharOperation.prefixEquals(token, co, false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
relevance += computeRelevanceForCaseMatching(token, co);
@@ -298,8 +302,7 @@
this.noProposal = false;
if (!this.requestor.isIgnored(kind)) {
- CompletionProposal proposal = this.createProposal(kind,
- this.actualCompletionPosition);
+ CompletionProposal proposal = this.createProposal(kind, this.actualCompletionPosition);
// proposal.setSignature(getSignature(typeBinding));
// proposal.setPackageName(q);
// proposal.setTypeName(displayName);
@@ -315,8 +318,8 @@
}
}
- public void findMethods(char[] token, boolean canCompleteEmptyToken,
- List<IMethod> methods, List methodNames) {
+ public void findMethods(char[] token, boolean canCompleteEmptyToken, List<IMethod> methods,
+ List<String> methodNames) {
if (methods == null || methods.size() == 0)
return;
@@ -325,14 +328,13 @@
if (canCompleteEmptyToken || length > 0) {
for (int i = 0; i < methods.size(); i++) {
IMethod method = methods.get(i);
- String qname = (String) methodNames.get(i);
+ String qname = methodNames.get(i);
// processMethodName(method, tok);
String name = qname;
if (DEBUG) {
System.out.println("Completion:" + qname); //$NON-NLS-1$
}
- if (length <= name.length()
- && CharOperation.prefixEquals(token, name, false)) {
+ if (length <= name.length() && CharOperation.prefixEquals(token, name, false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
relevance += computeRelevanceForCaseMatching(token, name);
@@ -340,10 +342,8 @@
// accept result
this.noProposal = false;
- if (!this.requestor
- .isIgnored(CompletionProposal.METHOD_REF)) {
- CompletionProposal proposal = this.createProposal(
- CompletionProposal.METHOD_REF,
+ if (!this.requestor.isIgnored(CompletionProposal.METHOD_REF)) {
+ CompletionProposal proposal = this.createProposal(CompletionProposal.METHOD_REF,
this.actualCompletionPosition);
// proposal.setSignature(getSignature(typeBinding));
// proposal.setPackageName(q);
@@ -376,18 +376,17 @@
}
}
- protected void findLocalMethods(char[] token,
- boolean canCompleteEmptyToken, List methods, List methodNames) {
+ protected void findLocalMethods(char[] token, boolean canCompleteEmptyToken, List<MethodDeclaration> methods,
+ List<String> methodNames) {
if (methods == null || methods.size() == 0)
return;
int length = token.length;
if (canCompleteEmptyToken || length > 0) {
for (int i = 0; i < methods.size(); i++) {
- MethodDeclaration method = (MethodDeclaration) methods.get(i);
- String name = ((String) (methodNames.get(i)));
- if (length <= name.length()
- && CharOperation.prefixEquals(token, name, false)) {
+ MethodDeclaration method = methods.get(i);
+ String name = methodNames.get(i);
+ if (length <= name.length() && CharOperation.prefixEquals(token, name, false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
relevance += computeRelevanceForCaseMatching(token, name);
@@ -395,10 +394,8 @@
// accept result
this.noProposal = false;
- if (!this.requestor
- .isIgnored(CompletionProposal.METHOD_REF)) {
- CompletionProposal proposal = this.createProposal(
- CompletionProposal.METHOD_REF,
+ if (!this.requestor.isIgnored(CompletionProposal.METHOD_REF)) {
+ CompletionProposal proposal = this.createProposal(CompletionProposal.METHOD_REF,
this.actualCompletionPosition);
// proposal.setSignature(getSignature(typeBinding));
// proposal.setPackageName(q);
@@ -407,8 +404,7 @@
if (arguments != null && arguments.size() > 0) {
String[] args = new String[arguments.size()];
for (int j = 0; j < arguments.size(); ++j) {
- args[j] = ((Argument) arguments.get(j))
- .getName();
+ args[j] = ((Argument) arguments.get(j)).getName();
}
proposal.setParameterNames(args);
}
@@ -424,20 +420,16 @@
}
}
- protected void findMethods(char[] token, boolean canCompleteEmptyToken,
- List<IMethod> methods) {
- findMethods(token, canCompleteEmptyToken, methods,
- CompletionProposal.METHOD_REF);
+ protected void findMethods(char[] token, boolean canCompleteEmptyToken, List<IMethod> methods) {
+ findMethods(token, canCompleteEmptyToken, methods, CompletionProposal.METHOD_REF);
}
- public void findFields(char[] token, boolean canCompleteEmptyToken,
- List<IField> fields, ICompletionNameProvider<IField> nameProvider) {
- findFields(token, canCompleteEmptyToken, fields,
- CompletionProposal.FIELD_REF, nameProvider);
+ public void findFields(char[] token, boolean canCompleteEmptyToken, List<IField> fields,
+ ICompletionNameProvider<IField> nameProvider) {
+ findFields(token, canCompleteEmptyToken, fields, CompletionProposal.FIELD_REF, nameProvider);
}
- protected void findMethods(char[] token, boolean canCompleteEmptyToken,
- List<IMethod> methods, int kind) {
+ protected void findMethods(char[] token, boolean canCompleteEmptyToken, List<IMethod> methods, int kind) {
if (methods == null || methods.size() == 0)
return;
@@ -451,8 +443,7 @@
if (DEBUG) {
System.out.println("Completion:" + qname); //$NON-NLS-1$
}
- if (length <= name.length()
- && CharOperation.prefixEquals(token, name, false)) {
+ if (length <= name.length() && CharOperation.prefixEquals(token, name, false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
relevance += computeRelevanceForCaseMatching(token, name);
@@ -461,8 +452,7 @@
// accept result
this.noProposal = false;
if (!this.requestor.isIgnored(kind)) {
- CompletionProposal proposal = this.createProposal(kind,
- this.actualCompletionPosition);
+ CompletionProposal proposal = this.createProposal(kind, this.actualCompletionPosition);
// proposal.setSignature(getSignature(typeBinding));
// proposal.setPackageName(q);
// proposal.setTypeName(displayName);
@@ -498,8 +488,7 @@
}
}
- public void findFields(char[] token, boolean canCompleteEmptyToken,
- List<IField> fields, int kind,
+ public void findFields(char[] token, boolean canCompleteEmptyToken, List<IField> fields, int kind,
ICompletionNameProvider<IField> nameProvider) {
if (fields == null || fields.size() == 0)
return;
@@ -516,8 +505,7 @@
if (DEBUG) {
System.out.println("Completion:" + qname); //$NON-NLS-1$
}
- if (length <= name.length()
- && CharOperation.prefixEquals(token, name, false)) {
+ if (length <= name.length() && CharOperation.prefixEquals(token, name, false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
relevance += computeRelevanceForCaseMatching(token, name);
@@ -526,15 +514,13 @@
// accept result
this.noProposal = false;
if (!this.requestor.isIgnored(kind)) {
- CompletionProposal proposal = this.createProposal(kind,
- this.actualCompletionPosition);
+ CompletionProposal proposal = this.createProposal(kind, this.actualCompletionPosition);
// proposal.setSignature(getSignature(typeBinding));
// proposal.setPackageName(q);
// proposal.setTypeName(displayName);
proposal.setModelElement(field);
proposal.setName(name);
- proposal.setCompletion(nameProvider
- .getCompletion(field));
+ proposal.setCompletion(nameProvider.getCompletion(field));
// proposal.setFlags(Flags.AccDefault);
proposal.setRelevance(relevance);
accept(proposal);
@@ -544,46 +530,7 @@
}
}
- private void findFields(char[] token, boolean canCompleteEmptyToken,
- List<IField> fields, int kind, List names) {
- if (fields == null || fields.size() == 0)
- return;
-
- int length = token.length;
- // String tok = new String(token);
- if (canCompleteEmptyToken || length > 0) {
- for (int i = 0; i < fields.size(); i++) {
- IField field = fields.get(i);
- String qname = (String) names.get(i);
- String name = qname;
- if (DEBUG) {
- System.out.println("Completion:" + qname); //$NON-NLS-1$
- }
- if (length <= name.length()
- && CharOperation.prefixEquals(token, name, false)) {
- int relevance = computeBaseRelevance();
- relevance += computeRelevanceForInterestingProposal();
- relevance += computeRelevanceForCaseMatching(token, name);
- relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE); // no
-
- // accept result
- this.noProposal = false;
- if (!this.requestor.isIgnored(kind)) {
- CompletionProposal proposal = this.createProposal(kind,
- this.actualCompletionPosition);
- proposal.setModelElement(field);
- proposal.setName(name);
- proposal.setCompletion(qname);
- proposal.setRelevance(relevance);
- accept(proposal);
- }
- }
- }
- }
- }
-
- public void findTypes(char[] token, boolean canCompleteEmptyToken,
- List<IType> types) {
+ public void findTypes(char[] token, boolean canCompleteEmptyToken, List<IType> types) {
if (types == null || types.size() == 0)
return;
@@ -597,8 +544,7 @@
if (DEBUG) {
System.out.println("Completion:" + qname); //$NON-NLS-1$
}
- if (length <= name.length()
- && CharOperation.prefixEquals(token, name, false)) {
+ if (length <= name.length() && CharOperation.prefixEquals(token, name, false)) {
int relevance = computeBaseRelevance();
relevance += computeRelevanceForInterestingProposal();
relevance += computeRelevanceForCaseMatching(token, name);
@@ -608,8 +554,7 @@
this.noProposal = false;
if (!this.requestor.isIgnored(CompletionProposal.TYPE_REF)) {
- CompletionProposal proposal = this.createProposal(
- CompletionProposal.TYPE_REF,
+ CompletionProposal proposal = this.createProposal(CompletionProposal.TYPE_REF,
this.actualCompletionPosition);
// proposal.setSignature(getSignature(typeBinding));
// proposal.setPackageName(q);
@@ -635,13 +580,11 @@
return RelevanceConstants.R_INTERESTING;
}
- public int computeRelevanceForCaseMatching(char[] token,
- String proposalNameStr) {
+ public int computeRelevanceForCaseMatching(char[] token, String proposalNameStr) {
char[] proposalName = proposalNameStr.toCharArray();
if (this.options.camelCaseMatch) {
if (CharOperation.equals(token, proposalName, true)) {
- return RelevanceConstants.R_CASE
- + RelevanceConstants.R_EXACT_NAME;
+ return RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_NAME;
} else if (CharOperation.prefixEquals(token, proposalName, true)) {
return RelevanceConstants.R_CASE;
} else if (CharOperation.camelCaseMatch(token, proposalName)) {
@@ -651,8 +594,7 @@
}
} else if (CharOperation.prefixEquals(token, proposalName, true)) {
if (CharOperation.equals(token, proposalName, true)) {
- return RelevanceConstants.R_CASE
- + RelevanceConstants.R_EXACT_NAME;
+ return RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_NAME;
} else {
return RelevanceConstants.R_CASE;
}
@@ -679,8 +621,7 @@
}
public void accept(CompletionProposal proposal) {
- proposal.setReplaceRange(this.startPosition - this.offset,
- this.endPosition - this.offset);
+ proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
this.requestor.accept(proposal);
if (DEBUG) {
this.printDebug(proposal);