From 0fd39e383efae7fd6c4f7d53762bb3326d7076a7 Mon Sep 17 00:00:00 2001 From: "waldemar%netscape.com" Date: Sat, 1 Dec 2001 03:31:46 +0000 Subject: [PATCH] Recent ECMA grammar changes: deleted the x.class operator and prohibited super from being a direct operand of the delete operator. git-svn-id: svn://10.0.0.236/trunk@109436 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js2/src/bytecodegen.cpp | 10 ---------- mozilla/js2/src/bytecodegen.h | 1 - mozilla/js2/src/js2execution.cpp | 7 ------- mozilla/js2/src/parser.cpp | 18 ++++++------------ mozilla/js2/src/parser.h | 1 - 5 files changed, 6 insertions(+), 31 deletions(-) diff --git a/mozilla/js2/src/bytecodegen.cpp b/mozilla/js2/src/bytecodegen.cpp index 291dd24cd1f..5ee1efe1907 100644 --- a/mozilla/js2/src/bytecodegen.cpp +++ b/mozilla/js2/src/bytecodegen.cpp @@ -355,7 +355,6 @@ ByteCodeData gByteCodeData[OpCodeCount] = { { 0, "PushScope", }, { 0, "PopScope", }, { 0, "NewClosure" }, -{ 0, "Class" }, { -1, "Juxtapose" }, { -1, "NamedArgument" }, @@ -2326,14 +2325,6 @@ BinaryOpEquals: return currentClass; } break; - case ExprNode::dotClass: - { - UnaryExprNode *u = checked_cast(p); - JSType *uType = genExpr(u->op); - addByte(ClassOp); - return uType; - } - break; case ExprNode::juxtapose: { BinaryExprNode *j = checked_cast(p); @@ -2408,7 +2399,6 @@ uint32 printInstruction(Formatter &f, uint32 i, const ByteCodeModule& bcm) case VoidPopOp: case LoadGlobalObjectOp: case NewClosureOp: - case ClassOp: case JuxtaposeOp: case NamedArgOp: break; diff --git a/mozilla/js2/src/bytecodegen.h b/mozilla/js2/src/bytecodegen.h index c844d5dfc97..8d5e6f06da4 100644 --- a/mozilla/js2/src/bytecodegen.h +++ b/mozilla/js2/src/bytecodegen.h @@ -153,7 +153,6 @@ typedef enum { PushScopeOp, // XXX !!! XXX PopScopeOp, // XXX !!! XXX NewClosureOp, // --> - ClassOp, // --> JuxtaposeOp, // --> NamedArgOp, // --> diff --git a/mozilla/js2/src/js2execution.cpp b/mozilla/js2/src/js2execution.cpp index 21592bb723b..917bc453fe4 100644 --- a/mozilla/js2/src/js2execution.cpp +++ b/mozilla/js2/src/js2execution.cpp @@ -1582,13 +1582,6 @@ JSValue Context::interpret(uint8 *pc, uint8 *endPC) throw Exception(Exception::userException, ""); } break; - case ClassOp: - { - JSValue x = popValue(); - ASSERT(x.isObject()); - pushValue(JSValue(x.getType())); - } - break; case JuxtaposeOp: { JSValue v2 = popValue(); diff --git a/mozilla/js2/src/parser.cpp b/mozilla/js2/src/parser.cpp index 937942111f8..ae44720e9d4 100644 --- a/mozilla/js2/src/parser.cpp +++ b/mozilla/js2/src/parser.cpp @@ -444,10 +444,6 @@ JS::ExprNode *JS::Parser::parseMember(ExprNode *target, const Token &tOperator, { size_t pos = tOperator.getPos(); const Token &t2 = lexer.get(true); - - if (t2.hasKind(Token::Class) && !target->hasKind(ExprNode::superExpr)) - return new(arena) UnaryExprNode(pos, ExprNode::dotClass, target); - ExprNode *member; ExprNode::Kind kind = ExprNode::dot; if (t2.hasKind(Token::openParenthesis) && !target->hasKind(ExprNode::superExpr)) { @@ -604,17 +600,20 @@ JS::ExprNode *JS::Parser::parseUnaryExpression(SuperState superState) switch (t.getKind()) { case Token::Delete: eKind = ExprNode::Delete; + superState = ssNone; goto getPostfixExpression; case Token::increment: eKind = ExprNode::preIncrement; - goto getPostfixExpression; + goto getPostfixExpressionSuper; case Token::decrement: eKind = ExprNode::preDecrement; + getPostfixExpressionSuper: + superState = ssExpr; getPostfixExpression: lexer.skip(); - e = parsePostfixExpression(ssExpr, false); + e = parsePostfixExpression(superState, false); break; case Token::Void: @@ -971,10 +970,6 @@ bool JS::Parser::expressionIsAttribute(const ExprNode *e) e = checked_cast(e)->op1; break; - case ExprNode::dotClass: - e = checked_cast(e)->op; - break; - default: return false; } @@ -2121,7 +2116,6 @@ const char *const JS::ExprNode::kindNames[kindsEnd] = { 0, // index ".", // dot - ".class", // dotClass ".(", // dotParen 0, // superExpr @@ -2331,7 +2325,7 @@ void JS::UnaryExprNode::print(PrettyPrinter &f) const if (debugExprNodePrint) f << '('; const char *name = kindName(getKind()); - if (hasKind(postIncrement) || hasKind(postDecrement) || hasKind(dotClass)) + if (hasKind(postIncrement) || hasKind(postDecrement)) f << op << name; else { f << name; diff --git a/mozilla/js2/src/parser.h b/mozilla/js2/src/parser.h index 6218b7621b3..32aead49b7b 100644 --- a/mozilla/js2/src/parser.h +++ b/mozilla/js2/src/parser.h @@ -163,7 +163,6 @@ namespace JavaScript { index, // InvokeExprNode [:, :, ..., :] dot, // BinaryExprNode . ( must be identifier or qualify) - dotClass, // UnaryExprNode .class dotParen, // BinaryExprNode .( ) // End of isPostfix()