Skip to content

Commit fad66cc

Browse files
committed
Use SignatureUtils everywhere in DOMCompletionEngine
1 parent f97ae80 commit fad66cc

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

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

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2048,6 +2048,15 @@ public void complete(org.eclipse.jdt.internal.compiler.env.ICompilationUnit sour
20482048

20492049
if (suggestDefaultCompletions) {
20502050
statementLikeKeywords();
2051+
if (this.expectedTypes.getExpectedTypes().size() == 1 && toComplete instanceof SimpleName simple) {
2052+
ITypeBinding expected = this.expectedTypes.getExpectedTypes().getFirst();
2053+
if (expected.isEnum()) {
2054+
Arrays.stream(expected.getDeclaredFields())
2055+
.filter(field -> field.getName().startsWith(this.prefix))
2056+
.map(this::toProposal)
2057+
.forEach(this.requestor::accept);
2058+
}
2059+
}
20512060
if (!this.prefix.isEmpty() && this.extendsOrImplementsInfo == null) {
20522061
suggestTypeKeywords(DOMCompletionUtil.findParent(this.toComplete, new int[] { ASTNode.BLOCK }) == null);
20532062
}
@@ -3896,28 +3905,21 @@ private CompletionProposal toProposal(IBinding binding, String completion) {
38963905
}
38973906
} else if (kind == CompletionProposal.LOCAL_VARIABLE_REF) {
38983907
var variableBinding = (IVariableBinding) binding;
3899-
res.setSignature(
3900-
Signature.createTypeSignature(variableBinding.getType().getQualifiedName().toCharArray(), true)
3901-
.toCharArray());
3908+
res.setSignature(SignatureUtils.getSignatureChar(variableBinding.getType()));
39023909
} else if (kind == CompletionProposal.FIELD_REF) {
39033910
var variableBinding = (IVariableBinding) binding;
39043911
ITypeBinding declaringClass = variableBinding.getDeclaringClass();
3905-
res.setSignature(
3906-
Signature.createTypeSignature(variableBinding.getType().getQualifiedName().toCharArray(), true)
3907-
.toCharArray());
3912+
res.setSignature(SignatureUtils.getSignatureChar(variableBinding.getType()));
39083913
if (declaringClass != null && !declaringClass.getQualifiedName().isEmpty()) {
3909-
char[] declSignature = Signature
3910-
.createTypeSignature(
3911-
declaringClass.getQualifiedName().toCharArray(), true)
3912-
.toCharArray();
3914+
char[] declSignature = SignatureUtils.getSignatureChar(declaringClass);
39133915
res.setDeclarationSignature(declSignature);
39143916
} else if (declaringClass != null && declaringClass.isAnonymous()) {
39153917
res.setDeclarationSignature(SignatureUtils.getSignatureChar(declaringClass.getSuperclass()));
39163918
} else {
39173919
res.setDeclarationSignature(new char[0]);
39183920
}
39193921

3920-
if ((variableBinding.getModifiers() & Flags.AccStatic) != 0) {
3922+
if ((variableBinding.getModifiers() & Flags.AccStatic) != 0 || variableBinding.isEnumConstant()) {
39213923
ITypeBinding topLevelClass = variableBinding.getDeclaringClass();
39223924
while (topLevelClass.getDeclaringClass() != null) {
39233925
topLevelClass = topLevelClass.getDeclaringClass();
@@ -3949,8 +3951,7 @@ private CompletionProposal toProposal(IBinding binding, String completion) {
39493951
}
39503952
} else if (kind == CompletionProposal.TYPE_REF) {
39513953
var typeBinding = (ITypeBinding) binding;
3952-
res.setSignature(
3953-
Signature.createTypeSignature(typeBinding.getQualifiedName().toCharArray(), true).toCharArray());
3954+
res.setSignature(SignatureUtils.getSignatureChar(typeBinding));
39543955
} else if (kind == CompletionProposal.ANNOTATION_ATTRIBUTE_REF) {
39553956
var methodBinding = (IMethodBinding) binding;
39563957
StringBuilder annotationCompletion = new StringBuilder(completion);
@@ -3963,14 +3964,9 @@ private CompletionProposal toProposal(IBinding binding, String completion) {
39633964
annotationCompletion.append(' ');
39643965
}
39653966
res.setCompletion(annotationCompletion.toString().toCharArray());
3966-
res.setSignature(Signature.createTypeSignature(qualifiedTypeName(methodBinding.getReturnType()), true)
3967-
.toCharArray());
3968-
res.setReceiverSignature(Signature
3969-
.createTypeSignature(methodBinding.getDeclaringClass().getQualifiedName().toCharArray(), true)
3970-
.toCharArray());
3971-
res.setDeclarationSignature(Signature
3972-
.createTypeSignature(methodBinding.getDeclaringClass().getQualifiedName().toCharArray(), true)
3973-
.toCharArray());
3967+
res.setSignature(SignatureUtils.getSignatureChar(methodBinding.getReturnType()));
3968+
res.setReceiverSignature(SignatureUtils.getSignatureChar(methodBinding.getDeclaringClass()));
3969+
res.setDeclarationSignature(SignatureUtils.getSignatureChar(methodBinding.getDeclaringClass()));
39743970
} else {
39753971
res.setSignature(new char[] {});
39763972
res.setReceiverSignature(new char[] {});
@@ -4068,7 +4064,7 @@ private String qualifiedTypeName(ITypeBinding typeBinding) {
40684064
private CompletionProposal toProposal(IType type) {
40694065
DOMInternalCompletionProposal res = createProposal(CompletionProposal.TYPE_REF);
40704066
char[] simpleName = type.getElementName().toCharArray();
4071-
char[] signature = Signature.createTypeSignature(type.getFullyQualifiedName(), true).toCharArray();
4067+
char[] signature = SignatureUtils.createSignature(type).toCharArray();
40724068

40734069
res.setSignature(signature);
40744070

@@ -4430,7 +4426,7 @@ private CompletionProposal toConstructorProposal(IMethod method, boolean isExact
44304426

44314427
IPackageFragment packageFragment = (IPackageFragment)declaringClass.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
44324428

4433-
res.setDeclarationSignature(Signature.createTypeSignature(declaringClass.getFullyQualifiedName(), true).toCharArray());
4429+
res.setDeclarationSignature(SignatureUtils.createSignature(declaringClass).toCharArray());
44344430
res.setDeclarationTypeName(simpleName);
44354431
res.setDeclarationPackageName(packageFragment.getElementName().toCharArray());
44364432
res.setParameterPackageNames(CharOperation.NO_CHAR_CHAR);
@@ -4492,7 +4488,7 @@ private CompletionProposal toDefaultConstructorProposal(IType type, boolean isEx
44924488

44934489
IPackageFragment packageFragment = (IPackageFragment)type.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
44944490

4495-
res.setDeclarationSignature(Signature.createTypeSignature(type.getFullyQualifiedName(), true).toCharArray());
4491+
res.setDeclarationSignature(SignatureUtils.createSignature(type).toCharArray());
44964492
res.setDeclarationTypeName(simpleName);
44974493
res.setDeclarationPackageName(packageFragment.getElementName().toCharArray());
44984494
res.setParameterPackageNames(CharOperation.NO_CHAR_CHAR);
@@ -4536,7 +4532,7 @@ private CompletionProposal toDefaultConstructorProposal(IType type, boolean isEx
45364532

45374533
private CompletionProposal toAnonymousConstructorProposal(IType type) {
45384534
DOMInternalCompletionProposal res = createProposal(CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION);
4539-
res.setDeclarationSignature(Signature.createTypeSignature(type.getFullyQualifiedName(), true).toCharArray());
4535+
res.setDeclarationSignature(SignatureUtils.createSignature(type).toCharArray());
45404536
res.setDeclarationKey(type.getKey().toCharArray());
45414537
res.setSignature(
45424538
CompletionEngine.createMethodSignature(
@@ -4577,7 +4573,7 @@ private CompletionProposal toAnonymousConstructorProposal(IType type) {
45774573

45784574
DOMInternalCompletionProposal typeProposal = createProposal(CompletionProposal.TYPE_REF);
45794575
typeProposal.setDeclarationSignature(packageFragment.getElementName().toCharArray());
4580-
typeProposal.setSignature(Signature.createTypeSignature(type.getFullyQualifiedName(), true).toCharArray());
4576+
typeProposal.setSignature(SignatureUtils.createSignature(type).toCharArray());
45814577
typeProposal.setPackageName(packageFragment.getElementName().toCharArray());
45824578
typeProposal.setTypeName(type.getElementName().toCharArray());
45834579
typeProposal.setCompletion(type.getElementName().toCharArray());
@@ -4648,8 +4644,7 @@ private CompletionProposal toStaticImportProposal(IBinding binding) {
46484644
res = createProposal(CompletionProposal.FIELD_IMPORT);
46494645

46504646
res.setDeclarationSignature(SignatureUtils.getSignatureChar(variableBinding.getDeclaringClass()));
4651-
res.setSignature(Signature.createTypeSignature(variableBinding.getType().getQualifiedName().toCharArray(), true)
4652-
.toCharArray());
4647+
res.setSignature(SignatureUtils.getSignatureChar(variableBinding.getType()));;
46534648
res.setDeclarationPackageName(variableBinding.getDeclaringClass().getPackage().getName().toCharArray());
46544649
res.setDeclarationTypeName(variableBinding.getDeclaringClass().getQualifiedName().toCharArray());
46554650
if (variableBinding.getType().getPackage() != null) {

0 commit comments

Comments
 (0)