Skip to content

Commit 96cc1c2

Browse files
datho7561Rob Stryker
authored andcommitted
Move key -> signature methods to DOMCompletionUtil
Fixes #1224 Signed-off-by: David Thompson <[email protected]>
1 parent 17f8d21 commit 96cc1c2

File tree

3 files changed

+81
-35
lines changed

3 files changed

+81
-35
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngine.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
import org.eclipse.jdt.core.dom.MethodInvocation;
9898
import org.eclipse.jdt.core.dom.MethodRef;
9999
import org.eclipse.jdt.core.dom.Modifier;
100+
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
100101
import org.eclipse.jdt.core.dom.ModuleDeclaration;
101102
import org.eclipse.jdt.core.dom.Name;
102103
import org.eclipse.jdt.core.dom.NormalAnnotation;
@@ -130,7 +131,6 @@
130131
import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
131132
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
132133
import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
133-
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
134134
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
135135
import org.eclipse.jdt.core.search.IJavaSearchConstants;
136136
import org.eclipse.jdt.core.search.SearchEngine;
@@ -2340,9 +2340,9 @@ private void findOverridableMethods0(ITypeBinding typeBinding, Set<String> alrea
23402340
proposal.setTypeName(method.getReturnType().getName().toCharArray());
23412341
proposal.setDeclarationPackageName(typeBinding.getPackage().getName().toCharArray());
23422342
proposal.setDeclarationTypeName(typeBinding.getQualifiedName().toCharArray());
2343-
proposal.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(method.getDeclaringClass()));
2343+
proposal.setDeclarationSignature(SignatureUtils.getSignatureChar(method.getDeclaringClass()));
23442344
proposal.setKey(method.getKey().toCharArray());
2345-
proposal.setSignature(DOMCompletionEngineBuilder.getSignature(method));
2345+
proposal.setSignature(SignatureUtils.getSignatureChar(method));
23462346
proposal.setParameterNames(Stream.of(method.getParameterNames()).map(name -> name.toCharArray()).toArray(char[][]::new));
23472347

