langtools/test/jdk/jshell/TypeNameTest.java
changeset 34750 36d62753f5da
parent 33362 65ec6de1d6b4
child 43134 006808ae5f6e
--- a/langtools/test/jdk/jshell/TypeNameTest.java	Wed Jul 05 21:07:43 2017 +0200
+++ b/langtools/test/jdk/jshell/TypeNameTest.java	Fri Dec 11 11:20:10 2015 -0800
@@ -23,7 +23,8 @@
 
 /*
  * @test
- * @summary null test
+ * @bug 8144903
+ * @summary Tests for determining the type from the expression
  * @build KullaTesting TestingInputStream
  * @run testng TypeNameTest
  */
@@ -34,7 +35,6 @@
 
 import static jdk.jshell.Snippet.Status.VALID;
 import static org.testng.Assert.assertEquals;
-import static jdk.jshell.Snippet.Status.OVERWRITTEN;
 
 @Test
 public class TypeNameTest extends KullaTesting {
@@ -62,6 +62,11 @@
         assertEquals(sn.typeName(), "Class<? extends String>");
     }
 
+    public void testArrayTypeOfCapturedTypeName() {
+        VarSnippet sn = (VarSnippet) varKey(assertEval("\"\".getClass().getEnumConstants();"));
+        assertEquals(sn.typeName(), "String[]");
+    }
+
     public void testJavaLang() {
         VarSnippet sn = (VarSnippet) varKey(assertEval("\"\";"));
         assertEquals(sn.typeName(), "String");
@@ -83,14 +88,16 @@
         VarSnippet sn3 = (VarSnippet) varKey(assertEval("list3.iterator().next()"));
         assertEquals(sn3.typeName(), "Object");
         assertEval("class Test1<X extends CharSequence> { public X get() { return null; } }");
-        Snippet x = varKey(assertEval("Test1<?> x = new Test1<>();"));
-        VarSnippet sn4 = (VarSnippet) varKey(assertEval("x.get()"));
-        assertEquals(sn4.typeName(), "CharSequence");
-        assertEval("class Foo<X extends Number & CharSequence> { public X get() { return null; } }");
-        assertEval("Foo<?> x = new Foo<>();",
-                ste(MAIN_SNIPPET, VALID, VALID, true, null),
-                ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET));
-        VarSnippet sn5 = (VarSnippet) varKey(assertEval("x.get()"));
+        Snippet x = varKey(assertEval("Test1<?> test1 = new Test1<>();"));
+        VarSnippet sn4 = (VarSnippet) varKey(assertEval("test1.get()"));
+        assertEquals(sn4.typeName(), "Object");
+        assertEval("class Test2<X extends Number & CharSequence> { public X get() { return null; } }");
+        assertEval("Test2<?> test2 = new Test2<>();");
+        VarSnippet sn5 = (VarSnippet) varKey(assertEval("test2.get()"));
         assertEquals(sn5.typeName(), "Object");
+        assertEval("class Test3<T> { T[][] get() { return null; } }", added(VALID));
+        assertEval("Test3<? extends String> test3 = new Test3<>();");
+        VarSnippet sn6 = (VarSnippet) varKey(assertEval("test3.get()"));
+        assertEquals(sn6.typeName(), "String[][]");
     }
 }