Skip to content

Commit

Permalink
Move key -> signature methods to DOMCompletionUtil
Browse files Browse the repository at this point in the history
Fixes #1224

Signed-off-by: David Thompson <[email protected]>
  • Loading branch information
datho7561 committed Feb 6, 2025
1 parent c906abc commit 0a65b03
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2297,9 +2297,9 @@ private void findOverridableMethods0(ITypeBinding typeBinding, Set<String> alrea
proposal.setTypeName(method.getReturnType().getName().toCharArray());
proposal.setDeclarationPackageName(typeBinding.getPackage().getName().toCharArray());
proposal.setDeclarationTypeName(typeBinding.getQualifiedName().toCharArray());
proposal.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(method.getDeclaringClass()));
proposal.setDeclarationSignature(DOMCompletionUtil.getSignature(method.getDeclaringClass()));
proposal.setKey(method.getKey().toCharArray());
proposal.setSignature(DOMCompletionEngineBuilder.getSignature(method));
proposal.setSignature(DOMCompletionUtil.getSignature(method));
proposal.setParameterNames(Stream.of(method.getParameterNames()).map(name -> name.toCharArray()).toArray(char[][]::new));

int relevance = RelevanceConstants.R_DEFAULT
Expand Down Expand Up @@ -2621,7 +2621,7 @@ private CompletionProposal toProposal(IBinding binding, String completion) {
res.setParameterNames(paramNames.stream().map(String::toCharArray).toArray(i -> new char[i][]));
}
res.setParameterTypeNames(Stream.of(methodBinding.getParameterNames()).map(String::toCharArray).toArray(char[][]::new));
res.setSignature(DOMCompletionEngineBuilder.getSignature(methodBinding));
res.setSignature(DOMCompletionUtil.getSignature(methodBinding));
if (!methodBinding.getDeclaringClass().getQualifiedName().isEmpty()) {
res.setDeclarationSignature(Signature
.createTypeSignature(methodBinding.getDeclaringClass().getQualifiedName().toCharArray(), true)
Expand Down Expand Up @@ -3050,7 +3050,7 @@ private CompletionProposal toProposal(IJavaElement element) {

private CompletionProposal toNewMethodProposal(ITypeBinding parentType, String newMethodName) {
DOMInternalCompletionProposal res = createProposal(CompletionProposal.POTENTIAL_METHOD_DECLARATION);
res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(parentType));
res.setDeclarationSignature(DOMCompletionUtil.getSignature(parentType));
res.setSignature(Signature.createMethodSignature(CharOperation.NO_CHAR_CHAR, Signature.createCharArrayTypeSignature(VOID, true)));
res.setDeclarationPackageName(parentType.getPackage().getName().toCharArray());
res.setDeclarationTypeName(parentType.getQualifiedName().toCharArray());
Expand Down Expand Up @@ -3338,12 +3338,12 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
if (binding instanceof IMethodBinding methodBinding) {
res = createProposal(CompletionProposal.METHOD_IMPORT);
res.setName(methodBinding.getName().toCharArray());
res.setSignature(DOMCompletionEngineBuilder.getSignature(methodBinding));
res.setSignature(DOMCompletionUtil.getSignature(methodBinding));

res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(methodBinding.getDeclaringClass()));
res.setSignature(DOMCompletionEngineBuilder.getSignature(methodBinding));
res.setDeclarationSignature(DOMCompletionUtil.getSignature(methodBinding.getDeclaringClass()));
res.setSignature(DOMCompletionUtil.getSignature(methodBinding));
if(methodBinding != methodBinding.getMethodDeclaration()) {
res.setOriginalSignature(DOMCompletionEngineBuilder.getSignature(methodBinding.getMethodDeclaration()));
res.setOriginalSignature(DOMCompletionUtil.getSignature(methodBinding.getMethodDeclaration()));
}
res.setDeclarationPackageName(methodBinding.getDeclaringClass().getPackage().getName().toCharArray());
res.setDeclarationTypeName(methodBinding.getDeclaringClass().getQualifiedName().toCharArray());
Expand Down Expand Up @@ -3374,7 +3374,7 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
} else if (binding instanceof IVariableBinding variableBinding) {
res = createProposal(CompletionProposal.FIELD_IMPORT);

res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(variableBinding.getDeclaringClass()));
res.setDeclarationSignature(DOMCompletionUtil.getSignature(variableBinding.getDeclaringClass()));
res.setSignature(Signature.createTypeSignature(variableBinding.getType().getQualifiedName().toCharArray(), true)
.toCharArray());
res.setDeclarationPackageName(variableBinding.getDeclaringClass().getPackage().getName().toCharArray());
Expand All @@ -3393,7 +3393,7 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {

res = createProposal(CompletionProposal.TYPE_IMPORT);
res.setDeclarationSignature(typeBinding.getPackage().getName().toCharArray());
res.setSignature(DOMCompletionEngineBuilder.getSignature(typeBinding));
res.setSignature(DOMCompletionUtil.getSignature(typeBinding));
res.setPackageName(typeBinding.getPackage().getName().toCharArray());
res.setTypeName(typeBinding.getQualifiedName().toCharArray());
res.setAdditionalFlags(CompletionFlags.Default);
Expand Down Expand Up @@ -3433,8 +3433,8 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {

private CompletionProposal toAnnotationAttributeRefProposal(IMethodBinding method) {
CompletionProposal proposal = createProposal(CompletionProposal.ANNOTATION_ATTRIBUTE_REF);
proposal.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(method.getDeclaringClass()));
proposal.setSignature(DOMCompletionEngineBuilder.getSignature(method.getReturnType()));
proposal.setDeclarationSignature(DOMCompletionUtil.getSignature(method.getDeclaringClass()));
proposal.setSignature(DOMCompletionUtil.getSignature(method.getReturnType()));
proposal.setName(method.getName().toCharArray());
// add "=" to completion since it will always be needed
char[] completion= method.getName().toCharArray();
Expand Down Expand Up @@ -3735,12 +3735,12 @@ private CompletionProposal createLambdaExpressionProposal(IMethodBinding method)
.map(s -> s.toCharArray()) //
.toArray(char[][]::new);

res.setDeclarationSignature(DOMCompletionEngineBuilder.getSignature(method.getDeclaringClass()));
res.setSignature(DOMCompletionEngineBuilder.getSignature(method));
res.setDeclarationSignature(DOMCompletionUtil.getSignature(method.getDeclaringClass()));
res.setSignature(DOMCompletionUtil.getSignature(method));

IMethodBinding original = method.getMethodDeclaration();
if (original != method) {
res.setOriginalSignature(DOMCompletionEngineBuilder.getSignature(original));
res.setOriginalSignature(DOMCompletionUtil.getSignature(original));
}

setRange(res);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,19 +177,4 @@ static void createTypeVariable(ITypeBinding typeVariable, StringBuilder completi
}
}

static char[] getSignature(IMethodBinding methodBinding) {
String fullKey = methodBinding.getKey().replace('/', '.');
String removeName = fullKey.substring(fullKey.indexOf('('));
int firstException = removeName.indexOf('|');
if (firstException > 0) {
return removeName.substring(0, firstException).toCharArray();
} else {
return removeName.toCharArray();
}
}

static char[] getSignature(ITypeBinding typeBinding) {
return typeBinding.getKey().replace('/', '.').toCharArray();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;

public class DOMCompletionUtil {
Expand Down Expand Up @@ -88,5 +90,52 @@ public static AbstractTypeDeclaration findParentTypeDeclaration(ASTNode nodeToSe
public static boolean isJavaFieldOrMethodModifier(String potentialModifer) {
return JAVA_MODIFIERS.contains(potentialModifer);
}

/**
* Returns the signature of the given method binding.
*
* @param methodBinding the method binding to get the signature of
* @return the signature of the given method binding
*/
public static char[] getSignature(IMethodBinding methodBinding) {
return getSignatureForMethodKey(methodBinding.getKey());
}

/**
* Returns the signature for the given method key.
*
* @param key the method key to get the signature of
* @return the signature for the given method key
*/
public static char[] getSignatureForMethodKey(String key) {
String fullKey = key.replace('/', '.');
String removeName = fullKey.substring(fullKey.indexOf('('));
int firstException = removeName.indexOf('|');
if (firstException > 0) {
return removeName.substring(0, firstException).toCharArray();
} else {
return removeName.toCharArray();
}
}

/**
* Returns the signature of the given type binding.
*
* @param typeBinding the type binding to get the signature of
* @return the signature of the given type binding
*/
public static char[] getSignature(ITypeBinding typeBinding) {
return getSignatureForTypeKey(typeBinding.getKey());
}

/**
* Returns the signature of the given type key.
*
* @param key the type key to get the signature of
* @return the signature of the given type key
*/
public static char[] getSignatureForTypeKey(String key) {
return key.replace('/', '.').toCharArray();
}

}

0 comments on commit 0a65b03

Please sign in to comment.