From e7d38e04ed4b6138efeccbf96569d22559bad2cc Mon Sep 17 00:00:00 2001 From: "rogerl%netscape.com" Date: Fri, 11 Jun 1999 23:05:16 +0000 Subject: [PATCH] Mucking about with stuff. git-svn-id: svn://10.0.0.236/trunk@34891 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/js2/java/Environment.java | 7 ++++++- mozilla/js/js2/java/JSGrammar.g | 8 ++++---- mozilla/js/js2/java/JSObject.java | 20 +++++++++++++++----- mozilla/js/js2/java/NativeFunction.java | 3 +-- mozilla/js/js2/java/NativeNumber.java | 2 +- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/mozilla/js/js2/java/Environment.java b/mozilla/js/js2/java/Environment.java index 006320df63a..76a393adc33 100644 --- a/mozilla/js/js2/java/Environment.java +++ b/mozilla/js/js2/java/Environment.java @@ -3,7 +3,12 @@ import java.util.Hashtable; class Environment { - JSObject scope = new JSObject("globals"); + JSObject scope = new JSObject("globals", null); + + void enterNewScope(JSObject newScope) + { + + } String print() { diff --git a/mozilla/js/js2/java/JSGrammar.g b/mozilla/js/js2/java/JSGrammar.g index 4a0f2594bcc..78eb2fc33d1 100644 --- a/mozilla/js/js2/java/JSGrammar.g +++ b/mozilla/js/js2/java/JSGrammar.g @@ -81,15 +81,15 @@ primary_expression[boolean initial] returns [ExpressionNode e] simple_expression returns [ExpressionNode e] { e = null; } - : "null" { e = new JSObject("null"); } + : "null" { e = new JSObject("null", null); } // XXX | "true" { e = JSBoolean.JSTrue; } | "false" { e = JSBoolean.JSFalse; } | opN:NUMBER { e = new JSDouble(opN.getText()); } | opS:STRING { e = new JSString(opS.getText()); } - | "this" { e = new JSObject("this"); } - | "super" { e = new JSObject("super"); } + | "this" { e = new JSObject("this", null); } // XXX + | "super" { e = new JSObject("super", null); } // XXX | e = qualified_identifier_or_parenthesized_expression[true] - | opR:REGEXP { e = new JSObject(opR.getText()); } + | opR:REGEXP { e = new JSObject(opR.getText(), null); } // XXX | e = array_literal ; diff --git a/mozilla/js/js2/java/JSObject.java b/mozilla/js/js2/java/JSObject.java index db444dafdda..361fc410017 100644 --- a/mozilla/js/js2/java/JSObject.java +++ b/mozilla/js/js2/java/JSObject.java @@ -3,11 +3,12 @@ import java.util.Hashtable; class JSObject extends JSValue { - static JSObject JSUndefined = new JSObject("undefined"); + static JSObject JSUndefined = new JSObject("undefined", null); - JSObject(String aValue) + JSObject(String aValue, JSObject aPrototype) { value = aValue; + prototype = aPrototype; } String print(String indent) @@ -38,9 +39,17 @@ class JSObject extends JSValue { JSDouble toJSDouble(Environment theEnv) { return toPrimitive(theEnv, "Number").toJSDouble(theEnv); } - - JSValue getProp(Environment theEnv, JSString id) { - return (JSValue)(contents.get(id.s)); + + JSValue getProp(Environment theEnv, JSString id) + { + Object v = contents.get(id.s); + if (v == null) + if (prototype == null) + return JSUndefined; + else + return prototype.getProp(theEnv, id); + else + return (JSValue)v; } JSValue putProp(Environment theEnv, JSString id, JSValue rV) { @@ -53,4 +62,5 @@ class JSObject extends JSValue { String value; + JSObject prototype; } \ No newline at end of file diff --git a/mozilla/js/js2/java/NativeFunction.java b/mozilla/js/js2/java/NativeFunction.java index 6e838be01cf..99761a252fb 100644 --- a/mozilla/js/js2/java/NativeFunction.java +++ b/mozilla/js/js2/java/NativeFunction.java @@ -2,7 +2,7 @@ class NativeFunction extends JSObject { NativeFunction(ControlNode aBody) { - super("Function"); + super("Function", null); body = aBody; } @@ -14,7 +14,6 @@ class NativeFunction extends JSObject { return theEnv.resultValue; } - ControlNode body; } \ No newline at end of file diff --git a/mozilla/js/js2/java/NativeNumber.java b/mozilla/js/js2/java/NativeNumber.java index e08063c14d3..e5874497089 100644 --- a/mozilla/js/js2/java/NativeNumber.java +++ b/mozilla/js/js2/java/NativeNumber.java @@ -1,7 +1,7 @@ class NativeNumber extends JSObject { NativeNumber(double p) { - super("Number"); + super("Number", null); d = p; }