From d6b97f227781bfcc8a7f5675c788e98ac99d2b43 Mon Sep 17 00:00:00 2001 From: "jeff.dyer%compilercompany.com" Date: Mon, 4 Dec 2000 18:47:28 +0000 Subject: [PATCH] Fixed type bugs and header comments. --- js/js2/jsc/readme | 2 +- js/js2/jsc/src/java/generator/JSILGenerator.java | 2 +- js/js2/jsc/src/java/input/CharacterClasses.java | 4 ++++ js/js2/jsc/src/java/input/Debugger.java | 8 +++----- js/js2/jsc/src/java/input/InputBuffer.java | 8 +++----- js/js2/jsc/src/java/input/Shell.java | 2 +- js/js2/jsc/src/java/lexer/Scanner.java | 2 +- js/js2/jsc/src/java/lexer/Shell.java | 4 ++-- js/js2/jsc/src/java/lexer/States.java | 5 +++-- js/js2/jsc/src/java/lexer/Token.java | 2 +- js/js2/jsc/src/java/lexer/Tokens.java | 2 +- js/js2/jsc/src/java/main/Main.java | 4 +++- js/js2/jsc/src/java/main/Util.java | 11 ++--------- js/js2/jsc/src/java/parser/Attributes.java | 4 ++++ js/js2/jsc/src/java/parser/Block.java | 2 +- js/js2/jsc/src/java/parser/Context.java | 2 +- js/js2/jsc/src/java/parser/Errors.java | 2 +- js/js2/jsc/src/java/parser/Evaluator.java | 3 +-- js/js2/jsc/src/java/parser/Init.java | 2 +- js/js2/jsc/src/java/parser/Node.java | 4 +--- js/js2/jsc/src/java/parser/NodeFactory.java | 4 ++++ js/js2/jsc/src/java/parser/Nodes.java | 4 ++++ js/js2/jsc/src/java/parser/Parser.java | 4 +--- js/js2/jsc/src/java/parser/Scope.java | 2 +- js/js2/jsc/src/java/parser/Slot.java | 2 +- js/js2/jsc/src/java/parser/Type.java | 2 +- js/js2/jsc/src/java/parser/Value.java | 4 +--- js/js2/jsc/src/java/semantics/BlockEvaluator.java | 11 +++++------ js/js2/jsc/src/java/semantics/ConstantEvaluator.java | 6 +++--- js/js2/jsc/src/java/semantics/types/ClassType.java | 4 ++-- js/js2/jsc/src/java/semantics/types/ObjectType.java | 10 ++++------ .../jsc/src/java/semantics/values/BooleanValue.java | 2 +- .../src/java/semantics/values/CharacterValue.java | 2 +- js/js2/jsc/src/java/semantics/values/CodeValue.java | 5 ++--- .../src/java/semantics/values/CompletionValue.java | 2 +- .../jsc/src/java/semantics/values/GlobalObject.java | 2 +- js/js2/jsc/src/java/semantics/values/ListValue.java | 2 +- js/js2/jsc/src/java/semantics/values/NullValue.java | 2 +- .../jsc/src/java/semantics/values/NumberValue.java | 2 +- .../jsc/src/java/semantics/values/ObjectValue.java | 3 ++- .../src/java/semantics/values/ReferenceValue.java | 12 ++++++------ .../jsc/src/java/semantics/values/StringValue.java | 2 +- js/js2/jsc/src/java/semantics/values/TypeValue.java | 2 +- .../src/java/semantics/values/UndefinedValue.java | 2 +- js2/jsc/readme | 2 +- js2/jsc/src/java/generator/JSILGenerator.java | 2 +- js2/jsc/src/java/input/CharacterClasses.java | 4 ++++ js2/jsc/src/java/input/Debugger.java | 8 +++----- js2/jsc/src/java/input/InputBuffer.java | 8 +++----- js2/jsc/src/java/input/Shell.java | 2 +- js2/jsc/src/java/lexer/Scanner.java | 2 +- js2/jsc/src/java/lexer/Shell.java | 4 ++-- js2/jsc/src/java/lexer/States.java | 5 +++-- js2/jsc/src/java/lexer/Token.java | 2 +- js2/jsc/src/java/lexer/Tokens.java | 2 +- js2/jsc/src/java/main/Main.java | 4 +++- js2/jsc/src/java/main/Util.java | 11 ++--------- js2/jsc/src/java/parser/Attributes.java | 4 ++++ js2/jsc/src/java/parser/Block.java | 2 +- js2/jsc/src/java/parser/Context.java | 2 +- js2/jsc/src/java/parser/Errors.java | 2 +- js2/jsc/src/java/parser/Evaluator.java | 3 +-- js2/jsc/src/java/parser/Init.java | 2 +- js2/jsc/src/java/parser/Node.java | 4 +--- js2/jsc/src/java/parser/NodeFactory.java | 4 ++++ js2/jsc/src/java/parser/Nodes.java | 4 ++++ js2/jsc/src/java/parser/Parser.java | 4 +--- js2/jsc/src/java/parser/Scope.java | 2 +- js2/jsc/src/java/parser/Slot.java | 2 +- js2/jsc/src/java/parser/Type.java | 2 +- js2/jsc/src/java/parser/Value.java | 4 +--- js2/jsc/src/java/semantics/BlockEvaluator.java | 11 +++++------ js2/jsc/src/java/semantics/ConstantEvaluator.java | 6 +++--- js2/jsc/src/java/semantics/types/ClassType.java | 4 ++-- js2/jsc/src/java/semantics/types/ObjectType.java | 10 ++++------ js2/jsc/src/java/semantics/values/BooleanValue.java | 2 +- .../src/java/semantics/values/CharacterValue.java | 2 +- js2/jsc/src/java/semantics/values/CodeValue.java | 5 ++--- .../src/java/semantics/values/CompletionValue.java | 2 +- js2/jsc/src/java/semantics/values/GlobalObject.java | 2 +- js2/jsc/src/java/semantics/values/ListValue.java | 2 +- js2/jsc/src/java/semantics/values/NullValue.java | 2 +- js2/jsc/src/java/semantics/values/NumberValue.java | 2 +- js2/jsc/src/java/semantics/values/ObjectValue.java | 3 ++- .../src/java/semantics/values/ReferenceValue.java | 12 ++++++------ js2/jsc/src/java/semantics/values/StringValue.java | 2 +- js2/jsc/src/java/semantics/values/TypeValue.java | 2 +- .../src/java/semantics/values/UndefinedValue.java | 2 +- 88 files changed, 166 insertions(+), 170 deletions(-) diff --git a/js/js2/jsc/readme b/js/js2/jsc/readme index 7c6fde27690e..a27f1229a7dc 100644 --- a/js/js2/jsc/readme +++ b/js/js2/jsc/readme @@ -42,7 +42,7 @@ parser, semantics, and generator) of the compiler. Thus, a useful idiom is to give 'make' two targets, the component you just modified followed by the sanity test target like this: - make parser sanity + make parser sanity To automatically rebuild the parser and run the sanity test. What's missing is any kind of dependency rules, so using the root target diff --git a/js/js2/jsc/src/java/generator/JSILGenerator.java b/js/js2/jsc/src/java/generator/JSILGenerator.java index 095b09a815cf..19a67ec9b948 100644 --- a/js/js2/jsc/src/java/generator/JSILGenerator.java +++ b/js/js2/jsc/src/java/generator/JSILGenerator.java @@ -24,7 +24,7 @@ package com.compilercompany.ecmascript; import java.io.*; /** - * JSILGenerator + * Generates psuedo intermediate code. */ public class JSILGenerator extends Evaluator implements Tokens { diff --git a/js/js2/jsc/src/java/input/CharacterClasses.java b/js/js2/jsc/src/java/input/CharacterClasses.java index 8d204a860ab8..357bdf26c686 100644 --- a/js/js2/jsc/src/java/input/CharacterClasses.java +++ b/js/js2/jsc/src/java/input/CharacterClasses.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Unicode character classes. + */ + package com.compilercompany.ecmascript; interface CharacterClasses { diff --git a/js/js2/jsc/src/java/input/Debugger.java b/js/js2/jsc/src/java/input/Debugger.java index f808646af7ca..0df2605a651d 100644 --- a/js/js2/jsc/src/java/input/Debugger.java +++ b/js/js2/jsc/src/java/input/Debugger.java @@ -23,11 +23,9 @@ package com.compilercompany.ecmascript; import java.io.*; -/** - * - * class Debugger - * -**/ +/* + * Debugging tool. + */ public final class Debugger { diff --git a/js/js2/jsc/src/java/input/InputBuffer.java b/js/js2/jsc/src/java/input/InputBuffer.java index 8facd35d04e8..6900ed19f10f 100644 --- a/js/js2/jsc/src/java/input/InputBuffer.java +++ b/js/js2/jsc/src/java/input/InputBuffer.java @@ -21,9 +21,7 @@ */ /** - * InputBuffer.java - * - * Filters and buffers characters from a Reader. + * Filters and buffers characters from a input reader. */ package com.compilercompany.ecmascript; @@ -490,13 +488,13 @@ public class InputBuffer implements CharacterClasses { } public int getColPos(int pos) { - Debugger.trace("pos " + pos); + //Debugger.trace("pos " + pos); int i,len; for(i = 0; line_breaks[i] <= pos && i <= lnNum; i++) ; int offset = line_breaks[i-1]; - Debugger.trace("offset " + offset); + //Debugger.trace("offset " + offset); return pos-offset; } diff --git a/js/js2/jsc/src/java/input/Shell.java b/js/js2/jsc/src/java/input/Shell.java index 45973083b77a..668ce800e639 100644 --- a/js/js2/jsc/src/java/input/Shell.java +++ b/js/js2/jsc/src/java/input/Shell.java @@ -26,7 +26,7 @@ import sun.tools.javac.*; import java.io.*; /** - * class Shell + * A test shell. */ public final class Shell { diff --git a/js/js2/jsc/src/java/lexer/Scanner.java b/js/js2/jsc/src/java/lexer/Scanner.java index 5a8c424cb0ee..d328cc835192 100644 --- a/js/js2/jsc/src/java/lexer/Scanner.java +++ b/js/js2/jsc/src/java/lexer/Scanner.java @@ -21,7 +21,7 @@ */ /** - * Scanner.java + * Scans input for tokens. */ diff --git a/js/js2/jsc/src/java/lexer/Shell.java b/js/js2/jsc/src/java/lexer/Shell.java index 7e05da22cd76..d14d4627b844 100644 --- a/js/js2/jsc/src/java/lexer/Shell.java +++ b/js/js2/jsc/src/java/lexer/Shell.java @@ -25,8 +25,8 @@ import java.lang.reflect.*; import sun.tools.javac.*; import java.io.*; -/** - * class Shell +/* + * A test tool. */ public final class Shell implements Tokens { diff --git a/js/js2/jsc/src/java/lexer/States.java b/js/js2/jsc/src/java/lexer/States.java index f8d156797b75..d68d822b67ed 100644 --- a/js/js2/jsc/src/java/lexer/States.java +++ b/js/js2/jsc/src/java/lexer/States.java @@ -22,8 +22,9 @@ package com.compilercompany.ecmascript; -/** -**/ +/* + * The states of the scanner. + */ interface States { diff --git a/js/js2/jsc/src/java/lexer/Token.java b/js/js2/jsc/src/java/lexer/Token.java index 6d2800572ad8..0dd1573e3d0a 100644 --- a/js/js2/jsc/src/java/lexer/Token.java +++ b/js/js2/jsc/src/java/lexer/Token.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Token.java + * Represents token instances: literals and identifiers. * * This file implements the class Token that is used to carry * information from the Scanner to the Parser. diff --git a/js/js2/jsc/src/java/lexer/Tokens.java b/js/js2/jsc/src/java/lexer/Tokens.java index ad021befb70f..3282b8192302 100644 --- a/js/js2/jsc/src/java/lexer/Tokens.java +++ b/js/js2/jsc/src/java/lexer/Tokens.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Tokens.java + * Defines token classes and their print names. * * This interface defines values for each token class that occurs in * ECMAScript 4. All but numericliteral, stringliteral, regexpliteral, and diff --git a/js/js2/jsc/src/java/main/Main.java b/js/js2/jsc/src/java/main/Main.java index 02df1744201b..5f7283a9b38c 100644 --- a/js/js2/jsc/src/java/main/Main.java +++ b/js/js2/jsc/src/java/main/Main.java @@ -24,8 +24,10 @@ import com.compilercompany.ecmascript.*; import sun.tools.util.CommandLine; import java.io.*; -/** +/* + * The main driver. */ + public class Main { String[] classes; diff --git a/js/js2/jsc/src/java/main/Util.java b/js/js2/jsc/src/java/main/Util.java index 6103e52bb251..b8702e6b6fbd 100644 --- a/js/js2/jsc/src/java/main/Util.java +++ b/js/js2/jsc/src/java/main/Util.java @@ -27,15 +27,8 @@ import java.util.ResourceBundle; import java.text.MessageFormat; import java.util.MissingResourceException; -/** - * Messages, verbose and error handling support. - * - * For errors, the failure modes are: - * error -- User did something wrong - * bug -- Bug has occurred in javah - * fatal -- We can't even find resources, so bail fast, don't localize - * - * @version 1.6, 02/02/00 +/* + * Utility for the main driver. */ public class Util { diff --git a/js/js2/jsc/src/java/parser/Attributes.java b/js/js2/jsc/src/java/parser/Attributes.java index c7c05026a029..0375dd40a909 100644 --- a/js/js2/jsc/src/java/parser/Attributes.java +++ b/js/js2/jsc/src/java/parser/Attributes.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Not used. + */ + package com.compilercompany.ecmascript; interface Attributes { diff --git a/js/js2/jsc/src/java/parser/Block.java b/js/js2/jsc/src/java/parser/Block.java index f4225cd1d3df..a3f2dc23f523 100644 --- a/js/js2/jsc/src/java/parser/Block.java +++ b/js/js2/jsc/src/java/parser/Block.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class Block + * Represents a basic block for flow analysis. */ public class Block { diff --git a/js/js2/jsc/src/java/parser/Context.java b/js/js2/jsc/src/java/parser/Context.java index a343ed4ef911..91368b50f748 100644 --- a/js/js2/jsc/src/java/parser/Context.java +++ b/js/js2/jsc/src/java/parser/Context.java @@ -27,7 +27,7 @@ import java.util.Enumeration; import java.util.Hashtable; /** - * Context + * Context used during semantic analysis. */ public class Context { diff --git a/js/js2/jsc/src/java/parser/Errors.java b/js/js2/jsc/src/java/parser/Errors.java index 4ede830b36eb..d89d9536d63a 100644 --- a/js/js2/jsc/src/java/parser/Errors.java +++ b/js/js2/jsc/src/java/parser/Errors.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * interface Errors + * Not used. **/ public interface Errors { diff --git a/js/js2/jsc/src/java/parser/Evaluator.java b/js/js2/jsc/src/java/parser/Evaluator.java index 36899f5be1e9..7d676ed15905 100644 --- a/js/js2/jsc/src/java/parser/Evaluator.java +++ b/js/js2/jsc/src/java/parser/Evaluator.java @@ -23,8 +23,7 @@ package com.compilercompany.ecmascript; /** - * - * Evaluator + * The base visitor object extended by semantic evaluators. * * This is a visitor that is used by the compiler for various forms for * evaluation of a parse tree (e.g. a type evaluator might compute the diff --git a/js/js2/jsc/src/java/parser/Init.java b/js/js2/jsc/src/java/parser/Init.java index 157a74fd3ce4..d95bd547332c 100644 --- a/js/js2/jsc/src/java/parser/Init.java +++ b/js/js2/jsc/src/java/parser/Init.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * interface Init + * Interface that object initializers implement. * * This interface is implemented by objects that can build * instances of the Value class. For example, there is an diff --git a/js/js2/jsc/src/java/parser/Node.java b/js/js2/jsc/src/java/parser/Node.java index 0556084dbc4a..2e9cf95a30bc 100644 --- a/js/js2/jsc/src/java/parser/Node.java +++ b/js/js2/jsc/src/java/parser/Node.java @@ -23,9 +23,7 @@ package com.compilercompany.ecmascript; /** - * class Node - * - * To be a node you need to implement this interface. + * The base Node class. */ public class Node { diff --git a/js/js2/jsc/src/java/parser/NodeFactory.java b/js/js2/jsc/src/java/parser/NodeFactory.java index edabecd18310..ef819181b5e2 100644 --- a/js/js2/jsc/src/java/parser/NodeFactory.java +++ b/js/js2/jsc/src/java/parser/NodeFactory.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Creates parse tree nodes. + */ + package com.compilercompany.ecmascript; public final class NodeFactory { diff --git a/js/js2/jsc/src/java/parser/Nodes.java b/js/js2/jsc/src/java/parser/Nodes.java index c7cdd752f8b2..2162cde380c6 100644 --- a/js/js2/jsc/src/java/parser/Nodes.java +++ b/js/js2/jsc/src/java/parser/Nodes.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Parse tree nodes. + */ + package com.compilercompany.ecmascript; /** diff --git a/js/js2/jsc/src/java/parser/Parser.java b/js/js2/jsc/src/java/parser/Parser.java index 8930d810ee25..9a946a6ee1fb 100644 --- a/js/js2/jsc/src/java/parser/Parser.java +++ b/js/js2/jsc/src/java/parser/Parser.java @@ -26,9 +26,7 @@ import java.io.*; import java.lang.reflect.*; /** - * class Parser - * - * Parses ES4 programs. + * Parse JS2 programs. */ public class Parser implements Tokens, Errors { diff --git a/js/js2/jsc/src/java/parser/Scope.java b/js/js2/jsc/src/java/parser/Scope.java index 0be4088f7e87..038ad7cbbe3d 100644 --- a/js/js2/jsc/src/java/parser/Scope.java +++ b/js/js2/jsc/src/java/parser/Scope.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Scope + * A scope, which contains slots. */ public interface Scope { diff --git a/js/js2/jsc/src/java/parser/Slot.java b/js/js2/jsc/src/java/parser/Slot.java index 24107c46e16d..d1727d0deb20 100644 --- a/js/js2/jsc/src/java/parser/Slot.java +++ b/js/js2/jsc/src/java/parser/Slot.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Slot + * A slot. */ public class Slot { diff --git a/js/js2/jsc/src/java/parser/Type.java b/js/js2/jsc/src/java/parser/Type.java index 28c1b15b2c2b..5da03e64cd90 100644 --- a/js/js2/jsc/src/java/parser/Type.java +++ b/js/js2/jsc/src/java/parser/Type.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * + * The interfaces for all types. */ public interface Type extends Init { diff --git a/js/js2/jsc/src/java/parser/Value.java b/js/js2/jsc/src/java/parser/Value.java index bb706f4c67b4..b2429b07f9cf 100644 --- a/js/js2/jsc/src/java/parser/Value.java +++ b/js/js2/jsc/src/java/parser/Value.java @@ -25,9 +25,7 @@ import java.util.Hashtable; import java.util.Vector; /** - * Value - * - * This is the value class from which all other values derive. + * The value class from which all other values derive. */ abstract public class Value implements Scope { diff --git a/js/js2/jsc/src/java/semantics/BlockEvaluator.java b/js/js2/jsc/src/java/semantics/BlockEvaluator.java index 4bcac01fe788..e256aee1905c 100644 --- a/js/js2/jsc/src/java/semantics/BlockEvaluator.java +++ b/js/js2/jsc/src/java/semantics/BlockEvaluator.java @@ -26,13 +26,12 @@ import java.lang.reflect.*; import java.util.*; /** - * class BlockEvaluator + * Delineates the program into its basic execution blocks. * - * The purpose of this pass is to delineate the basic - * blocks of the program. It is necessary to know all - * the blocks in the program before we can mark the - * flow-control edges and compute the dominance relationship - * between a reference and definition. + * It is necessary to know all the blocks in the program + * before we can mark the flow-control edges and compute + * the dominance relationship between a reference and + * definition. * * The algorithm for partitioning the program into basic * blocks goes like this: diff --git a/js/js2/jsc/src/java/semantics/ConstantEvaluator.java b/js/js2/jsc/src/java/semantics/ConstantEvaluator.java index 06069fe5ce5e..b6124b08f4fa 100644 --- a/js/js2/jsc/src/java/semantics/ConstantEvaluator.java +++ b/js/js2/jsc/src/java/semantics/ConstantEvaluator.java @@ -25,7 +25,7 @@ import java.util.*; import java.io.StringReader; /** - * ConstantEvaluator + * Computes the compile-time values of a program. * * The ConstantEvaluator evaluates all expressions to either Undefined or * a definite constant value. Each statement evaluates to a CompletionValue @@ -38,7 +38,7 @@ import java.io.StringReader; public class ConstantEvaluator extends Evaluator implements Tokens, Attributes { - private static final boolean debug = false; + private static final boolean debug = true; // Expressions @@ -81,7 +81,7 @@ public class ConstantEvaluator extends Evaluator implements Tokens, Attributes { } if( qualifier != null && - !(NamespaceType.type.includes(qualifier) || ClassType.type.includes(qualifier)) ) { + !(NamespaceType.type.includes(qualifier) || TypeType.type.includes(qualifier)) ) { error(context,0,"Identifier qualifier must evaluate to a namespace or type.",node.qualifier.pos()); return UndefinedValue.undefinedValue; } diff --git a/js/js2/jsc/src/java/semantics/types/ClassType.java b/js/js2/jsc/src/java/semantics/types/ClassType.java index 84ec4ac01591..756ba60d4dc1 100644 --- a/js/js2/jsc/src/java/semantics/types/ClassType.java +++ b/js/js2/jsc/src/java/semantics/types/ClassType.java @@ -29,7 +29,7 @@ import java.util.Vector; public final class ClassType extends ObjectType implements Type { - boolean debug = false; + private static final boolean debug = false; public static final TypeValue type = new TypeValue(new ClassType()); @@ -47,7 +47,7 @@ public final class ClassType extends ObjectType implements Type { private ClassType() { super("class"); - TypeType.type.addSub(this); + ObjectType.type.addSub(this); } private Type superType; diff --git a/js/js2/jsc/src/java/semantics/types/ObjectType.java b/js/js2/jsc/src/java/semantics/types/ObjectType.java index 53250cdf8443..87b2e69a809b 100644 --- a/js/js2/jsc/src/java/semantics/types/ObjectType.java +++ b/js/js2/jsc/src/java/semantics/types/ObjectType.java @@ -29,7 +29,7 @@ import java.util.Vector; public class ObjectType implements Type { - private static final boolean debug = false; + private static final boolean debug = true; public static final TypeValue type = new TypeValue(new ObjectType()); @@ -108,11 +108,9 @@ public class ObjectType implements Type { public boolean includes(Value value) { - // A type is always a member of itself. - - if(value.type==ObjectType.type) { - return true; - } + if( debug ) { + Debugger.trace("ObjectType.includes() with this = " + this + ", value.type = " + value.type + ", values_ = " + values_); + } return values_.contains(value.type); } diff --git a/js/js2/jsc/src/java/semantics/values/BooleanValue.java b/js/js2/jsc/src/java/semantics/values/BooleanValue.java index 30ca45d33962..9d94e46a8810 100644 --- a/js/js2/jsc/src/java/semantics/values/BooleanValue.java +++ b/js/js2/jsc/src/java/semantics/values/BooleanValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class BooleanValue + * A boolean value: true or false. */ public class BooleanValue extends ObjectValue { diff --git a/js/js2/jsc/src/java/semantics/values/CharacterValue.java b/js/js2/jsc/src/java/semantics/values/CharacterValue.java index 547e69b6f320..dbe4209c9973 100644 --- a/js/js2/jsc/src/java/semantics/values/CharacterValue.java +++ b/js/js2/jsc/src/java/semantics/values/CharacterValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class CharacterValue + * A character value. */ public class CharacterValue extends ObjectValue { diff --git a/js/js2/jsc/src/java/semantics/values/CodeValue.java b/js/js2/jsc/src/java/semantics/values/CodeValue.java index 78579361a99b..96d7f2d70df9 100644 --- a/js/js2/jsc/src/java/semantics/values/CodeValue.java +++ b/js/js2/jsc/src/java/semantics/values/CodeValue.java @@ -24,10 +24,9 @@ package com.compilercompany.ecmascript; import java.util.Vector; /** - * class CodeValue + * A code value (intermediate). * - * This value holds the compiled code for an unevaluated - * expression. + * This value holds the intermediate code for an non-constant value. */ public class CodeValue extends Value { diff --git a/js/js2/jsc/src/java/semantics/values/CompletionValue.java b/js/js2/jsc/src/java/semantics/values/CompletionValue.java index 38c7f1899914..c3243e93728f 100644 --- a/js/js2/jsc/src/java/semantics/values/CompletionValue.java +++ b/js/js2/jsc/src/java/semantics/values/CompletionValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class CompletionValue + * A completion value (intermediate). */ public class CompletionValue extends Value { diff --git a/js/js2/jsc/src/java/semantics/values/GlobalObject.java b/js/js2/jsc/src/java/semantics/values/GlobalObject.java index 2f83a9217415..695e8ab9db1b 100644 --- a/js/js2/jsc/src/java/semantics/values/GlobalObject.java +++ b/js/js2/jsc/src/java/semantics/values/GlobalObject.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * GlobalObject + * The global object initializer. * * An instance of this class is used to initialize a global * object. diff --git a/js/js2/jsc/src/java/semantics/values/ListValue.java b/js/js2/jsc/src/java/semantics/values/ListValue.java index 38576b6f4be0..bbc432c20f4c 100644 --- a/js/js2/jsc/src/java/semantics/values/ListValue.java +++ b/js/js2/jsc/src/java/semantics/values/ListValue.java @@ -25,7 +25,7 @@ import java.util.Vector; import java.util.Enumeration; /** - * class ListValue + * A list value (intermediate). */ public class ListValue extends ObjectValue { diff --git a/js/js2/jsc/src/java/semantics/values/NullValue.java b/js/js2/jsc/src/java/semantics/values/NullValue.java index e3d58c98a795..9cbe007fd380 100644 --- a/js/js2/jsc/src/java/semantics/values/NullValue.java +++ b/js/js2/jsc/src/java/semantics/values/NullValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class NullValue + * The null value. */ public class NullValue extends ObjectValue { diff --git a/js/js2/jsc/src/java/semantics/values/NumberValue.java b/js/js2/jsc/src/java/semantics/values/NumberValue.java index 45d753cec8ea..fcd111ab5a12 100644 --- a/js/js2/jsc/src/java/semantics/values/NumberValue.java +++ b/js/js2/jsc/src/java/semantics/values/NumberValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class NumberValue + * A number value. */ public final class NumberValue extends ObjectValue { diff --git a/js/js2/jsc/src/java/semantics/values/ObjectValue.java b/js/js2/jsc/src/java/semantics/values/ObjectValue.java index 933fb4f9b963..d056b99c49c2 100644 --- a/js/js2/jsc/src/java/semantics/values/ObjectValue.java +++ b/js/js2/jsc/src/java/semantics/values/ObjectValue.java @@ -26,7 +26,7 @@ import java.util.Vector; import java.util.Enumeration; /** - * ObjectValue + * An object value. */ public class ObjectValue extends Value implements Attributes, Scope { @@ -46,6 +46,7 @@ public class ObjectValue extends Value implements Attributes, Scope { */ public ObjectValue() { + this.type = null; } /** diff --git a/js/js2/jsc/src/java/semantics/values/ReferenceValue.java b/js/js2/jsc/src/java/semantics/values/ReferenceValue.java index 4e33c78e849a..4605bd1cf1bb 100644 --- a/js/js2/jsc/src/java/semantics/values/ReferenceValue.java +++ b/js/js2/jsc/src/java/semantics/values/ReferenceValue.java @@ -25,12 +25,12 @@ import java.util.Vector; import java.util.Enumeration; /** - * class ReferenceValue + * A reference value. */ public class ReferenceValue extends Value { - private static final boolean debug = false; + private static final boolean debug = true; Scope scope; Vector namespaces; @@ -101,7 +101,7 @@ public class ReferenceValue extends Value { public Slot getSlot(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getSlot() with context = " + context ); + Debugger.trace("ReferenceValue.getSlot() with namespaces = " + namespaces + ", name = " + name ); } Slot slot = null; @@ -140,7 +140,7 @@ public class ReferenceValue extends Value { public Value getValue(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getValue() with context = " + context ); + Debugger.trace("ReferenceValue.getValue() with namespaces = " + namespaces + ", name = " + name ); } Value value = UndefinedValue.undefinedValue; @@ -169,7 +169,7 @@ public class ReferenceValue extends Value { public Value getType(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getValue() with context = " + context ); + Debugger.trace("ReferenceValue.getType() with namespaces = " + namespaces + ", name = " + name ); } Value type = ObjectType.type; @@ -183,7 +183,7 @@ public class ReferenceValue extends Value { Value getAttrs(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getAttrs() with context = " + context ); + Debugger.trace("ReferenceValue.getAttrs() with namespaces = " + namespaces + ", name = " + name ); } Value attrs = null; diff --git a/js/js2/jsc/src/java/semantics/values/StringValue.java b/js/js2/jsc/src/java/semantics/values/StringValue.java index 2e78b6d726a9..6879408b3c25 100644 --- a/js/js2/jsc/src/java/semantics/values/StringValue.java +++ b/js/js2/jsc/src/java/semantics/values/StringValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class StringValue + * A string value. */ public final class StringValue extends ObjectValue { diff --git a/js/js2/jsc/src/java/semantics/values/TypeValue.java b/js/js2/jsc/src/java/semantics/values/TypeValue.java index 492356ca2fee..d7645dbdf95c 100644 --- a/js/js2/jsc/src/java/semantics/values/TypeValue.java +++ b/js/js2/jsc/src/java/semantics/values/TypeValue.java @@ -25,7 +25,7 @@ import java.util.Vector; import java.util.Enumeration; /** - * class TypeValue + * A type value. * * TypeValues have an internal property valueType that is * the type that this value represents. The type of a TypeValue diff --git a/js/js2/jsc/src/java/semantics/values/UndefinedValue.java b/js/js2/jsc/src/java/semantics/values/UndefinedValue.java index 306b0838d47f..c115fd54d095 100644 --- a/js/js2/jsc/src/java/semantics/values/UndefinedValue.java +++ b/js/js2/jsc/src/java/semantics/values/UndefinedValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class UndefinedValue + * The undefined value. */ public class UndefinedValue extends ObjectValue { diff --git a/js2/jsc/readme b/js2/jsc/readme index 7c6fde27690e..a27f1229a7dc 100644 --- a/js2/jsc/readme +++ b/js2/jsc/readme @@ -42,7 +42,7 @@ parser, semantics, and generator) of the compiler. Thus, a useful idiom is to give 'make' two targets, the component you just modified followed by the sanity test target like this: - make parser sanity + make parser sanity To automatically rebuild the parser and run the sanity test. What's missing is any kind of dependency rules, so using the root target diff --git a/js2/jsc/src/java/generator/JSILGenerator.java b/js2/jsc/src/java/generator/JSILGenerator.java index 095b09a815cf..19a67ec9b948 100644 --- a/js2/jsc/src/java/generator/JSILGenerator.java +++ b/js2/jsc/src/java/generator/JSILGenerator.java @@ -24,7 +24,7 @@ package com.compilercompany.ecmascript; import java.io.*; /** - * JSILGenerator + * Generates psuedo intermediate code. */ public class JSILGenerator extends Evaluator implements Tokens { diff --git a/js2/jsc/src/java/input/CharacterClasses.java b/js2/jsc/src/java/input/CharacterClasses.java index 8d204a860ab8..357bdf26c686 100644 --- a/js2/jsc/src/java/input/CharacterClasses.java +++ b/js2/jsc/src/java/input/CharacterClasses.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Unicode character classes. + */ + package com.compilercompany.ecmascript; interface CharacterClasses { diff --git a/js2/jsc/src/java/input/Debugger.java b/js2/jsc/src/java/input/Debugger.java index f808646af7ca..0df2605a651d 100644 --- a/js2/jsc/src/java/input/Debugger.java +++ b/js2/jsc/src/java/input/Debugger.java @@ -23,11 +23,9 @@ package com.compilercompany.ecmascript; import java.io.*; -/** - * - * class Debugger - * -**/ +/* + * Debugging tool. + */ public final class Debugger { diff --git a/js2/jsc/src/java/input/InputBuffer.java b/js2/jsc/src/java/input/InputBuffer.java index 8facd35d04e8..6900ed19f10f 100644 --- a/js2/jsc/src/java/input/InputBuffer.java +++ b/js2/jsc/src/java/input/InputBuffer.java @@ -21,9 +21,7 @@ */ /** - * InputBuffer.java - * - * Filters and buffers characters from a Reader. + * Filters and buffers characters from a input reader. */ package com.compilercompany.ecmascript; @@ -490,13 +488,13 @@ public class InputBuffer implements CharacterClasses { } public int getColPos(int pos) { - Debugger.trace("pos " + pos); + //Debugger.trace("pos " + pos); int i,len; for(i = 0; line_breaks[i] <= pos && i <= lnNum; i++) ; int offset = line_breaks[i-1]; - Debugger.trace("offset " + offset); + //Debugger.trace("offset " + offset); return pos-offset; } diff --git a/js2/jsc/src/java/input/Shell.java b/js2/jsc/src/java/input/Shell.java index 45973083b77a..668ce800e639 100644 --- a/js2/jsc/src/java/input/Shell.java +++ b/js2/jsc/src/java/input/Shell.java @@ -26,7 +26,7 @@ import sun.tools.javac.*; import java.io.*; /** - * class Shell + * A test shell. */ public final class Shell { diff --git a/js2/jsc/src/java/lexer/Scanner.java b/js2/jsc/src/java/lexer/Scanner.java index 5a8c424cb0ee..d328cc835192 100644 --- a/js2/jsc/src/java/lexer/Scanner.java +++ b/js2/jsc/src/java/lexer/Scanner.java @@ -21,7 +21,7 @@ */ /** - * Scanner.java + * Scans input for tokens. */ diff --git a/js2/jsc/src/java/lexer/Shell.java b/js2/jsc/src/java/lexer/Shell.java index 7e05da22cd76..d14d4627b844 100644 --- a/js2/jsc/src/java/lexer/Shell.java +++ b/js2/jsc/src/java/lexer/Shell.java @@ -25,8 +25,8 @@ import java.lang.reflect.*; import sun.tools.javac.*; import java.io.*; -/** - * class Shell +/* + * A test tool. */ public final class Shell implements Tokens { diff --git a/js2/jsc/src/java/lexer/States.java b/js2/jsc/src/java/lexer/States.java index f8d156797b75..d68d822b67ed 100644 --- a/js2/jsc/src/java/lexer/States.java +++ b/js2/jsc/src/java/lexer/States.java @@ -22,8 +22,9 @@ package com.compilercompany.ecmascript; -/** -**/ +/* + * The states of the scanner. + */ interface States { diff --git a/js2/jsc/src/java/lexer/Token.java b/js2/jsc/src/java/lexer/Token.java index 6d2800572ad8..0dd1573e3d0a 100644 --- a/js2/jsc/src/java/lexer/Token.java +++ b/js2/jsc/src/java/lexer/Token.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Token.java + * Represents token instances: literals and identifiers. * * This file implements the class Token that is used to carry * information from the Scanner to the Parser. diff --git a/js2/jsc/src/java/lexer/Tokens.java b/js2/jsc/src/java/lexer/Tokens.java index ad021befb70f..3282b8192302 100644 --- a/js2/jsc/src/java/lexer/Tokens.java +++ b/js2/jsc/src/java/lexer/Tokens.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Tokens.java + * Defines token classes and their print names. * * This interface defines values for each token class that occurs in * ECMAScript 4. All but numericliteral, stringliteral, regexpliteral, and diff --git a/js2/jsc/src/java/main/Main.java b/js2/jsc/src/java/main/Main.java index 02df1744201b..5f7283a9b38c 100644 --- a/js2/jsc/src/java/main/Main.java +++ b/js2/jsc/src/java/main/Main.java @@ -24,8 +24,10 @@ import com.compilercompany.ecmascript.*; import sun.tools.util.CommandLine; import java.io.*; -/** +/* + * The main driver. */ + public class Main { String[] classes; diff --git a/js2/jsc/src/java/main/Util.java b/js2/jsc/src/java/main/Util.java index 6103e52bb251..b8702e6b6fbd 100644 --- a/js2/jsc/src/java/main/Util.java +++ b/js2/jsc/src/java/main/Util.java @@ -27,15 +27,8 @@ import java.util.ResourceBundle; import java.text.MessageFormat; import java.util.MissingResourceException; -/** - * Messages, verbose and error handling support. - * - * For errors, the failure modes are: - * error -- User did something wrong - * bug -- Bug has occurred in javah - * fatal -- We can't even find resources, so bail fast, don't localize - * - * @version 1.6, 02/02/00 +/* + * Utility for the main driver. */ public class Util { diff --git a/js2/jsc/src/java/parser/Attributes.java b/js2/jsc/src/java/parser/Attributes.java index c7c05026a029..0375dd40a909 100644 --- a/js2/jsc/src/java/parser/Attributes.java +++ b/js2/jsc/src/java/parser/Attributes.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Not used. + */ + package com.compilercompany.ecmascript; interface Attributes { diff --git a/js2/jsc/src/java/parser/Block.java b/js2/jsc/src/java/parser/Block.java index f4225cd1d3df..a3f2dc23f523 100644 --- a/js2/jsc/src/java/parser/Block.java +++ b/js2/jsc/src/java/parser/Block.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class Block + * Represents a basic block for flow analysis. */ public class Block { diff --git a/js2/jsc/src/java/parser/Context.java b/js2/jsc/src/java/parser/Context.java index a343ed4ef911..91368b50f748 100644 --- a/js2/jsc/src/java/parser/Context.java +++ b/js2/jsc/src/java/parser/Context.java @@ -27,7 +27,7 @@ import java.util.Enumeration; import java.util.Hashtable; /** - * Context + * Context used during semantic analysis. */ public class Context { diff --git a/js2/jsc/src/java/parser/Errors.java b/js2/jsc/src/java/parser/Errors.java index 4ede830b36eb..d89d9536d63a 100644 --- a/js2/jsc/src/java/parser/Errors.java +++ b/js2/jsc/src/java/parser/Errors.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * interface Errors + * Not used. **/ public interface Errors { diff --git a/js2/jsc/src/java/parser/Evaluator.java b/js2/jsc/src/java/parser/Evaluator.java index 36899f5be1e9..7d676ed15905 100644 --- a/js2/jsc/src/java/parser/Evaluator.java +++ b/js2/jsc/src/java/parser/Evaluator.java @@ -23,8 +23,7 @@ package com.compilercompany.ecmascript; /** - * - * Evaluator + * The base visitor object extended by semantic evaluators. * * This is a visitor that is used by the compiler for various forms for * evaluation of a parse tree (e.g. a type evaluator might compute the diff --git a/js2/jsc/src/java/parser/Init.java b/js2/jsc/src/java/parser/Init.java index 157a74fd3ce4..d95bd547332c 100644 --- a/js2/jsc/src/java/parser/Init.java +++ b/js2/jsc/src/java/parser/Init.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * interface Init + * Interface that object initializers implement. * * This interface is implemented by objects that can build * instances of the Value class. For example, there is an diff --git a/js2/jsc/src/java/parser/Node.java b/js2/jsc/src/java/parser/Node.java index 0556084dbc4a..2e9cf95a30bc 100644 --- a/js2/jsc/src/java/parser/Node.java +++ b/js2/jsc/src/java/parser/Node.java @@ -23,9 +23,7 @@ package com.compilercompany.ecmascript; /** - * class Node - * - * To be a node you need to implement this interface. + * The base Node class. */ public class Node { diff --git a/js2/jsc/src/java/parser/NodeFactory.java b/js2/jsc/src/java/parser/NodeFactory.java index edabecd18310..ef819181b5e2 100644 --- a/js2/jsc/src/java/parser/NodeFactory.java +++ b/js2/jsc/src/java/parser/NodeFactory.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Creates parse tree nodes. + */ + package com.compilercompany.ecmascript; public final class NodeFactory { diff --git a/js2/jsc/src/java/parser/Nodes.java b/js2/jsc/src/java/parser/Nodes.java index c7cdd752f8b2..2162cde380c6 100644 --- a/js2/jsc/src/java/parser/Nodes.java +++ b/js2/jsc/src/java/parser/Nodes.java @@ -20,6 +20,10 @@ * Jeff Dyer */ +/* + * Parse tree nodes. + */ + package com.compilercompany.ecmascript; /** diff --git a/js2/jsc/src/java/parser/Parser.java b/js2/jsc/src/java/parser/Parser.java index 8930d810ee25..9a946a6ee1fb 100644 --- a/js2/jsc/src/java/parser/Parser.java +++ b/js2/jsc/src/java/parser/Parser.java @@ -26,9 +26,7 @@ import java.io.*; import java.lang.reflect.*; /** - * class Parser - * - * Parses ES4 programs. + * Parse JS2 programs. */ public class Parser implements Tokens, Errors { diff --git a/js2/jsc/src/java/parser/Scope.java b/js2/jsc/src/java/parser/Scope.java index 0be4088f7e87..038ad7cbbe3d 100644 --- a/js2/jsc/src/java/parser/Scope.java +++ b/js2/jsc/src/java/parser/Scope.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Scope + * A scope, which contains slots. */ public interface Scope { diff --git a/js2/jsc/src/java/parser/Slot.java b/js2/jsc/src/java/parser/Slot.java index 24107c46e16d..d1727d0deb20 100644 --- a/js2/jsc/src/java/parser/Slot.java +++ b/js2/jsc/src/java/parser/Slot.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * Slot + * A slot. */ public class Slot { diff --git a/js2/jsc/src/java/parser/Type.java b/js2/jsc/src/java/parser/Type.java index 28c1b15b2c2b..5da03e64cd90 100644 --- a/js2/jsc/src/java/parser/Type.java +++ b/js2/jsc/src/java/parser/Type.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * + * The interfaces for all types. */ public interface Type extends Init { diff --git a/js2/jsc/src/java/parser/Value.java b/js2/jsc/src/java/parser/Value.java index bb706f4c67b4..b2429b07f9cf 100644 --- a/js2/jsc/src/java/parser/Value.java +++ b/js2/jsc/src/java/parser/Value.java @@ -25,9 +25,7 @@ import java.util.Hashtable; import java.util.Vector; /** - * Value - * - * This is the value class from which all other values derive. + * The value class from which all other values derive. */ abstract public class Value implements Scope { diff --git a/js2/jsc/src/java/semantics/BlockEvaluator.java b/js2/jsc/src/java/semantics/BlockEvaluator.java index 4bcac01fe788..e256aee1905c 100644 --- a/js2/jsc/src/java/semantics/BlockEvaluator.java +++ b/js2/jsc/src/java/semantics/BlockEvaluator.java @@ -26,13 +26,12 @@ import java.lang.reflect.*; import java.util.*; /** - * class BlockEvaluator + * Delineates the program into its basic execution blocks. * - * The purpose of this pass is to delineate the basic - * blocks of the program. It is necessary to know all - * the blocks in the program before we can mark the - * flow-control edges and compute the dominance relationship - * between a reference and definition. + * It is necessary to know all the blocks in the program + * before we can mark the flow-control edges and compute + * the dominance relationship between a reference and + * definition. * * The algorithm for partitioning the program into basic * blocks goes like this: diff --git a/js2/jsc/src/java/semantics/ConstantEvaluator.java b/js2/jsc/src/java/semantics/ConstantEvaluator.java index 06069fe5ce5e..b6124b08f4fa 100644 --- a/js2/jsc/src/java/semantics/ConstantEvaluator.java +++ b/js2/jsc/src/java/semantics/ConstantEvaluator.java @@ -25,7 +25,7 @@ import java.util.*; import java.io.StringReader; /** - * ConstantEvaluator + * Computes the compile-time values of a program. * * The ConstantEvaluator evaluates all expressions to either Undefined or * a definite constant value. Each statement evaluates to a CompletionValue @@ -38,7 +38,7 @@ import java.io.StringReader; public class ConstantEvaluator extends Evaluator implements Tokens, Attributes { - private static final boolean debug = false; + private static final boolean debug = true; // Expressions @@ -81,7 +81,7 @@ public class ConstantEvaluator extends Evaluator implements Tokens, Attributes { } if( qualifier != null && - !(NamespaceType.type.includes(qualifier) || ClassType.type.includes(qualifier)) ) { + !(NamespaceType.type.includes(qualifier) || TypeType.type.includes(qualifier)) ) { error(context,0,"Identifier qualifier must evaluate to a namespace or type.",node.qualifier.pos()); return UndefinedValue.undefinedValue; } diff --git a/js2/jsc/src/java/semantics/types/ClassType.java b/js2/jsc/src/java/semantics/types/ClassType.java index 84ec4ac01591..756ba60d4dc1 100644 --- a/js2/jsc/src/java/semantics/types/ClassType.java +++ b/js2/jsc/src/java/semantics/types/ClassType.java @@ -29,7 +29,7 @@ import java.util.Vector; public final class ClassType extends ObjectType implements Type { - boolean debug = false; + private static final boolean debug = false; public static final TypeValue type = new TypeValue(new ClassType()); @@ -47,7 +47,7 @@ public final class ClassType extends ObjectType implements Type { private ClassType() { super("class"); - TypeType.type.addSub(this); + ObjectType.type.addSub(this); } private Type superType; diff --git a/js2/jsc/src/java/semantics/types/ObjectType.java b/js2/jsc/src/java/semantics/types/ObjectType.java index 53250cdf8443..87b2e69a809b 100644 --- a/js2/jsc/src/java/semantics/types/ObjectType.java +++ b/js2/jsc/src/java/semantics/types/ObjectType.java @@ -29,7 +29,7 @@ import java.util.Vector; public class ObjectType implements Type { - private static final boolean debug = false; + private static final boolean debug = true; public static final TypeValue type = new TypeValue(new ObjectType()); @@ -108,11 +108,9 @@ public class ObjectType implements Type { public boolean includes(Value value) { - // A type is always a member of itself. - - if(value.type==ObjectType.type) { - return true; - } + if( debug ) { + Debugger.trace("ObjectType.includes() with this = " + this + ", value.type = " + value.type + ", values_ = " + values_); + } return values_.contains(value.type); } diff --git a/js2/jsc/src/java/semantics/values/BooleanValue.java b/js2/jsc/src/java/semantics/values/BooleanValue.java index 30ca45d33962..9d94e46a8810 100644 --- a/js2/jsc/src/java/semantics/values/BooleanValue.java +++ b/js2/jsc/src/java/semantics/values/BooleanValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class BooleanValue + * A boolean value: true or false. */ public class BooleanValue extends ObjectValue { diff --git a/js2/jsc/src/java/semantics/values/CharacterValue.java b/js2/jsc/src/java/semantics/values/CharacterValue.java index 547e69b6f320..dbe4209c9973 100644 --- a/js2/jsc/src/java/semantics/values/CharacterValue.java +++ b/js2/jsc/src/java/semantics/values/CharacterValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class CharacterValue + * A character value. */ public class CharacterValue extends ObjectValue { diff --git a/js2/jsc/src/java/semantics/values/CodeValue.java b/js2/jsc/src/java/semantics/values/CodeValue.java index 78579361a99b..96d7f2d70df9 100644 --- a/js2/jsc/src/java/semantics/values/CodeValue.java +++ b/js2/jsc/src/java/semantics/values/CodeValue.java @@ -24,10 +24,9 @@ package com.compilercompany.ecmascript; import java.util.Vector; /** - * class CodeValue + * A code value (intermediate). * - * This value holds the compiled code for an unevaluated - * expression. + * This value holds the intermediate code for an non-constant value. */ public class CodeValue extends Value { diff --git a/js2/jsc/src/java/semantics/values/CompletionValue.java b/js2/jsc/src/java/semantics/values/CompletionValue.java index 38c7f1899914..c3243e93728f 100644 --- a/js2/jsc/src/java/semantics/values/CompletionValue.java +++ b/js2/jsc/src/java/semantics/values/CompletionValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class CompletionValue + * A completion value (intermediate). */ public class CompletionValue extends Value { diff --git a/js2/jsc/src/java/semantics/values/GlobalObject.java b/js2/jsc/src/java/semantics/values/GlobalObject.java index 2f83a9217415..695e8ab9db1b 100644 --- a/js2/jsc/src/java/semantics/values/GlobalObject.java +++ b/js2/jsc/src/java/semantics/values/GlobalObject.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * GlobalObject + * The global object initializer. * * An instance of this class is used to initialize a global * object. diff --git a/js2/jsc/src/java/semantics/values/ListValue.java b/js2/jsc/src/java/semantics/values/ListValue.java index 38576b6f4be0..bbc432c20f4c 100644 --- a/js2/jsc/src/java/semantics/values/ListValue.java +++ b/js2/jsc/src/java/semantics/values/ListValue.java @@ -25,7 +25,7 @@ import java.util.Vector; import java.util.Enumeration; /** - * class ListValue + * A list value (intermediate). */ public class ListValue extends ObjectValue { diff --git a/js2/jsc/src/java/semantics/values/NullValue.java b/js2/jsc/src/java/semantics/values/NullValue.java index e3d58c98a795..9cbe007fd380 100644 --- a/js2/jsc/src/java/semantics/values/NullValue.java +++ b/js2/jsc/src/java/semantics/values/NullValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class NullValue + * The null value. */ public class NullValue extends ObjectValue { diff --git a/js2/jsc/src/java/semantics/values/NumberValue.java b/js2/jsc/src/java/semantics/values/NumberValue.java index 45d753cec8ea..fcd111ab5a12 100644 --- a/js2/jsc/src/java/semantics/values/NumberValue.java +++ b/js2/jsc/src/java/semantics/values/NumberValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class NumberValue + * A number value. */ public final class NumberValue extends ObjectValue { diff --git a/js2/jsc/src/java/semantics/values/ObjectValue.java b/js2/jsc/src/java/semantics/values/ObjectValue.java index 933fb4f9b963..d056b99c49c2 100644 --- a/js2/jsc/src/java/semantics/values/ObjectValue.java +++ b/js2/jsc/src/java/semantics/values/ObjectValue.java @@ -26,7 +26,7 @@ import java.util.Vector; import java.util.Enumeration; /** - * ObjectValue + * An object value. */ public class ObjectValue extends Value implements Attributes, Scope { @@ -46,6 +46,7 @@ public class ObjectValue extends Value implements Attributes, Scope { */ public ObjectValue() { + this.type = null; } /** diff --git a/js2/jsc/src/java/semantics/values/ReferenceValue.java b/js2/jsc/src/java/semantics/values/ReferenceValue.java index 4e33c78e849a..4605bd1cf1bb 100644 --- a/js2/jsc/src/java/semantics/values/ReferenceValue.java +++ b/js2/jsc/src/java/semantics/values/ReferenceValue.java @@ -25,12 +25,12 @@ import java.util.Vector; import java.util.Enumeration; /** - * class ReferenceValue + * A reference value. */ public class ReferenceValue extends Value { - private static final boolean debug = false; + private static final boolean debug = true; Scope scope; Vector namespaces; @@ -101,7 +101,7 @@ public class ReferenceValue extends Value { public Slot getSlot(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getSlot() with context = " + context ); + Debugger.trace("ReferenceValue.getSlot() with namespaces = " + namespaces + ", name = " + name ); } Slot slot = null; @@ -140,7 +140,7 @@ public class ReferenceValue extends Value { public Value getValue(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getValue() with context = " + context ); + Debugger.trace("ReferenceValue.getValue() with namespaces = " + namespaces + ", name = " + name ); } Value value = UndefinedValue.undefinedValue; @@ -169,7 +169,7 @@ public class ReferenceValue extends Value { public Value getType(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getValue() with context = " + context ); + Debugger.trace("ReferenceValue.getType() with namespaces = " + namespaces + ", name = " + name ); } Value type = ObjectType.type; @@ -183,7 +183,7 @@ public class ReferenceValue extends Value { Value getAttrs(Context context) throws Exception { if( debug ) { - Debugger.trace("ReferenceType.getAttrs() with context = " + context ); + Debugger.trace("ReferenceValue.getAttrs() with namespaces = " + namespaces + ", name = " + name ); } Value attrs = null; diff --git a/js2/jsc/src/java/semantics/values/StringValue.java b/js2/jsc/src/java/semantics/values/StringValue.java index 2e78b6d726a9..6879408b3c25 100644 --- a/js2/jsc/src/java/semantics/values/StringValue.java +++ b/js2/jsc/src/java/semantics/values/StringValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class StringValue + * A string value. */ public final class StringValue extends ObjectValue { diff --git a/js2/jsc/src/java/semantics/values/TypeValue.java b/js2/jsc/src/java/semantics/values/TypeValue.java index 492356ca2fee..d7645dbdf95c 100644 --- a/js2/jsc/src/java/semantics/values/TypeValue.java +++ b/js2/jsc/src/java/semantics/values/TypeValue.java @@ -25,7 +25,7 @@ import java.util.Vector; import java.util.Enumeration; /** - * class TypeValue + * A type value. * * TypeValues have an internal property valueType that is * the type that this value represents. The type of a TypeValue diff --git a/js2/jsc/src/java/semantics/values/UndefinedValue.java b/js2/jsc/src/java/semantics/values/UndefinedValue.java index 306b0838d47f..c115fd54d095 100644 --- a/js2/jsc/src/java/semantics/values/UndefinedValue.java +++ b/js2/jsc/src/java/semantics/values/UndefinedValue.java @@ -23,7 +23,7 @@ package com.compilercompany.ecmascript; /** - * class UndefinedValue + * The undefined value. */ public class UndefinedValue extends ObjectValue {