23482348
int relevance = RelevanceConstants.R_DEFAULT
@@ -2663,7 +2663,7 @@ private CompletionProposal toProposal(IBinding binding, String completion) {
26632663
res.setParameterNames(paramNames.stream().map(String::toCharArray).toArray(i -> new char[i][]));
26642664
}
26652665
res.setParameterTypeNames(Stream.of(methodBinding.getParameterNames()).map(String::toCharArray).toArray(char[][]::new));
2666-
res.setSignature(DOMCompletionEngineBuilder.getSignature(methodBinding));
2666+
res.setSignature(SignatureUtils.getSignatureChar(methodBinding));
26672667
if (!methodBinding.getDeclaringClass().getQualifiedName().isEmpty()) {
26682668
res.setDeclarationSignature(Signature
26692669
.createTypeSignature(methodBinding.getDeclaringClass().getQualifiedName().toCharArray(), true)
@@ -3092,7 +3092,7 @@ private CompletionProposal toProposal(IJavaElement element) {
30923092

30933093
private CompletionProposal toNewMethodProposal(ITypeBinding parentType, String newMethodName) {
30943094
DOMInternalCompletionProposal res = createProposal(CompletionProposal.POTENTIAL_METHOD_DECLARATION);
3095-
res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(parentType));
3095+
res.setDeclarationSignature(SignatureUtils.getSignatureChar(parentType));
30963096
res.setSignature(Signature.createMethodSignature(CharOperation.NO_CHAR_CHAR, Signature.createCharArrayTypeSignature(VOID, true)));
30973097
res.setDeclarationPackageName(parentType.getPackage().getName().toCharArray());
30983098
res.setDeclarationTypeName(parentType.getQualifiedName().toCharArray());
@@ -3380,12 +3380,12 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
33803380
if (binding instanceof IMethodBinding methodBinding) {
33813381
res = createProposal(CompletionProposal.METHOD_IMPORT);
33823382
res.setName(methodBinding.getName().toCharArray());
3383-
res.setSignature(DOMCompletionEngineBuilder.getSignature(methodBinding));
3383+
res.setSignature(SignatureUtils.getSignatureChar(methodBinding));
33843384

3385-
res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(methodBinding.getDeclaringClass()));
3386-
res.setSignature(DOMCompletionEngineBuilder.getSignature(methodBinding));
3385+
res.setDeclarationSignature(SignatureUtils.getSignatureChar(methodBinding.getDeclaringClass()));
3386+
res.setSignature(SignatureUtils.getSignatureChar(methodBinding));
33873387
if(methodBinding != methodBinding.getMethodDeclaration()) {
3388-
res.setOriginalSignature(DOMCompletionEngineBuilder.getSignature(methodBinding.getMethodDeclaration()));
3388+
res.setOriginalSignature(SignatureUtils.getSignatureChar(methodBinding.getMethodDeclaration()));
33893389
}
33903390
res.setDeclarationPackageName(methodBinding.getDeclaringClass().getPackage().getName().toCharArray());
33913391
res.setDeclarationTypeName(methodBinding.getDeclaringClass().getQualifiedName().toCharArray());
@@ -3416,7 +3416,7 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
34163416
} else if (binding instanceof IVariableBinding variableBinding) {
34173417
res = createProposal(CompletionProposal.FIELD_IMPORT);
34183418

3419-
res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(variableBinding.getDeclaringClass()));
3419+
res.setDeclarationSignature(SignatureUtils.getSignatureChar(variableBinding.getDeclaringClass()));
34203420
res.setSignature(Signature.createTypeSignature(variableBinding.getType().getQualifiedName().toCharArray(), true)
34213421
.toCharArray());
34223422
res.setDeclarationPackageName(variableBinding.getDeclaringClass().getPackage().getName().toCharArray());
@@ -3435,7 +3435,7 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
34353435

34363436
res = createProposal(CompletionProposal.TYPE_IMPORT);
34373437
res.setDeclarationSignature(typeBinding.getPackage().getName().toCharArray());
3438-
res.setSignature(DOMCompletionEngineBuilder.getSignature(typeBinding));
3438+
res.setSignature(SignatureUtils.getSignatureChar(typeBinding));
34393439
res.setPackageName(typeBinding.getPackage().getName().toCharArray());
34403440
res.setTypeName(typeBinding.getQualifiedName().toCharArray());
34413441
res.setAdditionalFlags(CompletionFlags.Default);
@@ -3475,8 +3475,8 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
34753475

34763476
private CompletionProposal toAnnotationAttributeRefProposal(IMethodBinding method) {
34773477
CompletionProposal proposal = createProposal(CompletionProposal.ANNOTATION_ATTRIBUTE_REF);
3478-
proposal.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(method.getDeclaringClass()));
3479-
proposal.setSignature(DOMCompletionEngineBuilder.getSignature(method.getReturnType()));
3478+
proposal.setDeclarationSignature(SignatureUtils.getSignatureChar(method.getDeclaringClass()));
3479+
proposal.setSignature(SignatureUtils.getSignatureChar(method.getReturnType()));
34803480
proposal.setName(method.getName().toCharArray());
34813481
// add "=" to completion since it will always be needed
34823482
char[] completion= method.getName().toCharArray();
@@ -3777,12 +3777,12 @@ private CompletionProposal createLambdaExpressionProposal(IMethodBinding method)
37773777
.map(s -> s.toCharArray()) //
37783778
.toArray(char[][]::new);
37793779

3780-
res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(method.getDeclaringClass()));
3781-
res.setSignature(DOMCompletionEngineBuilder.getSignature(method));
3780+
res.setDeclarationSignature(SignatureUtils.getSignatureChar(method.getDeclaringClass()));
3781+
res.setSignature(SignatureUtils.getSignatureChar(method));
37823782

37833783
IMethodBinding original = method.getMethodDeclaration();
37843784
if (original != method) {
3785-
res.setOriginalSignature(DOMCompletionEngineBuilder.getSignature(original));
3785+
res.setOriginalSignature(SignatureUtils.getSignatureChar(original));
37863786
}
37873787

37883788
setRange(res);

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngineBuilder.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -177,19 +177,4 @@ static void createTypeVariable(ITypeBinding typeVariable, StringBuilder completi
177177
}
178178
}
179179

