diff options
author | Vikas Chandra | 2018-09-03 08:40:56 +0000 |
---|---|---|
committer | Vikas Chandra | 2018-09-11 08:24:57 +0000 |
commit | 769e3f7f08798d21cb15fe18d5e6c0fd40cafede (patch) | |
tree | a3a50df2b60173d97ec3becf118b88d2d545000a | |
parent | 749e6f86b20add3c4fa8193fea1a613d6b0a897b (diff) | |
download | eclipse.jdt.core-I20180913-1800.tar.gz eclipse.jdt.core-I20180913-1800.tar.xz eclipse.jdt.core-I20180913-1800.zip |
Bug 460750 - [content assist] Java proposal doesn't offer enum value onI20180914-0620I20180913-1800I20180913-0415I20180912-2240I20180912-0225I20180912-0210I20180911-1400
the right-hand side of a ternary expression
Change-Id: I268d294b33d68462ba4fec108953e35cb1c00d38
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
Signed-off-by: Jay <jarthana@in.ibm.com>
4 files changed, 71 insertions, 2 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/FieldAccessCompletionTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/FieldAccessCompletionTest.java index 7473602e94..f9f29cc131 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/FieldAccessCompletionTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/FieldAccessCompletionTest.java @@ -718,7 +718,7 @@ public void testConditionalExpressionConditionalExpression() { " Bar() {\n" + " }\n" + " boolean foo() {\n" + - " (isTrue ? true : <CompleteOnMemberAccess:fred().x>);\n" + + " return (isTrue ? true : <CompleteOnMemberAccess:fred().x>);\n" + " }\n" + "}\n", // expectedCompletionIdentifier: diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java index b82bbd838a..258fd70b29 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java @@ -3264,4 +3264,70 @@ public void testBug537679() throws JavaModelException { "toString[METHOD_DECLARATION]{public String toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+overrideRelevance+"}", requestor.getResults()); } + +public void testBug460750a() throws JavaModelException { + this.workingCopies = new ICompilationUnit[1]; + this.workingCopies[0] = getWorkingCopy( + "/Completion/src/Foo.java", + "public class Foo {\n" + + " enum MyEnum {\n" + + " FOO, BAR\n" + + " }\n" + + " public void setMyEnumValue(MyEnum myEnumValue) {\n" + + " }\n" + + " public void meth() {\n" + + " this.setMyEnumValue(new String().isEmpty() ? MyEnum.FOO:BAR);\n" + + " }\n" + + "}\n"); + + CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true); + requestor.allowAllRequiredProposals(); + String str = this.workingCopies[0].getSource(); + String completeBehind = "FOO:BAR"; + int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length(); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner); + System.out.println("res="); + System.out.println(""); + + assertResults( + "BAR[FIELD_REF]{MyEnum.BAR, LFoo$MyEnum;, LFoo$MyEnum;, BAR, null, 108}", + requestor.getResults()); +} + +public void testBug460750b() throws JavaModelException { + this.workingCopies = new ICompilationUnit[1]; + this.workingCopies[0] = getWorkingCopy( + "/Completion/src/EnumRelatedCompletions.java", + "public class EnumRelatedCompletions {\n" + + " enum MyEnum {\n" + + " FOO, BAR, QUZ \n" + + " }\n" + + " public void setMyEnumValue(MyEnum myEnumValue) {\n" + + " }\n" + + " public void meth() {\n" + + " this.setMyEnumValue(new String().isEmpty() ? MyEnum.FOO:BAR);\n" + + " MyEnum e= MyEnum.FOO;\n" + + " if(e !=QUZ) { \n" + + " }\n" + + " }\n" + + "}\n"); + + CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true); + requestor.allowAllRequiredProposals(); + String str = this.workingCopies[0].getSource(); + String completeBehind = "=QUZ"; + int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length(); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner); + System.out.println("res="); + System.out.println(""); + System.out.println("res="); + System.out.println(requestor.getResults()); + + assertResults( + "QUZ[FIELD_REF]{MyEnum.QUZ, LEnumRelatedCompletions$MyEnum;, LEnumRelatedCompletions$MyEnum;, QUZ, null, 108}", + requestor.getResults()); +} + + + } diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java index 4120b82d76..f2b428d9b6 100644 --- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java +++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java @@ -4076,6 +4076,7 @@ public final class CompletionEngine BinaryExpression binaryExpression = (BinaryExpression) parent; switch(operator) { case OperatorIds.EQUAL_EQUAL : + case OperatorIds.NOT_EQUAL : // expected type is not relevant in this case TypeBinding binding = binaryExpression.left.resolvedType; if (binding != null) { diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java index aa1e237189..fe2394e740 100644 --- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java +++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java @@ -630,7 +630,9 @@ protected void attachOrphanCompletionNode(){ || (expression instanceof AllocationExpression && ((AllocationExpression)expression).type == this.assistNode) || (expression instanceof AND_AND_Expression - && (this.elementPtr >= 0 && this.elementObjectInfoStack[this.elementPtr] instanceof InstanceOfExpression))){ + && (this.elementPtr >= 0 && this.elementObjectInfoStack[this.elementPtr] instanceof InstanceOfExpression)) + || (expression instanceof ConditionalExpression + && ((ConditionalExpression) expression).valueIfFalse == this.assistNode)){ buildMoreCompletionContext(expression); if (this.assistNodeParent == null && expression instanceof Assignment) { |