qmljs/parser: update to latest qt5 parser

fix error semicolon insertion of loops, strict mode

Change-Id: Ic67d6b1fff6f476ea7eb64ae0ee43515d29654a5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Fawzi Mohamed
2013-01-22 11:15:23 +01:00
parent 6c1094aef5
commit 259145f080
14 changed files with 1394 additions and 1014 deletions

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
#include <QtCore/QDebug>
#include <QtCore/QtDebug>
#include <QtCore/QCoreApplication>
#include <string.h>
@@ -42,9 +42,16 @@
#include "qmljsparser_p.h"
#include <QVarLengthArray>
//
// W A R N I N G
// -------------
//
// This file is automatically generated from qmljs.g.
// Changes will be lost.
// Changes should be made to that file, not here. Any change to this file will
// be lost!
//
// To regenerate this file, run:
// qlalr --no-debug --no-lines --qt qmljs.g
//
using namespace QmlJS;
@@ -1384,7 +1391,7 @@ case 289: {
sym(1).Node = node;
} break;
case 291: {
case 292: {
AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1394,7 +1401,7 @@ case 291: {
sym(1).Node = node;
} break;
case 292: {
case 293: {
AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1402,7 +1409,7 @@ case 292: {
sym(1).Node = node;
} break;
case 293: {
case 294: {
AST::ForStatement *node = new (pool) AST::ForStatement(sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1413,7 +1420,7 @@ case 293: {
sym(1).Node = node;
} break;
case 294: {
case 295: {
AST::LocalForStatement *node = new (pool) AST::LocalForStatement(
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1426,7 +1433,7 @@ case 294: {
sym(1).Node = node;
} break;
case 295: {
case 296: {
AST:: ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1436,7 +1443,7 @@ case 295: {
sym(1).Node = node;
} break;
case 296: {
case 297: {
AST::LocalForEachStatement *node = new (pool) AST::LocalForEachStatement(
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1447,14 +1454,14 @@ case 296: {
sym(1).Node = node;
} break;
case 298: {
case 299: {
AST::ContinueStatement *node = new (pool) AST::ContinueStatement();
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
case 300: {
case 301: {
AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2));
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1462,14 +1469,14 @@ case 300: {
sym(1).Node = node;
} break;
case 302: {
case 303: {
AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringRef());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
case 304: {
case 305: {
AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2));
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1477,14 +1484,14 @@ case 304: {
sym(1).Node = node;
} break;
case 306: {
case 307: {
AST::ReturnStatement *node = new (pool) AST::ReturnStatement(sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
case 307: {
case 308: {
AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1492,7 +1499,7 @@ case 307: {
sym(1).Node = node;
} break;
case 308: {
case 309: {
AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1500,57 +1507,50 @@ case 308: {
sym(1).Node = node;
} break;
case 309: {
case 310: {
AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
case 310: {
case 311: {
AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
case 311: {
case 312: {
sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause);
} break;
case 312: {
case 313: {
sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause);
} break;
case 313: {
case 314: {
sym(1).Node = 0;
} break;
case 314: {
case 315: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
case 315: {
case 316: {
AST::CaseClause *node = new (pool) AST::CaseClause(sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
case 316: {
case 317: {
AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
case 317:
case 318: {
AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
case 318:
case 319: {
AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
node->identifierToken = loc(1);
@@ -1558,32 +1558,39 @@ case 319: {
sym(1).Node = node;
} break;
case 321: {
case 320: {
AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
case 322: {
AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
case 322: {
case 323: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
case 323: {
case 324: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
case 324: {
case 325: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
case 325: {
case 326: {
AST::Catch *node = new (pool) AST::Catch(stringRef(3), sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1592,20 +1599,20 @@ case 325: {
sym(1).Node = node;
} break;
case 326: {
case 327: {
AST::Finally *node = new (pool) AST::Finally(sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
case 328: {
case 329: {
AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement();
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
case 329: {
case 330: {
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1616,7 +1623,7 @@ case 329: {
sym(1).Node = node;
} break;
case 330: {
case 331: {
AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (! stringRef(2).isNull())
@@ -1628,60 +1635,60 @@ case 330: {
sym(1).Node = node;
} break;
case 331: {
case 332: {
AST::FormalParameterList *node = new (pool) AST::FormalParameterList(stringRef(1));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
case 332: {
case 333: {
AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, stringRef(3));
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
case 333: {
sym(1).Node = 0;
} break;
case 334: {
sym(1).Node = sym(1).FormalParameterList->finish ();
sym(1).Node = 0;
} break;
case 335: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
case 336: {
sym(1).Node = 0;
} break;
case 337: {
case 338: {
sym(1).Node = new (pool) AST::FunctionBody(sym(1).SourceElements->finish ());
} break;
case 339: {
case 340: {
sym(1).Node = new (pool) AST::Program(sym(1).SourceElements->finish ());
} break;
case 340: {
case 341: {
sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElement);
} break;
case 341: {
case 342: {
sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElements, sym(2).SourceElement);
} break;
case 342: {
case 343: {
sym(1).Node = new (pool) AST::StatementSourceElement(sym(1).Statement);
} break;
case 343: {
case 344: {
sym(1).Node = new (pool) AST::FunctionSourceElement(sym(1).FunctionDeclaration);
} break;
case 344: {
case 345: {
stringRef(1) = QStringRef();
} break;
case 346: {
case 347: {
sym(1).Node = 0;
} break;
@@ -1694,7 +1701,8 @@ case 346: {
const int errorState = state_stack[tos];
// automatic insertion of `;'
if (yytoken != -1 && t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) {
if (yytoken != -1 && ((t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken))
|| t_action(errorState, T_COMPATIBILITY_SEMICOLON))) {
SavedToken &tk = token_buffer[0];
tk.token = yytoken;
tk.dval = yylval;