180-
static char[] getSignature(IMethodBinding methodBinding) {
181-
String fullKey = methodBinding.getKey().replace('/', '.');
182-
String removeName = fullKey.substring(fullKey.indexOf('('));
183-
int firstException = removeName.indexOf('|');
184-
if (firstException > 0) {
185-
return removeName.substring(0, firstException).toCharArray();
186-
} else {
187-
return removeName.toCharArray();
188-
}
189-
}
190-
191-
static char[] getSignature(ITypeBinding typeBinding) {
192-
return typeBinding.getKey().replace('/', '.').toCharArray();
193-
}
194-
195180
}

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/SignatureUtils.java

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.eclipse.jdt.core.IType;
1919
import org.eclipse.jdt.core.JavaModelException;
2020
import org.eclipse.jdt.core.Signature;
21+
import org.eclipse.jdt.core.dom.IMethodBinding;
2122
import org.eclipse.jdt.core.dom.ITypeBinding;
2223
import org.eclipse.jdt.core.dom.ParameterizedType;
2324
import org.eclipse.jdt.core.dom.SimpleType;
@@ -34,7 +35,7 @@ public class SignatureUtils {
3435
public static String createSignature(Type type, SearchEngine searchEngine, IJavaSearchScope scope, IProgressMonitor monitor) {
3536
ITypeBinding binding = type.resolveBinding();
3637
if (binding != null && !binding.isRecovered()) {
37-
return binding.getKey().replace('/', '.');
38+
return getSignature(binding);
3839
}
3940
String simpleName = simpleName(type);
4041
IType resolvedType = binding.getJavaElement() instanceof IType element ? element : null;
@@ -83,10 +84,70 @@ private static String simpleName(Type type) {
8384
return type.toString();
8485
}
8586

87+
/**
88+
* Returns the signature of the given model type.
89+
*
90+
* @param type the model type to get the signature of
91+
* @return the signature of the given model type
92+
*/
8693
public static String createSignature(IType type) {
87-
return type.getKey().replace('/', '.');
94+
return getSignatureForTypeKey(type.getKey());
8895
}
89-
public static String createSignature(ITypeBinding type) {
90-
return type.getKey().replace('/', '.');
96+
97+
/**
98+
* Returns the signature of the given type binding.
99+
*
100+
* @param typeBinding the type binding to get the signature of
101+
* @return the signature of the given type binding
102+
*/
103+
public static String getSignature(ITypeBinding typeBinding) {
104+
return SignatureUtils.getSignatureForTypeKey(typeBinding.getKey());
105+
}
106+
107+
/**
108+
* Returns the signature of the given type binding as a character array.
109+
*
110+
* @param typeBinding the type binding to get the signature of
111+
* @return the signature of the given type binding as a character array
112+
*/
113+
public static char[] getSignatureChar(ITypeBinding typeBinding) {
114+
return SignatureUtils.getSignatureForTypeKey(typeBinding.getKey()).toCharArray();
115+
}
116+
117+
/**
118+
* Returns the signature of the given type key.
119+
*
120+
* @param key the type key to get the signature of
121+
* @return the signature of the given type key
122+
*/
123+
public static String getSignatureForTypeKey(String key) {
124+
return key.replace('/', '.');
125+
}
126+
127+
/**
128+
* Returns the signature of the given method binding as a character array.
129+
*
130+
* @param methodBinding the method binding to get the signature of
131+
* @return the signature of the given method binding as a character array
132+
*/
133+
public static char[] getSignatureChar(IMethodBinding methodBinding) {
134+
return SignatureUtils.getSignatureForMethodKey(methodBinding.getKey()).toCharArray();
135+
}
136+
137+
/**
138+
* Returns the signature for the given method key.
139+
*
140+
* @param key the method key to get the signature of
141+
* @return the signature for the given method key
142+
*/
143+
public static String getSignatureForMethodKey(String key) {
144+
String fullKey = key.replace('/', '.');
145+
String removeName = fullKey.substring(fullKey.indexOf('('));
146+
int firstException = removeName.indexOf('|');
147+
if (firstException > 0) {
148+
return removeName.substring(0, firstException);
149+
} else {
150+
return removeName;
151+
}
91152
}
92153
}

0 commit comments

Comments
 (0)