Bug 573948 - [17][switch pattern][content assist] JEP 406 content assist
changes
Change-Id: I4d42931d3b9b9cb1b92ac51d82275d9f366e6107
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.core/+/183818
diff --git a/org.eclipse.jdt.core.tests.model/JCL/jclMin17.jar b/org.eclipse.jdt.core.tests.model/JCL/jclMin17.jar
new file mode 100644
index 0000000..35eef29
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/JCL/jclMin17.jar
Binary files differ
diff --git a/org.eclipse.jdt.core.tests.model/JCL/jclMin17src.zip b/org.eclipse.jdt.core.tests.model/JCL/jclMin17src.zip
new file mode 100644
index 0000000..f2cbf85
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/JCL/jclMin17src.zip
Binary files differ
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests17.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests17.java
new file mode 100644
index 0000000..f832a48
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests17.java
@@ -0,0 +1,421 @@
+/*******************************************************************************
+ * Copyright (c) 2021 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests.model;
+
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+
+import junit.framework.Test;
+
+public class CompletionTests17 extends AbstractJavaModelCompletionTests {
+
+ private static int expected_Rel = R_DEFAULT+R_RESOLVED+ R_CASE+ R_INTERESTING+R_EXACT_EXPECTED_TYPE+R_NON_STATIC+R_NON_RESTRICTED;
+ private static int void_Rel = R_DEFAULT+R_RESOLVED+ R_CASE+ R_INTERESTING+ R_VOID +R_NON_STATIC+R_NON_RESTRICTED;
+ private static int nonVoid_Rel = R_DEFAULT+R_RESOLVED+ R_CASE+ R_INTERESTING +R_NON_STATIC+R_NON_RESTRICTED;
+ private static int unqualified_Rel = R_DEFAULT+R_RESOLVED+ R_CASE+ R_INTERESTING +R_UNQUALIFIED+R_NON_RESTRICTED;
+ private static int unqualifiedExact_Rel = R_DEFAULT+R_RESOLVED+R_EXACT_EXPECTED_TYPE+ R_CASE+ R_INTERESTING +R_UNQUALIFIED+R_NON_RESTRICTED;
+ static {
+ // TESTS_NAMES = new String[]{"test034"};
+ }
+
+ public CompletionTests17(String name) {
+ super(name);
+ }
+
+ public void setUpSuite() throws Exception {
+ if (COMPLETION_PROJECT == null) {
+
+ COMPLETION_PROJECT = setUpJavaProject("Completion", "17");
+ } else {
+ setUpProjectCompliance(COMPLETION_PROJECT, "17");
+ }
+ super.setUpSuite();
+ COMPLETION_PROJECT.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+ }
+
+ public static Test suite() {
+ return buildModelTestSuite(CompletionTests17.class);
+ }
+ //content assist of a java lang class in case statement in switch pattern
+ public void test001() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " switch (o) {\n" +
+ " case Integer i -> System.out.println(\"Integer:\" + i);\n" +
+ " case String /*here*/s -> System.out.println(\"String:\" + s.);\n" +
+ " default -> System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "s.";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+void_Rel+"}\n"
+ + "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+void_Rel+"}\n"
+ + "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+void_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+void_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), "+void_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+void_Rel+"}\n"
+ + "clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+nonVoid_Rel+"}\n"
+ + "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+nonVoid_Rel+"}\n"
+ + "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+nonVoid_Rel+"}\n"
+ + "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (index), "+expected_Rel+"}\n"
+ + "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+expected_Rel+"}\n"
+ + "length[METHOD_REF]{length(), Ljava.lang.String;, ()I, length, null, "+expected_Rel+"}\n"
+ + "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+expected_Rel+"}",
+ requestor.getResults());
+
+ }
+
+ //content assist of a local variable in case statement in switch pattern
+ public void test002() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static int field \n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " switch (o) {\n" +
+ " case Integer i -> System.out.println(\"Integer:\" + i);\n" +
+ " case String s -> System.out.println(\"String:\" + s + /*here*/fie);\n" +
+ " default -> System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "/*here*/fie";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("field[FIELD_REF]{field, LX;, I, field, null, "+unqualifiedExact_Rel+"}",
+ requestor.getResults());
+
+ }
+
+ //content assist of a field in guarded expression in switch pattern
+ public void test003() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static int field \n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " switch (o) {\n" +
+ " case Integer i -> System.out.println(\"Integer:\" + i);\n" +
+ " case String s && /*here*/fie -> System.out.println(\"String:\" + s );\n" +
+ " default -> System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "/*here*/fie";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("field[FIELD_REF]{field, LX;, I, field, null, "+unqualified_Rel+"}",
+ requestor.getResults());
+
+ }
+ //content assist of a primitive local in switch pattern's case statement
+ public void test004() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static int /*here*/field \n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " int local=0;" +
+ " switch (o) {\n" +
+ " case Integer i -> System.out.println(\"Integer:\" + i);\n" +
+ " case String s -> System.out.println(\"String:\" + s + /*here*/loc);\n" +
+ " default -> System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "/*here*/loc";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("local[LOCAL_VARIABLE_REF]{local, null, I, local, null, "+unqualifiedExact_Rel+"}",
+ requestor.getResults());
+
+
+
+ }
+
+ //content assist of a primitive local in switch pattern's guarded expression
+ public void test005() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static int /*here*/field \n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " int local=0;" +
+ " switch (o) {\n" +
+ " case Integer i -> System.out.println(\"Integer:\" + i);\n" +
+ " case String s && /*here*/loc -> System.out.println(\"String:\" + s);\n" +
+ " default -> System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "/*here*/loc";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("local[LOCAL_VARIABLE_REF]{local, null, I, local, null, "+unqualified_Rel+"}",
+ requestor.getResults());
+
+ }
+
+ //content assist of a class field in switch pattern's guarded expression
+ public void test006() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static String field = new String();\n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " switch (o) {\n" +
+ " case Integer i -> System.out.println(\"Integer:\" + i);\n" +
+ " case String s && /*here*/field. -> System.out.println(\"String:\" + s );\n" +
+ " default -> System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "/*here*/field.";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+nonVoid_Rel+"}\n"
+ + "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (index), "+nonVoid_Rel+"}\n"
+ + "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+nonVoid_Rel+"}\n"
+ + "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+nonVoid_Rel+"}\n"
+ + "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+nonVoid_Rel+"}\n"
+ + "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+nonVoid_Rel+"}\n"
+ + "length[METHOD_REF]{length(), Ljava.lang.String;, ()I, length, null, "+nonVoid_Rel+"}\n"
+ + "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+nonVoid_Rel+"}\n"
+ + "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+nonVoid_Rel+"}\n"
+ + "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+nonVoid_Rel+"}",
+ requestor.getResults());
+
+ }
+ //content assist of a custom class in switch pattern's guarded expression ( switch statement)
+ public void test007() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "sealed interface I permits AClass, B {}\n" +
+ "final class AClass implements S {}\n" +
+ "final class B implements S {}\n" +
+ "public class X {\n" +
+ "public static void main(String[] args) {\n" +
+ "foo(new A());\n" +
+ "}\n" +
+ "private static void foo(S o) {\n" +
+ " switch (o) {\n" +
+ " case *here*ACla : System.out.println(\"A:\" + a +a); break;\n" +
+ " case B b : System.out.println(\"B:\" + b);\n" +
+ " default : System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "*here*ACla";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("AClass[TYPE_REF]{AClass, , LAClass;, null, null, "+unqualified_Rel+"}",
+ requestor.getResults());
+
+ }
+
+ //content assist of a custom class's methods in switch pattern's guarded expression ( switch statement)
+ public void test008() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "sealed interface I permits AClass, B {}\n" +
+ "final class AClass implements S {}\n" +
+ "final class B implements S {}\n" +
+ "public class X {\n" +
+ "public static void main(String[] args) {\n" +
+ "foo(new A());\n" +
+ "}\n" +
+ "private static void foo(S o) {\n" +
+ " switch (o) {\n" +
+ " case AClass a && a. : System.out.println(\"A:\" + a +a); break;\n" +
+ " case B b : System.out.println(\"B:\" + b);\n" +
+ " default : System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "a.";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+nonVoid_Rel+"}\n"
+ + "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+nonVoid_Rel+"}\n"
+ + "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+nonVoid_Rel+"}\n"
+ + "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+nonVoid_Rel+"}\n"
+ + "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+nonVoid_Rel+"}\n"
+ + "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+nonVoid_Rel+"}\n"
+ + "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+nonVoid_Rel+"}\n"
+ + "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+nonVoid_Rel+"}",
+ requestor.getResults());
+
+ }
+ //content assist of a java lang class in switch pattern's case statement ( switch statement)
+ public void test009() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " switch (o) {\n" +
+ " case Integer i : System.out.println(\"Integer:\" + i);break;\n" +
+ " case String /*here*/s : System.out.println(\"String:\" + s.);break;\n" +
+ " default : System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "s.";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+void_Rel+"}\n"
+ + "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+void_Rel+"}\n"
+ + "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+void_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+void_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), "+void_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+void_Rel+"}\n"
+ + "clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+nonVoid_Rel+"}\n"
+ + "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+nonVoid_Rel+"}\n"
+ + "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+nonVoid_Rel+"}\n"
+ + "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (index), "+expected_Rel+"}\n"
+ + "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+expected_Rel+"}\n"
+ + "length[METHOD_REF]{length(), Ljava.lang.String;, ()I, length, null, "+expected_Rel+"}\n"
+ + "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+expected_Rel+"}",
+ requestor.getResults());
+
+ }
+
+ //content assist of a java lang class in switch pattern's guarded expression ( switch statement)
+ public void test010() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/X.java",
+ "public class X {\n" +
+ "public static void main(String[] args) {\n" +
+ "foo(Integer.valueOf(5));\n" +
+ "foo(new Object());\n" +
+ "}\n" +
+ "private static void foo(Object o) {\n" +
+ " switch (o) {\n" +
+ " case Integer i : System.out.println(\"Integer:\" + i);break;\n" +
+ " case String /*here*/s && s. : System.out.println(\"String:\" + s);break;\n" +
+ " default : System.out.println(\"Object\" + o);\n" +
+ " }\n" +
+ "}\n" +
+ "}\n"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "s.";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults("clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+nonVoid_Rel+"}\n"
+ + "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (index), "+nonVoid_Rel+"}\n"
+ + "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+nonVoid_Rel+"}\n"
+ + "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+nonVoid_Rel+"}\n"
+ + "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, getClass, null, "+nonVoid_Rel+"}\n"
+ + "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+nonVoid_Rel+"}\n"
+ + "length[METHOD_REF]{length(), Ljava.lang.String;, ()I, length, null, "+nonVoid_Rel+"}\n"
+ + "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+nonVoid_Rel+"}\n"
+ + "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+nonVoid_Rel+"}\n"
+ + "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), "+nonVoid_Rel+"}\n"
+ + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+nonVoid_Rel+"}",
+ requestor.getResults());
+
+ }
+}