/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2013 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
SyntaxChecker* m_context;
};
- SyntaxChecker(JSGlobalData* , void*)
+ SyntaxChecker(VM* , void*)
{
}
static const unsigned DontBuildStrings = LexerFlagsDontBuildStrings;
int createSourceElements() { return 1; }
- ExpressionType makeFunctionCallNode(int, int, int, int, int, int) { return CallExpr; }
+ ExpressionType makeFunctionCallNode(const JSTokenLocation&, int, int, int, int, int, int, int) { return CallExpr; }
void appendToComma(ExpressionType& base, ExpressionType right) { base = right; }
- ExpressionType createCommaExpr(int, ExpressionType, ExpressionType right) { return right; }
- ExpressionType makeAssignNode(int, ExpressionType, Operator, ExpressionType, bool, bool, int, int, int) { return AssignmentExpr; }
- ExpressionType makePrefixNode(int, ExpressionType, Operator, int, int, int) { return PreExpr; }
- ExpressionType makePostfixNode(int, ExpressionType, Operator, int, int, int) { return PostExpr; }
- ExpressionType makeTypeOfNode(int, ExpressionType) { return TypeofExpr; }
- ExpressionType makeDeleteNode(int, ExpressionType, int, int, int) { return DeleteExpr; }
- ExpressionType makeNegateNode(int, ExpressionType) { return UnaryExpr; }
- ExpressionType makeBitwiseNotNode(int, ExpressionType) { return UnaryExpr; }
- ExpressionType createLogicalNot(int, ExpressionType) { return UnaryExpr; }
- ExpressionType createUnaryPlus(int, ExpressionType) { return UnaryExpr; }
- ExpressionType createVoid(int, ExpressionType) { return UnaryExpr; }
- ExpressionType thisExpr(int) { return ThisExpr; }
- ExpressionType createResolve(int, const Identifier*, int) { return ResolveExpr; }
- ExpressionType createObjectLiteral(int) { return ObjectLiteralExpr; }
- ExpressionType createObjectLiteral(int, int) { return ObjectLiteralExpr; }
- ExpressionType createArray(int, int) { return ArrayLiteralExpr; }
- ExpressionType createArray(int, int, int) { return ArrayLiteralExpr; }
- ExpressionType createNumberExpr(int, double) { return NumberExpr; }
- ExpressionType createString(int, const Identifier*) { return StringExpr; }
- ExpressionType createBoolean(int, bool) { return BoolExpr; }
- ExpressionType createNull(int) { return NullExpr; }
- ExpressionType createBracketAccess(int, ExpressionType, ExpressionType, bool, int, int, int) { return BracketExpr; }
- ExpressionType createDotAccess(int, ExpressionType, const Identifier*, int, int, int) { return DotExpr; }
- ExpressionType createRegExp(int, const Identifier& pattern, const Identifier&, int) { return Yarr::checkSyntax(pattern.ustring()) ? 0 : RegExpExpr; }
- ExpressionType createNewExpr(int, ExpressionType, int, int, int, int) { return NewExpr; }
- ExpressionType createNewExpr(int, ExpressionType, int, int) { return NewExpr; }
- ExpressionType createConditionalExpr(int, ExpressionType, ExpressionType, ExpressionType) { return ConditionalExpr; }
- ExpressionType createAssignResolve(int, const Identifier&, ExpressionType, bool, int, int, int) { return AssignmentExpr; }
- ExpressionType createFunctionExpr(int, const Identifier*, int, int, int, int, int, int) { return FunctionExpr; }
- int createFunctionBody(int, bool) { return 1; }
+ ExpressionType createCommaExpr(const JSTokenLocation&, ExpressionType, ExpressionType right) { return right; }
+ ExpressionType makeAssignNode(const JSTokenLocation&, ExpressionType, Operator, ExpressionType, bool, bool, int, int, int, int, int) { return AssignmentExpr; }
+ ExpressionType makePrefixNode(const JSTokenLocation&, ExpressionType, Operator, int, int, int, int, int) { return PreExpr; }
+ ExpressionType makePostfixNode(const JSTokenLocation&, ExpressionType, Operator, int, int, int, int, int) { return PostExpr; }
+ ExpressionType makeTypeOfNode(const JSTokenLocation&, ExpressionType) { return TypeofExpr; }
+ ExpressionType makeDeleteNode(const JSTokenLocation&, ExpressionType, int, int, int, int, int) { return DeleteExpr; }
+ ExpressionType makeNegateNode(const JSTokenLocation&, ExpressionType) { return UnaryExpr; }
+ ExpressionType makeBitwiseNotNode(const JSTokenLocation&, ExpressionType) { return UnaryExpr; }
+ ExpressionType createLogicalNot(const JSTokenLocation&, ExpressionType) { return UnaryExpr; }
+ ExpressionType createUnaryPlus(const JSTokenLocation&, ExpressionType) { return UnaryExpr; }
+ ExpressionType createVoid(const JSTokenLocation&, ExpressionType) { return UnaryExpr; }
+ ExpressionType thisExpr(const JSTokenLocation&) { return ThisExpr; }
+ ExpressionType createResolve(const JSTokenLocation&, const Identifier*, int, int, int) { return ResolveExpr; }
+ ExpressionType createObjectLiteral(const JSTokenLocation&) { return ObjectLiteralExpr; }
+ ExpressionType createObjectLiteral(const JSTokenLocation&, int) { return ObjectLiteralExpr; }
+ ExpressionType createArray(const JSTokenLocation&, int) { return ArrayLiteralExpr; }
+ ExpressionType createArray(const JSTokenLocation&, int, int) { return ArrayLiteralExpr; }
+ ExpressionType createNumberExpr(const JSTokenLocation&, double) { return NumberExpr; }
+ ExpressionType createString(const JSTokenLocation&, const Identifier*) { return StringExpr; }
+ ExpressionType createBoolean(const JSTokenLocation&, bool) { return BoolExpr; }
+ ExpressionType createNull(const JSTokenLocation&) { return NullExpr; }
+ ExpressionType createBracketAccess(const JSTokenLocation&, ExpressionType, ExpressionType, bool, int, int, int, int, int) { return BracketExpr; }
+ ExpressionType createDotAccess(const JSTokenLocation&, ExpressionType, const Identifier*, int, int, int, int, int) { return DotExpr; }
+ ExpressionType createRegExp(const JSTokenLocation&, const Identifier& pattern, const Identifier&, int, int, int) { return Yarr::checkSyntax(pattern.string()) ? 0 : RegExpExpr; }
+ ExpressionType createNewExpr(const JSTokenLocation&, ExpressionType, int, int, int, int, int, int) { return NewExpr; }
+ ExpressionType createNewExpr(const JSTokenLocation&, ExpressionType, int, int, int, int) { return NewExpr; }
+ ExpressionType createConditionalExpr(const JSTokenLocation&, ExpressionType, ExpressionType, ExpressionType) { return ConditionalExpr; }
+ ExpressionType createAssignResolve(const JSTokenLocation&, const Identifier&, ExpressionType, int, int, int, int, int) { return AssignmentExpr; }
+ ExpressionType createFunctionExpr(const JSTokenLocation&, const Identifier*, int, int, int, int, int, int, int) { return FunctionExpr; }
+ int createFunctionBody(const JSTokenLocation&, const JSTokenLocation&, int, bool) { return 1; }
+ void setFunctionStart(int, int) { }
int createArguments() { return 1; }
int createArguments(int) { return 1; }
- int createArgumentsList(int, int) { return 1; }
- int createArgumentsList(int, int, int) { return 1; }
+ int createArgumentsList(const JSTokenLocation&, int) { return 1; }
+ int createArgumentsList(const JSTokenLocation&, int, int) { return 1; }
template <bool complete> Property createProperty(const Identifier* name, int, PropertyNode::Type type)
{
if (!complete)
ASSERT(name);
return Property(name, type);
}
- template <bool complete> Property createProperty(JSGlobalData* globalData, double name, int, PropertyNode::Type type)
+ template <bool complete> Property createProperty(VM* vm, double name, int, PropertyNode::Type type)
{
if (!complete)
return Property(type);
- return Property(&globalData->parserArena->identifierArena().makeNumericIdentifier(globalData, name), type);
+ return Property(&vm->parserArena->identifierArena().makeNumericIdentifier(vm, name), type);
}
- int createPropertyList(int, Property) { return 1; }
- int createPropertyList(int, Property, int) { return 1; }
+ int createPropertyList(const JSTokenLocation&, Property) { return 1; }
+ int createPropertyList(const JSTokenLocation&, Property, int) { return 1; }
int createElementList(int, int) { return 1; }
int createElementList(int, int, int) { return 1; }
int createFormalParameterList(const Identifier&) { return 1; }
int createClauseList(int) { return 1; }
int createClauseList(int, int) { return 1; }
void setUsesArguments(int) { }
- int createFuncDeclStatement(int, const Identifier*, int, int, int, int, int, int) { return 1; }
- int createBlockStatement(int, int, int, int) { return 1; }
- int createExprStatement(int, int, int, int) { return 1; }
- int createIfStatement(int, int, int, int, int) { return 1; }
- int createIfStatement(int, int, int, int, int, int) { return 1; }
- int createForLoop(int, int, int, int, int, bool, int, int) { return 1; }
- int createForInLoop(int, const Identifier*, int, int, int, int, int, int, int, int, int, int) { return 1; }
- int createForInLoop(int, int, int, int, int, int, int, int, int) { return 1; }
- int createEmptyStatement(int) { return 1; }
- int createVarStatement(int, int, int, int) { return 1; }
- int createReturnStatement(int, int, int, int, int, int) { return 1; }
- int createBreakStatement(int, int, int, int, int) { return 1; }
- int createBreakStatement(int, const Identifier*, int, int, int, int) { return 1; }
- int createContinueStatement(int, int, int, int, int) { return 1; }
- int createContinueStatement(int, const Identifier*, int, int, int, int) { return 1; }
- int createTryStatement(int, int, const Identifier*, int, int, int, int) { return 1; }
- int createSwitchStatement(int, int, int, int, int, int, int) { return 1; }
- int createWhileStatement(int, int, int, int, int) { return 1; }
- int createWithStatement(int, int, int, int, int, int, int) { return 1; }
- int createDoWhileStatement(int, int, int, int, int) { return 1; }
- int createLabelStatement(int, const Identifier*, int, int, int) { return 1; }
- int createThrowStatement(int, int, int, int, int, int) { return 1; }
- int createDebugger(int, int, int) { return 1; }
- int createConstStatement(int, int, int, int) { return 1; }
- int appendConstDecl(int, int, const Identifier*, int) { return 1; }
- template <bool strict> Property createGetterOrSetterProperty(int, PropertyNode::Type type, const Identifier* name, int, int, int, int, int, int)
+ int createFuncDeclStatement(const JSTokenLocation&, const Identifier*, int, int, int, int, int, int, int) { return 1; }
+ int createBlockStatement(const JSTokenLocation&, int, int, int) { return 1; }
+ int createExprStatement(const JSTokenLocation&, int, int, int) { return 1; }
+ int createIfStatement(const JSTokenLocation&, int, int, int, int) { return 1; }
+ int createIfStatement(const JSTokenLocation&, int, int, int, int, int) { return 1; }
+ int createForLoop(const JSTokenLocation&, int, int, int, int, int, int) { return 1; }
+ int createForInLoop(const JSTokenLocation&, const Identifier*, int, int, int, int, int, int, int, int, int, int, int, int) { return 1; }
+ int createForInLoop(const JSTokenLocation&, int, int, int, int, int, int, int, int, int, int) { return 1; }
+ int createEmptyStatement(const JSTokenLocation&) { return 1; }
+ int createVarStatement(const JSTokenLocation&, int, int, int) { return 1; }
+ int createReturnStatement(const JSTokenLocation&, int, int, int, int, int, int, int) { return 1; }
+ int createBreakStatement(const JSTokenLocation&, int, int, int, int, int) { return 1; }
+ int createBreakStatement(const JSTokenLocation&, const Identifier*, int, int, int, int, int) { return 1; }
+ int createContinueStatement(const JSTokenLocation&, int, int, int, int, int) { return 1; }
+ int createContinueStatement(const JSTokenLocation&, const Identifier*, int, int, int, int, int) { return 1; }
+ int createTryStatement(const JSTokenLocation&, int, const Identifier*, int, int, int, int) { return 1; }
+ int createSwitchStatement(const JSTokenLocation&, int, int, int, int, int, int) { return 1; }
+ int createWhileStatement(const JSTokenLocation&, int, int, int, int) { return 1; }
+ int createWithStatement(const JSTokenLocation&, int, int, int, int, int, int, int, int) { return 1; }
+ int createDoWhileStatement(const JSTokenLocation&, int, int, int, int) { return 1; }
+ int createLabelStatement(const JSTokenLocation&, const Identifier*, int, int, int, int, int) { return 1; }
+ int createThrowStatement(const JSTokenLocation&, int, int, int, int, int, int, int) { return 1; }
+ int createDebugger(const JSTokenLocation&, int, int) { return 1; }
+ int createConstStatement(const JSTokenLocation&, int, int, int) { return 1; }
+ int appendConstDecl(const JSTokenLocation&, int, const Identifier*, int) { return 1; }
+ template <bool strict> Property createGetterOrSetterProperty(const JSTokenLocation&, PropertyNode::Type type, const Identifier* name, int, int, int, int, int, int, int)
{
ASSERT(name);
if (!strict)
return Property(type);
return Property(name, type);
}
- template <bool strict> Property createGetterOrSetterProperty(JSGlobalData* globalData, int, PropertyNode::Type type, double name, int, int, int, int, int, int)
+ template <bool strict> Property createGetterOrSetterProperty(VM* vm, const JSTokenLocation&, PropertyNode::Type type, double name, int, int, int, int, int, int, int)
{
if (!strict)
return Property(type);
- return Property(&globalData->parserArena->identifierArena().makeNumericIdentifier(globalData, name), type);
+ return Property(&vm->parserArena->identifierArena().makeNumericIdentifier(vm, name), type);
}
void appendStatement(int, int) { }
void addVar(const Identifier*, bool) { }
- int combineCommaNodes(int, int, int) { return 1; }
+ int combineCommaNodes(const JSTokenLocation&, int, int) { return 1; }
int evalCount() const { return 0; }
- void appendBinaryExpressionInfo(int& operandStackDepth, int expr, int, int, int, bool)
+ void appendBinaryExpressionInfo(int& operandStackDepth, int expr, int, int, int, int, int, bool)
{
if (!m_topBinaryExpr)
m_topBinaryExpr = expr;
bool operatorStackHasHigherPrecedence(int&, int) { return true; }
BinaryOperand getFromOperandStack(int) { return m_topBinaryExpr; }
void shrinkOperandStackBy(int& operandStackDepth, int amount) { operandStackDepth -= amount; }
- void appendBinaryOperation(int, int& operandStackDepth, int&, BinaryOperand, BinaryOperand) { operandStackDepth++; }
+ void appendBinaryOperation(const JSTokenLocation&, int& operandStackDepth, int&, BinaryOperand, BinaryOperand) { operandStackDepth++; }
void operatorStackAppend(int& operatorStackDepth, int, int) { operatorStackDepth++; }
int popOperandStack(int&) { int res = m_topBinaryExpr; m_topBinaryExpr = 0; return res; }
- void appendUnaryToken(int& stackDepth, int tok, int) { stackDepth = 1; m_topUnaryToken = tok; }
+ void appendUnaryToken(int& stackDepth, int tok, int, int, int) { stackDepth = 1; m_topUnaryToken = tok; }
int unaryTokenStackLastType(int&) { return m_topUnaryToken; }
- int unaryTokenStackLastStart(int&) { return 0; }
+ unsigned unaryTokenStackLastStart(int&) { return 0; }
+ unsigned unaryTokenStackLastLineStartPosition(int&) { return 0; }
void unaryTokenStackRemoveLast(int& stackDepth) { stackDepth = 0; }
- void assignmentStackAppend(int, int, int, int, int, Operator) { }
- int createAssignment(int, int, int, int, int, int) { ASSERT_NOT_REACHED(); return 1; }
+ void assignmentStackAppend(int, int, int, int, int, int, int, Operator) { }
+ int createAssignment(const JSTokenLocation&, int, int, int, int, int) { RELEASE_ASSERT_NOT_REACHED(); return 1; }
const Identifier& getName(const Property& property) const { ASSERT(property.name); return *property.name; }
PropertyNode::Type getType(const Property& property) const { return property.type; }
bool isResolve(ExpressionType expr) const { return expr == ResolveExpr || expr == ResolveEvalExpr; }