8007545: jjs input evalinput need to be NOT_ENUMERABLE
authorjlaskey
Wed, 06 Feb 2013 08:42:19 -0400
changeset 16218 87059b530a33
parent 16217 c5ac9be5c444
child 16219 ccf1c34f26d9
8007545: jjs input evalinput need to be NOT_ENUMERABLE Reviewed-by: sundar, lagergren Contributed-by: james.laskey@oracle.com
nashorn/src/jdk/nashorn/tools/resources/shell.js
--- a/nashorn/src/jdk/nashorn/tools/resources/shell.js	Wed Feb 06 17:56:12 2013 +0530
+++ b/nashorn/src/jdk/nashorn/tools/resources/shell.js	Wed Feb 06 08:42:19 2013 -0400
@@ -1,21 +1,21 @@
 /*
  * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
- * 
+ *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that
  * accompanied this code).
- * 
+ *
  * You should have received a copy of the GNU General Public License version
  * 2 along with this work; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
@@ -27,46 +27,72 @@
 
 /**
  * Reads zero or more lines from standard input and returns concatenated string
- * 
+ *
  * @param endMarker marker string that signals end of input
  * @param prompt prompt printed for each line
  */
-function input(endMarker, prompt) {
-    if (!endMarker) {
-        endMarker = "";
-    }
-    
-    if (!prompt) {
-        prompt = " >> ";
-    }
-    
-    var imports = new JavaImporter(java.io, java.lang);
-    var str = "";
-    with (imports) {
-        var reader = new BufferedReader(new InputStreamReader(System['in']));
-        var line;
-        while (true) {
-            System.out.print(prompt);
-            line = reader.readLine();
-            if (line == null || line == endMarker) {
-                break;
+Object.defineProperty(this, "input", {
+    value: function input(endMarker, prompt) {
+        if (!endMarker) {
+            endMarker = "";
+        }
+
+        if (!prompt) {
+            prompt = " >> ";
+        }
+
+        var imports = new JavaImporter(java.io, java.lang);
+        var str = "";
+        with (imports) {
+            var reader = new BufferedReader(new InputStreamReader(System['in']));
+            var line;
+            while (true) {
+                System.out.print(prompt);
+                line = reader.readLine();
+                if (line == null || line == endMarker) {
+                    break;
+                }
+                str += line + "\n";
             }
-            str += line + "\n";
         }
-    }
-    
-    return str;
-}
+
+        return str;
+    },
+    enumerable: false,
+    writable: true,
+    configurable: true
+});
+
 
 /**
  * Reads zero or more lines from standard input and evaluates the concatenated
  * string as code
- * 
+ *
  * @param endMarker marker string that signals end of input
  * @param prompt prompt printed for each line
  */
-function evalinput(endMarker, prompt) {
-    var code = input(endMarker, prompt);
-    // make sure everything is evaluated in global scope!
-    return this.eval(code);
+Object.defineProperty(this, "evalinput", {
+    value: function evalinput(endMarker, prompt) {
+        var code = input(endMarker, prompt);
+        // make sure everything is evaluated in global scope!
+        return this.eval(code);
+    },
+    enumerable: false,
+    writable: true,
+    configurable: true
+});
+
+
+/**
+ * Elegantly exits the current session
+ */
+if (!quit) {
+Object.defineProperty(this, "quit", {
+    value: function quit() {
+        java.lang.System.exit(0);
+    },
+    enumerable: false,
+    writable: true,
+    configurable: true
+});
 }