Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVikas Chandra2018-09-03 08:40:56 +0000
committerVikas Chandra2018-09-11 08:24:57 +0000
commit769e3f7f08798d21cb15fe18d5e6c0fd40cafede (patch)
treea3a50df2b60173d97ec3becf118b88d2d545000a
parent749e6f86b20add3c4fa8193fea1a613d6b0a897b (diff)
downloadeclipse.jdt.core-I20180913-1800.tar.gz
eclipse.jdt.core-I20180913-1800.tar.xz
eclipse.jdt.core-I20180913-1800.zip
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>
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/FieldAccessCompletionTest.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java66
-rw-r--r--org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java1
-rw-r--r--org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java4
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) {

Back to the top