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
This commit is contained in:
waldemar%netscape.com
2001-12-01 03:31:46 +00:00
parent 0338c89237
commit 0fd39e383e
5 changed files with 6 additions and 31 deletions

View File

@@ -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<const BinaryExprNode *>(e)->op1;
break;
case ExprNode::dotClass:
e = checked_cast<const UnaryExprNode *>(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;