summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/parser/javascriptast_p.h
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-04-27 13:45:31 (GMT)
committerRoberto Raggi <roberto.raggi@nokia.com>2009-04-27 13:45:31 (GMT)
commitd7ffaa8ccbf881d25004b9a710259701d1a8c9bc (patch)
tree633e12bfb5d356366acd980e7158148def8ee184 /src/declarative/qml/parser/javascriptast_p.h
parent38d90a2d93d51325ef5dad0904eab2e3a30f3064 (diff)
downloadQt-d7ffaa8ccbf881d25004b9a710259701d1a8c9bc.zip
Qt-d7ffaa8ccbf881d25004b9a710259701d1a8c9bc.tar.gz
Qt-d7ffaa8ccbf881d25004b9a710259701d1a8c9bc.tar.bz2
Introduced Node::firstSourceLocation(), Node::lastSourceLocation().
Diffstat (limited to 'src/declarative/qml/parser/javascriptast_p.h')
-rw-r--r--src/declarative/qml/parser/javascriptast_p.h459
1 files changed, 401 insertions, 58 deletions
diff --git a/src/declarative/qml/parser/javascriptast_p.h b/src/declarative/qml/parser/javascriptast_p.h
index 267a697..69958e5 100644
--- a/src/declarative/qml/parser/javascriptast_p.h
+++ b/src/declarative/qml/parser/javascriptast_p.h
@@ -217,6 +217,7 @@ public:
Kind_VoidExpression,
Kind_WhileStatement,
Kind_WithStatement,
+ Kind_NestedExpression,
Kind_UiArrayBinding,
Kind_UiImport,
@@ -268,6 +269,9 @@ public:
virtual ~ExpressionNode() {}
virtual ExpressionNode *expressionCast();
+
+ virtual SourceLocation firstSourceLocation() const = 0;
+ virtual SourceLocation lastSourceLocation() const = 0;
};
class Statement: public Node
@@ -277,6 +281,32 @@ public:
virtual ~Statement() {}
virtual Statement *statementCast();
+
+ virtual SourceLocation firstSourceLocation() const = 0;
+ virtual SourceLocation lastSourceLocation() const = 0;
+};
+
+class NestedExpression: public ExpressionNode
+{
+public:
+ JAVASCRIPT_DECLARE_AST_NODE(NestedExpression)
+
+ NestedExpression(ExpressionNode *expression)
+ : expression(expression)
+ { kind = K; }
+
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return lparenToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rparenToken; }
+
+// attributes
+ ExpressionNode *expression;
+ SourceLocation lparenToken;
+ SourceLocation rparenToken;
};
class ThisExpression: public ExpressionNode
@@ -289,6 +319,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return thisToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return thisToken; }
+
// attributes
SourceLocation thisToken;
};
@@ -305,6 +341,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return identifierToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return identifierToken; }
+
// attributes
JavaScriptNameIdImpl *name;
SourceLocation identifierToken;
@@ -320,6 +362,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return nullToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return nullToken; }
+
// attributes
SourceLocation nullToken;
};
@@ -334,6 +382,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return trueToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return trueToken; }
+
// attributes
SourceLocation trueToken;
};
@@ -348,6 +402,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return falseToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return falseToken; }
+
// attributes
SourceLocation falseToken;
};
@@ -363,6 +423,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return literalToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return literalToken; }
+
// attributes:
double value;
SourceLocation literalToken;
@@ -380,6 +446,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return literalToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return literalToken; }
+
// attributes:
JavaScriptNameIdImpl *value;
SourceLocation literalToken;
@@ -397,6 +469,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return literalToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return literalToken; }
+
// attributes:
JavaScriptNameIdImpl *pattern;
int flags;
@@ -424,6 +502,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return lbracketToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbracketToken; }
+
// attributes
ElementList *elements;
Elision *elision;
@@ -447,8 +531,16 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return lbraceToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbraceToken; }
+
// attributes
PropertyNameAndValueList *properties;
+ SourceLocation lbraceToken;
+ SourceLocation rbraceToken;
};
class ElementList: public Node
@@ -624,6 +716,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return base->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbracketToken; }
+
// attributes
ExpressionNode *base;
ExpressionNode *expression;
@@ -644,7 +742,13 @@ public:
virtual void accept0(Visitor *visitor);
-// attributes
+ virtual SourceLocation firstSourceLocation() const
+ { return base->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return identifierToken; }
+
+ // attributes
ExpressionNode *base;
JavaScriptNameIdImpl *name;
SourceLocation dotToken;
@@ -664,7 +768,13 @@ public:
virtual void accept0(Visitor *visitor);
-// attributes
+ virtual SourceLocation firstSourceLocation() const
+ { return newToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rparenToken; }
+
+ // attributes
ExpressionNode *base;
ArgumentList *arguments;
SourceLocation newToken;
@@ -684,6 +794,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return newToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation newToken;
@@ -702,6 +818,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return base->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rparenToken; }
+
// attributes
ExpressionNode *base;
ArgumentList *arguments;
@@ -755,6 +877,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return base->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return incrementToken; }
+
// attributes
ExpressionNode *base;
SourceLocation incrementToken;
@@ -772,6 +900,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return base->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return decrementToken; }
+
// attributes
ExpressionNode *base;
SourceLocation decrementToken;
@@ -788,6 +922,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return deleteToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation deleteToken;
@@ -805,6 +945,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return voidToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation voidToken;
@@ -822,6 +968,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return typeofToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation typeofToken;
@@ -839,6 +991,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return incrementToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation incrementToken;
@@ -856,6 +1014,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return decrementToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation decrementToken;
@@ -873,6 +1037,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return plusToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation plusToken;
@@ -890,6 +1060,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return minusToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation minusToken;
@@ -907,6 +1083,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return tildeToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation tildeToken;
@@ -924,6 +1106,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return notToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return expression->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
SourceLocation notToken;
@@ -944,6 +1132,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return left->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return right->lastSourceLocation(); }
+
// attributes
ExpressionNode *left;
int op;
@@ -964,6 +1158,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return expression->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return ko->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
ExpressionNode *ok;
@@ -984,6 +1184,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return left->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return right->lastSourceLocation(); }
+
// attributes
ExpressionNode *left;
ExpressionNode *right;
@@ -1002,7 +1208,13 @@ public:
virtual void accept0(Visitor *visitor);
-// attributes
+ virtual SourceLocation firstSourceLocation() const
+ { return lbraceToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbraceToken; }
+
+ // attributes
StatementList *statements;
SourceLocation lbraceToken;
SourceLocation rbraceToken;
@@ -1054,6 +1266,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return declarationKindToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
VariableDeclarationList *declarations;
SourceLocation declarationKindToken;
@@ -1129,6 +1347,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return semicolonToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
SourceLocation semicolonToken;
};
@@ -1145,6 +1369,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return expression->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
ExpressionNode *expression;
SourceLocation semicolonToken;
@@ -1163,6 +1393,17 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return ifToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ {
+ if (ko)
+ return ko->lastSourceLocation();
+
+ return ok->lastSourceLocation();
+ }
+
// attributes
ExpressionNode *expression;
Statement *ok;
@@ -1186,6 +1427,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return doToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
Statement *statement;
ExpressionNode *expression;
@@ -1209,6 +1456,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return whileToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
Statement *statement;
@@ -1230,6 +1483,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return forToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
ExpressionNode *initialiser;
ExpressionNode *condition;
@@ -1255,6 +1514,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return forToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
VariableDeclarationList *declarations;
ExpressionNode *condition;
@@ -1281,6 +1546,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return forToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
ExpressionNode *initialiser;
ExpressionNode *expression;
@@ -1304,6 +1575,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return forToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
VariableDeclaration *declaration;
ExpressionNode *expression;
@@ -1327,6 +1604,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return continueToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
JavaScriptNameIdImpl *label;
SourceLocation continueToken;
@@ -1346,7 +1629,13 @@ public:
virtual void accept0(Visitor *visitor);
-// attributes
+ virtual SourceLocation firstSourceLocation() const
+ { return breakToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
+ // attributes
JavaScriptNameIdImpl *label;
SourceLocation breakToken;
SourceLocation identifierToken;
@@ -1365,6 +1654,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return returnToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
ExpressionNode *expression;
SourceLocation returnToken;
@@ -1384,6 +1679,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return withToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
ExpressionNode *expression;
Statement *statement;
@@ -1392,46 +1693,52 @@ public:
SourceLocation rparenToken;
};
-class SwitchStatement: public Statement
+class CaseBlock: public Node
{
public:
- JAVASCRIPT_DECLARE_AST_NODE(SwitchStatement)
+ JAVASCRIPT_DECLARE_AST_NODE(CaseBlock)
- SwitchStatement(ExpressionNode *e, CaseBlock *b):
- expression (e), block (b)
+ CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0):
+ clauses (c), defaultClause (d), moreClauses (r)
{ kind = K; }
- virtual ~SwitchStatement() {}
+ virtual ~CaseBlock() {}
virtual void accept0(Visitor *visitor);
// attributes
- ExpressionNode *expression;
- CaseBlock *block;
- SourceLocation switchToken;
- SourceLocation lparenToken;
- SourceLocation rparenToken;
+ CaseClauses *clauses;
+ DefaultClause *defaultClause;
+ CaseClauses *moreClauses;
+ SourceLocation lbraceToken;
+ SourceLocation rbraceToken;
};
-class CaseBlock: public Node
+class SwitchStatement: public Statement
{
public:
- JAVASCRIPT_DECLARE_AST_NODE(CaseBlock)
+ JAVASCRIPT_DECLARE_AST_NODE(SwitchStatement)
- CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0):
- clauses (c), defaultClause (d), moreClauses (r)
+ SwitchStatement(ExpressionNode *e, CaseBlock *b):
+ expression (e), block (b)
{ kind = K; }
- virtual ~CaseBlock() {}
+ virtual ~SwitchStatement() {}
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return switchToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return block->rbraceToken; }
+
// attributes
- CaseClauses *clauses;
- DefaultClause *defaultClause;
- CaseClauses *moreClauses;
- SourceLocation lbraceToken;
- SourceLocation rbraceToken;
+ ExpressionNode *expression;
+ CaseBlock *block;
+ SourceLocation switchToken;
+ SourceLocation lparenToken;
+ SourceLocation rparenToken;
};
class CaseClauses: public Node
@@ -1519,12 +1826,17 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return identifierToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return statement->lastSourceLocation(); }
+
// attributes
JavaScriptNameIdImpl *label;
Statement *statement;
SourceLocation identifierToken;
SourceLocation colonToken;
- SourceLocation semicolonToken;
};
class ThrowStatement: public Statement
@@ -1539,46 +1851,24 @@ public:
virtual void accept0(Visitor *visitor);
-// attributes
+ virtual SourceLocation firstSourceLocation() const
+ { return throwToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
+ // attributes
ExpressionNode *expression;
SourceLocation throwToken;
SourceLocation semicolonToken;
};
-class TryStatement: public Statement
-{
-public:
- JAVASCRIPT_DECLARE_AST_NODE(TryStatement)
-
- TryStatement(Statement *stmt, Catch *c, Finally *f):
- statement (stmt), catchExpression (c), finallyExpression (f)
- { kind = K; }
-
- TryStatement(Statement *stmt, Finally *f):
- statement (stmt), catchExpression (0), finallyExpression (f)
- { kind = K; }
-
- TryStatement(Statement *stmt, Catch *c):
- statement (stmt), catchExpression (c), finallyExpression (0)
- { kind = K; }
-
- virtual ~TryStatement() {}
-
- virtual void accept0(Visitor *visitor);
-
-// attributes
- Statement *statement;
- Catch *catchExpression;
- Finally *finallyExpression;
- SourceLocation tryToken;
-};
-
class Catch: public Node
{
public:
JAVASCRIPT_DECLARE_AST_NODE(Catch)
- Catch(JavaScriptNameIdImpl *n, Statement *stmt):
+ Catch(JavaScriptNameIdImpl *n, Block *stmt):
name (n), statement (stmt)
{ kind = K; }
@@ -1588,7 +1878,7 @@ public:
// attributes
JavaScriptNameIdImpl *name;
- Statement *statement;
+ Block *statement;
SourceLocation catchToken;
SourceLocation lparenToken;
SourceLocation identifierToken;
@@ -1600,7 +1890,7 @@ class Finally: public Node
public:
JAVASCRIPT_DECLARE_AST_NODE(Finally)
- Finally(Statement *stmt):
+ Finally(Block *stmt):
statement (stmt)
{ kind = K; }
@@ -1609,10 +1899,51 @@ public:
virtual void accept0(Visitor *visitor);
// attributes
- Statement *statement;
+ Block *statement;
SourceLocation finallyToken;
};
+class TryStatement: public Statement
+{
+public:
+ JAVASCRIPT_DECLARE_AST_NODE(TryStatement)
+
+ TryStatement(Statement *stmt, Catch *c, Finally *f):
+ statement (stmt), catchExpression (c), finallyExpression (f)
+ { kind = K; }
+
+ TryStatement(Statement *stmt, Finally *f):
+ statement (stmt), catchExpression (0), finallyExpression (f)
+ { kind = K; }
+
+ TryStatement(Statement *stmt, Catch *c):
+ statement (stmt), catchExpression (c), finallyExpression (0)
+ { kind = K; }
+
+ virtual ~TryStatement() {}
+
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return tryToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ {
+ if (finallyExpression)
+ return finallyExpression->statement->rbraceToken;
+ else if (catchExpression)
+ return catchExpression->statement->rbraceToken;
+
+ return statement->lastSourceLocation();
+ }
+
+// attributes
+ Statement *statement;
+ Catch *catchExpression;
+ Finally *finallyExpression;
+ SourceLocation tryToken;
+};
+
class FunctionExpression: public ExpressionNode
{
public:
@@ -1626,6 +1957,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return functionToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbraceToken; }
+
// attributes
JavaScriptNameIdImpl *name;
FormalParameterList *formals;
@@ -1811,6 +2148,12 @@ public:
virtual void accept0(Visitor *visitor);
+ virtual SourceLocation firstSourceLocation() const
+ { return debuggerToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
// attributes
SourceLocation debuggerToken;
SourceLocation semicolonToken;