diff --git a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngine.java b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngine.java index d5b0a02d067..d592048403b 100644 --- a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngine.java +++ b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngine.java @@ -2297,9 +2297,9 @@ private void findOverridableMethods0(ITypeBinding typeBinding, Set 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 @@ -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) @@ -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()); @@ -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()); @@ -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()); @@ -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); @@ -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(); @@ -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); diff --git a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngineBuilder.java b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngineBuilder.java index b0cd0e4a77e..a9020b5de2a 100644 --- a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngineBuilder.java +++ b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionEngineBuilder.java @@ -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(); - } - } diff --git a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionUtil.java b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionUtil.java index ec6ceb18719..b7d146998d6 100644 --- a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionUtil.java +++ b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/codeassist/DOMCompletionUtil.java @@ -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 { @@ -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(); + } }