src/jdk.jshell/share/classes/jdk/jshell/Eval.java
changeset 52282 003c062e16ea
parent 49515 083318155ad1
child 52775 d488477865c0
--- a/src/jdk.jshell/share/classes/jdk/jshell/Eval.java	Thu Oct 25 11:05:24 2018 +0800
+++ b/src/jdk.jshell/share/classes/jdk/jshell/Eval.java	Wed Oct 24 21:17:30 2018 -0700
@@ -361,6 +361,33 @@
                 winit = winit == null ? Wrap.rangeWrap(compileSource, rinit) : winit;
                 nameMax = rinit.begin - 1;
             } else {
+                String sinit;
+                switch (typeName) {
+                    case "byte":
+                    case "short":
+                    case "int":
+                        sinit = "0";
+                        break;
+                    case "long":
+                        sinit = "0L";
+                        break;
+                    case "float":
+                        sinit = "0.0f";
+                        break;
+                    case "double":
+                        sinit = "0.0d";
+                        break;
+                    case "boolean":
+                        sinit = "false";
+                        break;
+                    case "char":
+                        sinit = "'\\u0000'";
+                        break;
+                    default:
+                        sinit = "null";
+                        break;
+                }
+                winit = Wrap.simpleWrap(sinit);
                 subkind = SubKind.VAR_DECLARATION_SUBKIND;
             }
             int nameStart = compileSource.lastIndexOf(name, nameMax);
@@ -861,28 +888,6 @@
                     state.debug(ex, "termination");
                     state.closeDown();
                 }
-            } else if (si.subKind() == SubKind.VAR_DECLARATION_SUBKIND) {
-                switch (((VarSnippet) si).typeName()) {
-                    case "byte":
-                    case "short":
-                    case "int":
-                    case "long":
-                        value = "0";
-                        break;
-                    case "float":
-                    case "double":
-                        value = "0.0";
-                        break;
-                    case "boolean":
-                        value = "false";
-                        break;
-                    case "char":
-                        value = "''";
-                        break;
-                    default:
-                        value = "null";
-                        break;
-                }
             }
         }
         return events(c, outs, value, exception);