2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
# line 131 "qmljs.g"
2012-10-02 09:12:39 +02:00
/****************************************************************************
2010-01-18 13:13:34 +01:00
* *
2016-01-15 14:58:39 +01:00
* * Copyright ( C ) 2016 The Qt Company Ltd .
* * Contact : https : //www.qt.io/licensing/
2010-01-18 13:13:34 +01:00
* *
2018-10-16 15:32:58 +02:00
* * This file is part of the QtQml module of the Qt Toolkit .
2010-01-18 13:13:34 +01:00
* *
2018-10-16 15:32:58 +02:00
* * $ QT_BEGIN_LICENSE : LGPL $
2012-10-02 09:12:39 +02:00
* * Commercial License Usage
* * Licensees holding valid commercial Qt licenses may use this file in
* * accordance with the commercial license agreement provided with the
* * Software or , alternatively , in accordance with the terms contained in
2016-01-15 14:58:39 +01:00
* * a written agreement between you and The Qt Company . For licensing terms
* * and conditions see https : //www.qt.io/terms-conditions. For further
* * information use the contact form at https : //www.qt.io/contact-us.
2011-05-12 13:25:35 +02:00
* *
2018-10-16 15:32:58 +02:00
* * GNU Lesser General Public License Usage
* * Alternatively , this file may be used under the terms of the GNU Lesser
* * General Public License version 3 as published by the Free Software
* * Foundation and appearing in the file LICENSE . LGPL3 included in the
* * packaging of this file . Please review the following information to
* * ensure the GNU Lesser General Public License version 3 requirements
* * will be met : https : //www.gnu.org/licenses/lgpl-3.0.html.
* *
2016-01-15 14:58:39 +01:00
* * GNU General Public License Usage
* * Alternatively , this file may be used under the terms of the GNU
2018-10-16 15:32:58 +02:00
* * General Public License version 2.0 or ( at your option ) the GNU General
* * Public license version 3 or any later version approved by the KDE Free
* * Qt Foundation . The licenses are as published by the Free Software
* * Foundation and appearing in the file LICENSE . GPL2 and LICENSE . GPL3
2016-01-15 14:58:39 +01:00
* * included in the packaging of this file . Please review the following
* * information to ensure the GNU General Public License requirements will
2018-10-16 15:32:58 +02:00
* * be met : https : //www.gnu.org/licenses/gpl-2.0.html and
* * https : //www.gnu.org/licenses/gpl-3.0.html.
* *
* * $ QT_END_LICENSE $
2010-01-18 13:13:34 +01:00
* *
2012-10-02 09:12:39 +02:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2010-01-18 13:13:34 +01:00
# include "qmljsengine_p.h"
# include "qmljslexer_p.h"
# include "qmljsast_p.h"
2011-09-13 08:42:52 +02:00
# include "qmljsmemorypool_p.h"
2010-01-18 13:13:34 +01:00
2013-11-06 14:17:23 +01:00
# include <QtCore/qdebug.h>
# include <QtCore/qcoreapplication.h>
# include <string.h>
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 489 "qmljs.g"
2018-10-16 15:32:58 +02:00
2011-02-21 12:46:02 +01:00
# include "qmljsparser_p.h"
2013-11-06 14:17:23 +01:00
# include <QtCore/qvarlengtharray.h>
2010-01-18 13:13:34 +01:00
2013-01-22 11:15:23 +01:00
//
// W A R N I N G
// -------------
2010-01-18 13:13:34 +01:00
//
// This file is automatically generated from qmljs.g.
2013-01-22 11:15:23 +01:00
// 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
2010-01-18 13:13:34 +01:00
//
2018-10-16 15:32:58 +02:00
# define UNIMPLEMENTED syntaxError(loc(1), "Unimplemented"); return false
2010-01-18 13:13:34 +01:00
using namespace QmlJS ;
QT_QML_BEGIN_NAMESPACE
void Parser : : reallocateStack ( )
{
if ( ! stack_size )
stack_size = 128 ;
else
stack_size < < = 1 ;
2012-07-31 10:12:26 +02:00
sym_stack = reinterpret_cast < Value * > ( realloc ( sym_stack , stack_size * sizeof ( Value ) ) ) ;
state_stack = reinterpret_cast < int * > ( realloc ( state_stack , stack_size * sizeof ( int ) ) ) ;
location_stack = reinterpret_cast < AST : : SourceLocation * > ( realloc ( location_stack , stack_size * sizeof ( AST : : SourceLocation ) ) ) ;
2018-10-16 15:32:58 +02:00
string_stack . resize ( stack_size ) ;
2019-10-04 16:11:02 +02:00
rawString_stack . resize ( stack_size ) ;
2010-01-18 13:13:34 +01:00
}
Parser : : Parser ( Engine * engine ) :
driver ( engine ) ,
2018-10-16 15:32:58 +02:00
pool ( engine - > pool ( ) )
2010-01-18 13:13:34 +01:00
{
}
Parser : : ~ Parser ( )
{
if ( stack_size ) {
2012-07-31 10:12:26 +02:00
free ( sym_stack ) ;
free ( state_stack ) ;
free ( location_stack ) ;
2010-01-18 13:13:34 +01:00
}
}
static inline AST : : SourceLocation location ( Lexer * lexer )
{
AST : : SourceLocation loc ;
loc . offset = lexer - > tokenOffset ( ) ;
loc . length = lexer - > tokenLength ( ) ;
2011-09-13 08:42:52 +02:00
loc . startLine = lexer - > tokenStartLine ( ) ;
loc . startColumn = lexer - > tokenStartColumn ( ) ;
2010-01-18 13:13:34 +01:00
return loc ;
}
AST : : UiQualifiedId * Parser : : reparseAsQualifiedId ( AST : : ExpressionNode * expr )
{
2011-09-13 08:42:52 +02:00
QVarLengthArray < QStringRef , 4 > nameIds ;
2010-01-18 13:13:34 +01:00
QVarLengthArray < AST : : SourceLocation , 4 > locations ;
AST : : ExpressionNode * it = expr ;
while ( AST : : FieldMemberExpression * m = AST : : cast < AST : : FieldMemberExpression * > ( it ) ) {
nameIds . append ( m - > name ) ;
locations . append ( m - > identifierToken ) ;
it = m - > base ;
}
if ( AST : : IdentifierExpression * idExpr = AST : : cast < AST : : IdentifierExpression * > ( it ) ) {
2011-09-13 08:42:52 +02:00
AST : : UiQualifiedId * q = new ( pool ) AST : : UiQualifiedId ( idExpr - > name ) ;
2010-01-18 13:13:34 +01:00
q - > identifierToken = idExpr - > identifierToken ;
AST : : UiQualifiedId * currentId = q ;
for ( int i = nameIds . size ( ) - 1 ; i ! = - 1 ; - - i ) {
2011-09-13 08:42:52 +02:00
currentId = new ( pool ) AST : : UiQualifiedId ( currentId , nameIds [ i ] ) ;
2010-01-18 13:13:34 +01:00
currentId - > identifierToken = locations [ i ] ;
}
return currentId - > finish ( ) ;
}
return 0 ;
}
2018-10-16 15:32:58 +02:00
void Parser : : pushToken ( int token )
2013-11-06 14:17:23 +01:00
{
2019-10-04 16:11:02 +02:00
Q_ASSERT ( last_token ) ;
Q_ASSERT ( last_token < & token_buffer [ TOKEN_BUFFER_SIZE ] ) ;
2018-10-16 15:32:58 +02:00
last_token - > token = yytoken ;
last_token - > dval = yylval ;
last_token - > spell = yytokenspell ;
2019-10-04 16:11:02 +02:00
last_token - > raw = yytokenraw ;
2018-10-16 15:32:58 +02:00
last_token - > loc = yylloc ;
+ + last_token ;
yytoken = token ;
}
2013-11-06 14:17:23 +01:00
2018-10-16 15:32:58 +02:00
int Parser : : lookaheadToken ( Lexer * lexer )
{
if ( yytoken < 0 ) {
yytoken = lexer - > lex ( ) ;
yylval = lexer - > tokenValue ( ) ;
yytokenspell = lexer - > tokenSpell ( ) ;
2019-10-04 16:11:02 +02:00
yytokenraw = lexer - > rawString ( ) ;
2018-10-16 15:32:58 +02:00
yylloc = location ( lexer ) ;
2013-11-06 14:17:23 +01:00
}
2018-10-16 15:32:58 +02:00
return yytoken ;
2013-11-06 14:17:23 +01:00
}
2019-10-04 16:11:02 +02:00
bool Parser : : ensureNoFunctionTypeAnnotations ( AST : : TypeAnnotation * returnValueAnnotation , AST : : FormalParameterList * formals )
{
for ( auto formal = formals ; formal ; formal = formal - > next ) {
if ( formal - > element & & formal - > element - > typeAnnotation ) {
syntaxError ( formal - > element - > typeAnnotation - > firstSourceLocation ( ) , " Type annotations are not permitted in function parameters in JavaScript functions " ) ;
return false ;
}
}
if ( returnValueAnnotation ) {
syntaxError ( returnValueAnnotation - > firstSourceLocation ( ) , " Type annotations are not permitted for the return value of JavaScript functions " ) ;
return false ;
}
return true ;
}
2018-10-16 15:32:58 +02:00
//#define PARSER_DEBUG
2013-11-06 14:17:23 +01:00
2010-01-18 13:13:34 +01:00
bool Parser : : parse ( int startToken )
{
Lexer * lexer = driver - > lexer ( ) ;
bool hadErrors = false ;
2018-10-16 15:32:58 +02:00
yytoken = - 1 ;
2010-01-18 13:13:34 +01:00
int action = 0 ;
token_buffer [ 0 ] . token = startToken ;
first_token = & token_buffer [ 0 ] ;
2018-10-16 15:32:58 +02:00
if ( startToken = = T_FEED_JS_SCRIPT & & ! lexer - > qmlMode ( ) ) {
2011-09-27 15:12:22 +02:00
Directives ignoreDirectives ;
Directives * directives = driver - > directives ( ) ;
if ( ! directives )
directives = & ignoreDirectives ;
2016-04-29 11:00:30 +02:00
DiagnosticMessage error ;
if ( ! lexer - > scanDirectives ( directives , & error ) ) {
diagnostic_messages . append ( error ) ;
return false ;
}
2011-09-27 15:12:22 +02:00
token_buffer [ 1 ] . token = lexer - > tokenKind ( ) ;
token_buffer [ 1 ] . dval = lexer - > tokenValue ( ) ;
token_buffer [ 1 ] . loc = location ( lexer ) ;
token_buffer [ 1 ] . spell = lexer - > tokenSpell ( ) ;
last_token = & token_buffer [ 2 ] ;
} else {
last_token = & token_buffer [ 1 ] ;
}
2010-01-18 13:13:34 +01:00
tos = - 1 ;
program = 0 ;
do {
if ( + + tos = = stack_size )
reallocateStack ( ) ;
state_stack [ tos ] = action ;
_Lcheck_token :
if ( yytoken = = - 1 & & - TERMINAL_COUNT ! = action_index [ action ] ) {
yyprevlloc = yylloc ;
if ( first_token = = last_token ) {
yytoken = lexer - > lex ( ) ;
2011-09-13 08:42:52 +02:00
yylval = lexer - > tokenValue ( ) ;
yytokenspell = lexer - > tokenSpell ( ) ;
2019-10-04 16:11:02 +02:00
yytokenraw = lexer - > rawString ( ) ;
2010-01-18 13:13:34 +01:00
yylloc = location ( lexer ) ;
} else {
yytoken = first_token - > token ;
yylval = first_token - > dval ;
2011-09-13 08:42:52 +02:00
yytokenspell = first_token - > spell ;
2019-10-04 16:11:02 +02:00
yytokenraw = first_token - > raw ;
2010-01-18 13:13:34 +01:00
yylloc = first_token - > loc ;
+ + first_token ;
2018-10-16 15:32:58 +02:00
if ( first_token = = last_token )
first_token = last_token = & token_buffer [ 0 ] ;
2010-01-18 13:13:34 +01:00
}
}
2018-10-16 15:32:58 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " in state " < < action ;
# endif
2010-01-18 13:13:34 +01:00
action = t_action ( action , yytoken ) ;
2018-10-16 15:32:58 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " current token " < < yytoken < < ( yytoken > = 0 ? spell [ yytoken ] : " (null) " ) < < " new state " < < action ;
# endif
2010-01-18 13:13:34 +01:00
if ( action > 0 ) {
if ( action ! = ACCEPT_STATE ) {
yytoken = - 1 ;
sym ( 1 ) . dval = yylval ;
2011-09-13 08:42:52 +02:00
stringRef ( 1 ) = yytokenspell ;
2019-10-04 16:11:02 +02:00
rawStringRef ( 1 ) = yytokenraw ;
2010-01-18 13:13:34 +01:00
loc ( 1 ) = yylloc ;
} else {
- - tos ;
return ! hadErrors ;
}
} else if ( action < 0 ) {
const int r = - action - 1 ;
tos - = rhs [ r ] ;
2018-10-16 15:32:58 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " reducing through rule " < < - action ;
# endif
2010-01-18 13:13:34 +01:00
switch ( r ) {
2019-10-04 16:11:02 +02:00
# line 716 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 0 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
program = sym ( 1 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 724 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 1 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
program = sym ( 1 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 732 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 2 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
program = sym ( 1 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 740 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 3 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
program = sym ( 1 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 748 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 4 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
program = sym ( 1 ) . Node ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 756 "qmljs.g"
2013-11-06 14:17:23 +01:00
2018-10-16 15:32:58 +02:00
case 5 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
program = sym ( 1 ) . Node ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 765 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 6 : {
sym ( 1 ) . UiProgram = new ( pool ) AST : : UiProgram ( sym ( 1 ) . UiHeaderItemList , sym ( 2 ) . UiObjectMemberList - > finish ( ) ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 773 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 8 : {
sym ( 1 ) . Node = sym ( 1 ) . UiHeaderItemList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 780 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 9 : {
sym ( 1 ) . Node = new ( pool ) AST : : UiHeaderItemList ( sym ( 1 ) . UiPragma ) ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 787 "qmljs.g"
2013-11-06 14:17:23 +01:00
2018-10-16 15:32:58 +02:00
case 10 : {
sym ( 1 ) . Node = new ( pool ) AST : : UiHeaderItemList ( sym ( 1 ) . UiImport ) ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 794 "qmljs.g"
2013-11-06 14:17:23 +01:00
2018-10-16 15:32:58 +02:00
case 11 : {
sym ( 1 ) . Node = new ( pool ) AST : : UiHeaderItemList ( sym ( 1 ) . UiHeaderItemList , sym ( 2 ) . UiPragma ) ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 801 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 12 : {
sym ( 1 ) . Node = new ( pool ) AST : : UiHeaderItemList ( sym ( 1 ) . UiHeaderItemList , sym ( 2 ) . UiImport ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 813 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 16 : {
2018-10-16 15:32:58 +02:00
AST : : UiPragma * pragma = new ( pool ) AST : : UiPragma ( stringRef ( 2 ) ) ;
pragma - > pragmaToken = loc ( 1 ) ;
pragma - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = pragma ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 825 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 18 : {
sym ( 1 ) . UiImport - > semicolonToken = loc ( 2 ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 832 "qmljs.g"
case 19 : {
auto version = new ( pool ) AST : : UiVersionSpecifier ( sym ( 1 ) . dval , sym ( 3 ) . dval ) ;
version - > majorToken = loc ( 1 ) ;
version - > minorToken = loc ( 3 ) ;
sym ( 1 ) . UiVersionSpecifier = version ;
} break ;
# line 843 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 20 : {
2019-10-04 16:11:02 +02:00
auto version = new ( pool ) AST : : UiVersionSpecifier ( sym ( 1 ) . dval , 0 ) ;
version - > majorToken = loc ( 1 ) ;
sym ( 1 ) . UiVersionSpecifier = version ;
} break ;
# line 852 "qmljs.g"
case 21 : {
auto versionToken = loc ( 2 ) ;
auto version = sym ( 2 ) . UiVersionSpecifier ;
sym ( 1 ) . UiImport - > version = version ;
if ( version - > minorToken . isValid ( ) ) {
versionToken . length + = version - > minorToken . length + ( version - > minorToken . offset - versionToken . offset - versionToken . length ) ;
}
sym ( 1 ) . UiImport - > versionToken = versionToken ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . UiImport - > semicolonToken = loc ( 3 ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 866 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 22 : {
2019-10-10 11:05:40 +02:00
auto versionToken = loc ( 2 ) ;
auto version = sym ( 2 ) . UiVersionSpecifier ;
sym ( 1 ) . UiImport - > version = version ;
if ( version - > minorToken . isValid ( ) ) {
versionToken . length + = version - > minorToken . length + ( version - > minorToken . offset - versionToken . offset - versionToken . length ) ;
}
sym ( 1 ) . UiImport - > versionToken = versionToken ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . UiImport - > asToken = loc ( 3 ) ;
sym ( 1 ) . UiImport - > importIdToken = loc ( 4 ) ;
sym ( 1 ) . UiImport - > importId = stringRef ( 4 ) ;
sym ( 1 ) . UiImport - > semicolonToken = loc ( 5 ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 878 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 23 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . UiImport - > asToken = loc ( 2 ) ;
sym ( 1 ) . UiImport - > importIdToken = loc ( 3 ) ;
sym ( 1 ) . UiImport - > importId = stringRef ( 3 ) ;
sym ( 1 ) . UiImport - > semicolonToken = loc ( 4 ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 888 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 24 : {
2018-10-16 15:32:58 +02:00
AST : : UiImport * node = 0 ;
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
if ( AST : : StringLiteral * importIdLiteral = AST : : cast < AST : : StringLiteral * > ( sym ( 2 ) . Expression ) ) {
node = new ( pool ) AST : : UiImport ( importIdLiteral - > value ) ;
node - > fileNameToken = loc ( 2 ) ;
} else if ( AST : : UiQualifiedId * qualifiedId = reparseAsQualifiedId ( sym ( 2 ) . Expression ) ) {
node = new ( pool ) AST : : UiImport ( qualifiedId ) ;
node - > fileNameToken = loc ( 2 ) ;
}
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
2010-03-03 11:38:33 +01:00
2018-10-16 15:32:58 +02:00
if ( node ) {
node - > importToken = loc ( 1 ) ;
} else {
2019-10-04 16:11:02 +02:00
diagnostic_messages . append ( compileError ( loc ( 1 ) ,
2018-10-16 15:32:58 +02:00
QLatin1String ( " Expected a qualified name id or a string literal " ) ) ) ;
return false ; // ### remove me
}
} break ;
2011-05-12 13:25:35 +02:00
2019-10-04 16:11:02 +02:00
# line 914 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 25 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 921 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 26 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiObjectMemberList ( sym ( 1 ) . UiObjectMember ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 928 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 27 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiObjectMemberList ( sym ( 1 ) . UiObjectMember ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 935 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 28 : {
2018-10-16 15:32:58 +02:00
AST : : UiObjectMemberList * node = new ( pool ) AST : : UiObjectMemberList ( sym ( 1 ) . UiObjectMemberList , sym ( 2 ) . UiObjectMember ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 943 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 29 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiArrayMemberList ( sym ( 1 ) . UiObjectMember ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 950 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 30 : {
2018-10-16 15:32:58 +02:00
AST : : UiArrayMemberList * node = new ( pool ) AST : : UiArrayMemberList ( sym ( 1 ) . UiArrayMemberList , sym ( 3 ) . UiObjectMember ) ;
node - > commaToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 959 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 31 : {
2018-10-16 15:32:58 +02:00
AST : : UiObjectInitializer * node = new ( pool ) AST : : UiObjectInitializer ( ( AST : : UiObjectMemberList * ) 0 ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 969 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 32 : {
2018-10-16 15:32:58 +02:00
AST : : UiObjectInitializer * node = new ( pool ) AST : : UiObjectInitializer ( sym ( 2 ) . UiObjectMemberList - > finish ( ) ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 979 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 33 : {
2018-10-16 15:32:58 +02:00
AST : : UiObjectDefinition * node = new ( pool ) AST : : UiObjectDefinition ( sym ( 1 ) . UiQualifiedId , sym ( 2 ) . UiObjectInitializer ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 989 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 35 : {
2018-10-16 15:32:58 +02:00
AST : : UiArrayBinding * node = new ( pool ) AST : : UiArrayBinding ( sym ( 1 ) . UiQualifiedId , sym ( 5 ) . UiArrayMemberList - > finish ( ) ) ;
node - > colonToken = loc ( 2 ) ;
node - > lbracketToken = loc ( 4 ) ;
node - > rbracketToken = loc ( 6 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1000 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 36 : {
2018-10-16 15:32:58 +02:00
AST : : UiObjectBinding * node = new ( pool ) AST : : UiObjectBinding (
sym ( 1 ) . UiQualifiedId , sym ( 4 ) . UiQualifiedId , sym ( 5 ) . UiObjectInitializer ) ;
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1010 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 37 : {
2018-10-16 15:32:58 +02:00
AST : : UiObjectBinding * node = new ( pool ) AST : : UiObjectBinding (
sym ( 3 ) . UiQualifiedId , sym ( 1 ) . UiQualifiedId , sym ( 4 ) . UiObjectInitializer ) ;
node - > colonToken = loc ( 2 ) ;
node - > hasOnToken = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1022 "qmljs.g"
case 38 : Q_FALLTHROUGH ( ) ;
# line 1024 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 39 : {
2018-10-16 15:32:58 +02:00
AST : : ObjectPattern * l = new ( pool ) AST : : ObjectPattern ( sym ( 3 ) . PatternPropertyList - > finish ( ) ) ;
l - > lbraceToken = loc ( 1 ) ;
l - > rbraceToken = loc ( 4 ) ;
AST : : ExpressionStatement * node = new ( pool ) AST : : ExpressionStatement ( l ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1036 "qmljs.g"
case 40 : Q_FALLTHROUGH ( ) ;
# line 1038 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 41 : Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 1040 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 42 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 3 ) . Node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1048 "qmljs.g"
case 43 : Q_FALLTHROUGH ( ) ;
# line 1050 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 44 : Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 1052 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 45 : Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 1054 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 46 : Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 1056 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 47 : Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 1058 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 48 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1065 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 49 :
2010-01-18 13:13:34 +01:00
{
2018-10-16 15:32:58 +02:00
AST : : UiScriptBinding * node = new ( pool ) AST : : UiScriptBinding ( sym ( 1 ) . UiQualifiedId , sym ( 3 ) . Statement ) ;
2010-01-18 13:13:34 +01:00
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
2018-10-16 15:32:58 +02:00
} break ;
2019-10-04 16:11:02 +02:00
# line 1075 "qmljs.g"
case 50 : Q_FALLTHROUGH ( ) ;
# line 1077 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 51 : Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 1079 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 52 : {
2018-10-16 15:32:58 +02:00
AST : : UiQualifiedId * node = new ( pool ) AST : : UiQualifiedId ( stringRef ( 1 ) ) ;
node - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1088 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 53 : {
2018-10-16 15:32:58 +02:00
AST : : UiQualifiedId * node = new ( pool ) AST : : UiQualifiedId ( sym ( 1 ) . UiQualifiedId , stringRef ( 3 ) ) ;
node - > identifierToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1097 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 54 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1104 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 55 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . UiParameterList - > finish ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1111 "qmljs.g"
case 56 : {
AST : : UiParameterList * node = new ( pool ) AST : : UiParameterList ( sym ( 3 ) . UiQualifiedId - > finish ( ) , stringRef ( 1 ) ) ;
node - > identifierToken = loc ( 1 ) ;
node - > colonToken = loc ( 2 ) ;
node - > propertyTypeToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1122 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 57 : {
AST : : UiParameterList * node = new ( pool ) AST : : UiParameterList ( sym ( 1 ) . UiQualifiedId - > finish ( ) , stringRef ( 2 ) ) ;
node - > propertyTypeToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1132 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 58 : {
2019-10-04 16:11:02 +02:00
AST : : UiParameterList * node = new ( pool ) AST : : UiParameterList ( sym ( 1 ) . UiParameterList , sym ( 5 ) . UiQualifiedId - > finish ( ) , stringRef ( 3 ) ) ;
node - > propertyTypeToken = loc ( 5 ) ;
node - > commaToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
node - > colonToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1144 "qmljs.g"
case 59 : {
2018-10-16 15:32:58 +02:00
AST : : UiParameterList * node = new ( pool ) AST : : UiParameterList ( sym ( 1 ) . UiParameterList , sym ( 3 ) . UiQualifiedId - > finish ( ) , stringRef ( 4 ) ) ;
node - > propertyTypeToken = loc ( 3 ) ;
node - > commaToken = loc ( 2 ) ;
node - > identifierToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1155 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 60 : {
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( nullptr , stringRef ( 2 ) ) ;
node - > type = AST : : UiPublicMember : : Signal ;
node - > propertyToken = loc ( 1 ) ;
node - > typeToken = loc ( 2 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > parameters = sym ( 4 ) . UiParameterList ;
node - > semicolonToken = loc ( 6 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1169 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 61 : {
2018-10-16 15:32:58 +02:00
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( nullptr , stringRef ( 2 ) ) ;
node - > type = AST : : UiPublicMember : : Signal ;
node - > propertyToken = loc ( 1 ) ;
node - > typeToken = loc ( 2 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1182 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 62 : {
2018-10-16 15:32:58 +02:00
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( sym ( 4 ) . UiQualifiedId - > finish ( ) , stringRef ( 6 ) ) ;
node - > typeModifier = stringRef ( 2 ) ;
node - > propertyToken = loc ( 1 ) ;
node - > typeModifierToken = loc ( 2 ) ;
node - > typeToken = loc ( 4 ) ;
node - > identifierToken = loc ( 6 ) ;
node - > semicolonToken = loc ( 7 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1198 "qmljs.g"
case 64 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
node - > isReadonlyMember = true ;
node - > readonlyToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1208 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 65 : {
2018-10-16 15:32:58 +02:00
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( sym ( 2 ) . UiQualifiedId - > finish ( ) , stringRef ( 3 ) ) ;
node - > propertyToken = loc ( 1 ) ;
node - > typeToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
node - > semicolonToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1223 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 67 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
2018-10-16 15:32:58 +02:00
node - > isDefaultMember = true ;
node - > defaultToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1233 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 68 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
2018-10-16 15:32:58 +02:00
node - > isDefaultMember = true ;
node - > defaultToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1243 "qmljs.g"
/* we need OptionalSemicolon because UiScriptStatement might already parse the last semicolon
and then we would miss a semicolon ( see tests / auto / quick / qquickvisualdatamodel / data / objectlist . qml ) */
# line 1249 "qmljs.g"
2018-10-16 15:32:58 +02:00
case 71 : {
2019-10-04 16:11:02 +02:00
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
node - > requiredToken = loc ( 1 ) ;
node - > isRequired = true ;
sym ( 1 ) . Node = node ;
} break ;
# line 1260 "qmljs.g"
case 72 : {
2018-10-16 15:32:58 +02:00
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( sym ( 2 ) . UiQualifiedId - > finish ( ) , stringRef ( 3 ) , sym ( 5 ) . Statement ) ;
node - > propertyToken = loc ( 1 ) ;
node - > typeToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
node - > colonToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1274 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 74 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
2018-10-16 15:32:58 +02:00
node - > isReadonlyMember = true ;
node - > readonlyToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1284 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 75 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
2018-10-16 15:32:58 +02:00
node - > isDefaultMember = true ;
node - > defaultToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1294 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 76 : {
2018-10-16 15:32:58 +02:00
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( sym ( 4 ) . UiQualifiedId - > finish ( ) , stringRef ( 6 ) ) ;
node - > typeModifier = stringRef ( 2 ) ;
node - > propertyToken = loc ( 1 ) ;
node - > typeModifierToken = loc ( 2 ) ;
node - > typeToken = loc ( 4 ) ;
node - > identifierToken = loc ( 6 ) ;
node - > semicolonToken = loc ( 7 ) ; // insert a fake ';' before ':'
AST : : UiQualifiedId * propertyName = new ( pool ) AST : : UiQualifiedId ( stringRef ( 6 ) ) ;
propertyName - > identifierToken = loc ( 6 ) ;
propertyName - > next = 0 ;
AST : : UiArrayBinding * binding = new ( pool ) AST : : UiArrayBinding ( propertyName , sym ( 9 ) . UiArrayMemberList - > finish ( ) ) ;
binding - > colonToken = loc ( 7 ) ;
binding - > lbracketToken = loc ( 8 ) ;
binding - > rbracketToken = loc ( 10 ) ;
node - > binding = binding ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1322 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 78 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
node - > isReadonlyMember = true ;
node - > readonlyToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1332 "qmljs.g"
case 79 : {
2018-10-16 15:32:58 +02:00
AST : : UiPublicMember * node = new ( pool ) AST : : UiPublicMember ( sym ( 2 ) . UiQualifiedId - > finish ( ) , stringRef ( 3 ) ) ;
node - > propertyToken = loc ( 1 ) ;
node - > typeToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
node - > semicolonToken = loc ( 4 ) ; // insert a fake ';' before ':'
AST : : UiQualifiedId * propertyName = new ( pool ) AST : : UiQualifiedId ( stringRef ( 3 ) ) ;
propertyName - > identifierToken = loc ( 3 ) ;
propertyName - > next = 0 ;
AST : : UiObjectBinding * binding = new ( pool ) AST : : UiObjectBinding (
propertyName , sym ( 6 ) . UiQualifiedId , sym ( 7 ) . UiObjectInitializer ) ;
binding - > colonToken = loc ( 4 ) ;
node - > binding = binding ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1357 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 81 : {
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
2018-10-16 15:32:58 +02:00
node - > isReadonlyMember = true ;
node - > readonlyToken = loc ( 1 ) ;
2019-10-04 16:11:02 +02:00
sym ( 1 ) . Node = node ;
} break ;
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
# line 1367 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 82 : {
auto node = new ( pool ) AST : : UiSourceElement ( sym ( 1 ) . Node ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1375 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 83 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiSourceElement ( sym ( 1 ) . Node ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1382 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 84 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiSourceElement ( sym ( 1 ) . Node ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1389 "qmljs.g"
2017-03-16 17:13:46 +01:00
2019-10-04 16:11:02 +02:00
case 85 : {
2018-10-16 15:32:58 +02:00
if ( AST : : ArrayMemberExpression * mem = AST : : cast < AST : : ArrayMemberExpression * > ( sym ( 1 ) . Expression ) ) {
2019-10-04 16:11:02 +02:00
diagnostic_messages . append ( compileError ( mem - > lbracketToken ,
QLatin1String ( " Ignored annotation " ) , Severity : : Warning ) ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Expression = mem - > base ;
}
2017-03-16 17:13:46 +01:00
2018-10-16 15:32:58 +02:00
if ( AST : : UiQualifiedId * qualifiedId = reparseAsQualifiedId ( sym ( 1 ) . Expression ) ) {
sym ( 1 ) . UiQualifiedId = qualifiedId ;
} else {
sym ( 1 ) . UiQualifiedId = 0 ;
2017-03-16 17:13:46 +01:00
2019-10-04 16:11:02 +02:00
diagnostic_messages . append ( compileError ( loc ( 1 ) ,
2018-10-16 15:32:58 +02:00
QLatin1String ( " Expected a qualified name id " ) ) ) ;
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
return false ; // ### recover
}
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1412 "qmljs.g"
2017-03-16 17:13:46 +01:00
2019-10-04 16:11:02 +02:00
case 86 : {
2018-10-16 15:32:58 +02:00
AST : : UiEnumDeclaration * enumDeclaration = new ( pool ) AST : : UiEnumDeclaration ( stringRef ( 2 ) , sym ( 4 ) . UiEnumMemberList - > finish ( ) ) ;
enumDeclaration - > enumToken = loc ( 1 ) ;
enumDeclaration - > rbraceToken = loc ( 5 ) ;
sym ( 1 ) . Node = enumDeclaration ;
break ;
}
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1423 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 87 : {
2018-10-16 15:32:58 +02:00
AST : : UiEnumMemberList * node = new ( pool ) AST : : UiEnumMemberList ( stringRef ( 1 ) ) ;
node - > memberToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
break ;
}
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1433 "qmljs.g"
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
case 88 : {
2018-10-16 15:32:58 +02:00
AST : : UiEnumMemberList * node = new ( pool ) AST : : UiEnumMemberList ( stringRef ( 1 ) , sym ( 3 ) . dval ) ;
node - > memberToken = loc ( 1 ) ;
node - > valueToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
break ;
}
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
# line 1444 "qmljs.g"
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
case 89 : {
2018-10-16 15:32:58 +02:00
AST : : UiEnumMemberList * node = new ( pool ) AST : : UiEnumMemberList ( sym ( 1 ) . UiEnumMemberList , stringRef ( 3 ) ) ;
node - > memberToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
break ;
}
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
# line 1454 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 90 : {
2018-10-16 15:32:58 +02:00
AST : : UiEnumMemberList * node = new ( pool ) AST : : UiEnumMemberList ( sym ( 1 ) . UiEnumMemberList , stringRef ( 3 ) , sym ( 5 ) . dval ) ;
node - > memberToken = loc ( 3 ) ;
node - > valueToken = loc ( 5 ) ;
sym ( 1 ) . Node = node ;
break ;
}
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
# line 1496 "qmljs.g"
case 115 : {
sym ( 1 ) . TypeArgumentList = new ( pool ) AST : : TypeArgumentList ( sym ( 1 ) . Type ) ;
} break ;
# line 1503 "qmljs.g"
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
case 116 : {
sym ( 1 ) . TypeArgumentList = new ( pool ) AST : : TypeArgumentList ( sym ( 1 ) . TypeArgumentList , sym ( 3 ) . Type ) ;
} break ;
# line 1510 "qmljs.g"
case 117 : {
sym ( 1 ) . Type = new ( pool ) AST : : Type ( sym ( 1 ) . UiQualifiedId , sym ( 3 ) . TypeArgumentList - > finish ( ) ) ;
} break ;
# line 1517 "qmljs.g"
case 118 : {
AST : : UiQualifiedId * id = new ( pool ) AST : : UiQualifiedId ( stringRef ( 1 ) ) ;
id - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Type = new ( pool ) AST : : Type ( id - > finish ( ) ) ;
} break ;
# line 1526 "qmljs.g"
case 119 : {
sym ( 1 ) . Type = new ( pool ) AST : : Type ( sym ( 1 ) . UiQualifiedId ) ;
} break ;
# line 1533 "qmljs.g"
case 120 : {
sym ( 1 ) . TypeAnnotation = new ( pool ) AST : : TypeAnnotation ( sym ( 2 ) . Type ) ;
sym ( 1 ) . TypeAnnotation - > colonToken = loc ( 1 ) ;
} break ;
# line 1542 "qmljs.g"
case 122 : {
sym ( 1 ) . TypeAnnotation = nullptr ;
} break ;
# line 1553 "qmljs.g"
case 123 : {
2018-10-16 15:32:58 +02:00
AST : : ThisExpression * node = new ( pool ) AST : : ThisExpression ( ) ;
node - > thisToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
# line 1562 "qmljs.g"
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
case 124 : {
2018-10-16 15:32:58 +02:00
AST : : IdentifierExpression * node = new ( pool ) AST : : IdentifierExpression ( stringRef ( 1 ) ) ;
node - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
# line 1580 "qmljs.g"
2016-04-29 11:00:30 +02:00
2019-10-04 16:11:02 +02:00
case 133 : {
2018-10-16 15:32:58 +02:00
if ( coverExpressionType ! = CE_ParenthesizedExpression ) {
syntaxError ( coverExpressionErrorLocation , " Expected token ')'. " ) ;
return false ;
}
} break ;
2016-04-29 11:00:30 +02:00
2019-10-04 16:11:02 +02:00
# line 1591 "qmljs.g"
2016-04-29 11:00:30 +02:00
2019-10-04 16:11:02 +02:00
case 134 : {
2018-10-16 15:32:58 +02:00
AST : : NestedExpression * node = new ( pool ) AST : : NestedExpression ( sym ( 2 ) . Expression ) ;
node - > lparenToken = loc ( 1 ) ;
node - > rparenToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
coverExpressionType = CE_ParenthesizedExpression ;
} break ;
2016-04-29 11:00:30 +02:00
2019-10-04 16:11:02 +02:00
# line 1602 "qmljs.g"
2017-12-20 10:47:33 +01:00
2019-10-04 16:11:02 +02:00
case 135 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
coverExpressionErrorLocation = loc ( 2 ) ;
coverExpressionType = CE_FormalParameterList ;
} break ;
2017-12-20 10:47:33 +01:00
2019-10-04 16:11:02 +02:00
# line 1611 "qmljs.g"
2017-12-20 10:47:33 +01:00
2019-10-04 16:11:02 +02:00
case 136 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = ( new ( pool ) AST : : FormalParameterList ( nullptr , sym ( 2 ) . PatternElement ) ) - > finish ( pool ) ;
sym ( 1 ) . Node = node ;
coverExpressionErrorLocation = loc ( 2 ) ;
coverExpressionType = CE_FormalParameterList ;
} break ;
2017-12-20 10:47:33 +01:00
2019-10-04 16:11:02 +02:00
# line 1621 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 137 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * list = sym ( 2 ) . Expression - > reparseAsFormalParameterList ( pool ) ;
if ( ! list ) {
syntaxError ( loc ( 1 ) , " Invalid Arrow parameter list. " ) ;
return false ;
}
if ( sym ( 4 ) . Node ) {
list = new ( pool ) AST : : FormalParameterList ( list , sym ( 4 ) . PatternElement ) ;
}
coverExpressionErrorLocation = loc ( 4 ) ;
coverExpressionType = CE_FormalParameterList ;
sym ( 1 ) . Node = list - > finish ( pool ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1638 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 138 : {
2018-10-16 15:32:58 +02:00
AST : : NullExpression * node = new ( pool ) AST : : NullExpression ( ) ;
node - > nullToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1647 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 139 : {
2018-10-16 15:32:58 +02:00
AST : : TrueLiteral * node = new ( pool ) AST : : TrueLiteral ( ) ;
node - > trueToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1656 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 140 : {
2018-10-16 15:32:58 +02:00
AST : : FalseLiteral * node = new ( pool ) AST : : FalseLiteral ( ) ;
node - > falseToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1665 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 141 : {
2018-10-16 15:32:58 +02:00
AST : : NumericLiteral * node = new ( pool ) AST : : NumericLiteral ( sym ( 1 ) . dval ) ;
node - > literalToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1674 "qmljs.g"
case 142 : Q_FALLTHROUGH ( ) ;
# line 1677 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 143 : {
2018-10-16 15:32:58 +02:00
AST : : StringLiteral * node = new ( pool ) AST : : StringLiteral ( stringRef ( 1 ) ) ;
node - > literalToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1689 "qmljs.g"
2018-10-16 15:32:58 +02:00
{
Lexer : : RegExpBodyPrefix prefix ;
2019-10-04 16:11:02 +02:00
case 144 :
2018-10-16 15:32:58 +02:00
prefix = Lexer : : NoPrefix ;
goto scan_regexp ;
2019-10-04 16:11:02 +02:00
# line 1701 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 145 :
2018-10-16 15:32:58 +02:00
prefix = Lexer : : EqualPrefix ;
goto scan_regexp ;
scan_regexp : {
bool rx = lexer - > scanRegExp ( prefix ) ;
if ( ! rx ) {
2019-10-04 16:11:02 +02:00
diagnostic_messages . append ( compileError ( location ( lexer ) , lexer - > errorMessage ( ) ) ) ;
2018-10-16 15:32:58 +02:00
return false ;
}
loc ( 1 ) . length = lexer - > tokenLength ( ) ;
yylloc = loc ( 1 ) ; // adjust the location of the current token
AST : : RegExpLiteral * node = new ( pool ) AST : : RegExpLiteral ( driver - > newStringRef ( lexer - > regExpPattern ( ) ) , lexer - > regExpFlags ( ) ) ;
node - > literalToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2017-12-20 10:47:33 +01:00
}
2019-10-04 16:11:02 +02:00
# line 1725 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 146 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElementList * list = nullptr ;
if ( sym ( 2 ) . Elision )
list = ( new ( pool ) AST : : PatternElementList ( sym ( 2 ) . Elision , nullptr ) ) - > finish ( ) ;
AST : : ArrayPattern * node = new ( pool ) AST : : ArrayPattern ( list ) ;
node - > lbracketToken = loc ( 1 ) ;
node - > rbracketToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1738 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 147 : {
2018-10-16 15:32:58 +02:00
AST : : ArrayPattern * node = new ( pool ) AST : : ArrayPattern ( sym ( 2 ) . PatternElementList - > finish ( ) ) ;
node - > lbracketToken = loc ( 1 ) ;
node - > rbracketToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1748 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 148 : {
2018-10-16 15:32:58 +02:00
auto * list = sym ( 2 ) . PatternElementList ;
if ( sym ( 4 ) . Elision ) {
AST : : PatternElementList * l = new ( pool ) AST : : PatternElementList ( sym ( 4 ) . Elision , nullptr ) ;
list = list - > append ( l ) ;
}
AST : : ArrayPattern * node = new ( pool ) AST : : ArrayPattern ( list - > finish ( ) ) ;
node - > lbracketToken = loc ( 1 ) ;
node - > commaToken = loc ( 3 ) ;
node - > rbracketToken = loc ( 5 ) ;
sym ( 1 ) . Node = node ;
Q_ASSERT ( node - > isValidArrayLiteral ( ) ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1765 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 149 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * e = new ( pool ) AST : : PatternElement ( sym ( 1 ) . Expression ) ;
sym ( 1 ) . Node = new ( pool ) AST : : PatternElementList ( nullptr , e ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1773 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 150 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * e = new ( pool ) AST : : PatternElement ( sym ( 2 ) . Expression ) ;
sym ( 1 ) . Node = new ( pool ) AST : : PatternElementList ( sym ( 1 ) . Elision - > finish ( ) , e ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1781 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 151 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElementList * node = new ( pool ) AST : : PatternElementList ( sym ( 1 ) . Elision , sym ( 2 ) . PatternElement ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-03-29 17:20:38 +02:00
2019-10-04 16:11:02 +02:00
# line 1789 "qmljs.g"
2010-03-29 17:20:38 +02:00
2019-10-04 16:11:02 +02:00
case 152 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * e = new ( pool ) AST : : PatternElement ( sym ( 4 ) . Expression ) ;
AST : : PatternElementList * node = new ( pool ) AST : : PatternElementList ( sym ( 3 ) . Elision , e ) ;
sym ( 1 ) . Node = sym ( 1 ) . PatternElementList - > append ( node ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 1798 "qmljs.g"
2010-03-29 17:20:38 +02:00
2019-10-04 16:11:02 +02:00
case 153 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElementList * node = new ( pool ) AST : : PatternElementList ( sym ( 3 ) . Elision , sym ( 4 ) . PatternElement ) ;
sym ( 1 ) . Node = sym ( 1 ) . PatternElementList - > append ( node ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1806 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 154 : {
2018-10-16 15:32:58 +02:00
AST : : Elision * node = new ( pool ) AST : : Elision ( ) ;
node - > commaToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1815 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 155 : {
2018-10-16 15:32:58 +02:00
AST : : Elision * node = new ( pool ) AST : : Elision ( sym ( 1 ) . Elision ) ;
node - > commaToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1824 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 156 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1831 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 157 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . Elision - > finish ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1838 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 158 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( sym ( 2 ) . Expression , AST : : PatternElement : : SpreadElement ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1846 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 159 : {
2018-10-16 15:32:58 +02:00
AST : : ObjectPattern * node = new ( pool ) AST : : ObjectPattern ( ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1856 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 160 : {
2018-10-16 15:32:58 +02:00
AST : : ObjectPattern * node = new ( pool ) AST : : ObjectPattern ( sym ( 2 ) . PatternPropertyList - > finish ( ) ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1866 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 161 : {
2018-10-16 15:32:58 +02:00
AST : : ObjectPattern * node = new ( pool ) AST : : ObjectPattern ( sym ( 2 ) . PatternPropertyList - > finish ( ) ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1877 "qmljs.g"
case 162 : Q_FALLTHROUGH ( ) ;
# line 1879 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 163 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : PatternPropertyList ( sym ( 1 ) . PatternProperty ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1886 "qmljs.g"
case 164 : Q_FALLTHROUGH ( ) ;
# line 1888 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 165 : {
2018-10-16 15:32:58 +02:00
AST : : PatternPropertyList * node = new ( pool ) AST : : PatternPropertyList ( sym ( 1 ) . PatternPropertyList , sym ( 3 ) . PatternProperty ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1896 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 166 : {
2018-10-16 15:32:58 +02:00
AST : : IdentifierPropertyName * name = new ( pool ) AST : : IdentifierPropertyName ( stringRef ( 1 ) ) ;
name - > propertyNameToken = loc ( 1 ) ;
AST : : IdentifierExpression * expr = new ( pool ) AST : : IdentifierExpression ( stringRef ( 1 ) ) ;
expr - > identifierToken = loc ( 1 ) ;
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( name , expr ) ;
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1912 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 168 : {
2018-10-16 15:32:58 +02:00
AST : : IdentifierPropertyName * name = new ( pool ) AST : : IdentifierPropertyName ( stringRef ( 1 ) ) ;
name - > propertyNameToken = loc ( 1 ) ;
AST : : IdentifierExpression * left = new ( pool ) AST : : IdentifierExpression ( stringRef ( 1 ) ) ;
left - > identifierToken = loc ( 1 ) ;
// if initializer is an anonymous function expression, we need to assign identifierref as it's name
if ( auto * f = asAnonymousFunctionDefinition ( sym ( 2 ) . Expression ) )
f - > name = stringRef ( 1 ) ;
if ( auto * c = asAnonymousClassDefinition ( sym ( 2 ) . Expression ) )
c - > name = stringRef ( 1 ) ;
AST : : BinaryExpression * assignment = new ( pool ) AST : : BinaryExpression ( left , QSOperator : : Assign , sym ( 2 ) . Expression ) ;
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( name , assignment ) ;
node - > colonToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1932 "qmljs.g"
case 169 : Q_FALLTHROUGH ( ) ;
# line 1934 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 170 : {
2018-10-16 15:32:58 +02:00
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 1 ) . PropertyName , sym ( 3 ) . Expression ) ;
if ( auto * c = asAnonymousClassDefinition ( sym ( 3 ) . Expression ) ) {
if ( ! AST : : cast < AST : : ComputedPropertyName * > ( sym ( 1 ) . PropertyName ) )
c - > name = driver - > newStringRef ( sym ( 1 ) . PropertyName - > asString ( ) ) ;
}
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1952 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 174 : {
2018-10-16 15:32:58 +02:00
AST : : IdentifierPropertyName * node = new ( pool ) AST : : IdentifierPropertyName ( stringRef ( 1 ) ) ;
node - > propertyNameToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1961 "qmljs.g"
case 175 : Q_FALLTHROUGH ( ) ;
# line 1963 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 176 : {
2018-10-16 15:32:58 +02:00
AST : : StringLiteralPropertyName * node = new ( pool ) AST : : StringLiteralPropertyName ( stringRef ( 1 ) ) ;
node - > propertyNameToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 1972 "qmljs.g"
case 177 : Q_FALLTHROUGH ( ) ;
# line 1974 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 178 : {
2018-10-16 15:32:58 +02:00
AST : : NumericLiteralPropertyName * node = new ( pool ) AST : : NumericLiteralPropertyName ( sym ( 1 ) . dval ) ;
node - > propertyNameToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2025 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 219 : {
2018-10-16 15:32:58 +02:00
AST : : ComputedPropertyName * node = new ( pool ) AST : : ComputedPropertyName ( sym ( 2 ) . Expression ) ;
node - > propertyNameToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2034 "qmljs.g"
case 220 : Q_FALLTHROUGH ( ) ;
# line 2036 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 221 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) = sym ( 2 ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2044 "qmljs.g"
case 222 : Q_FALLTHROUGH ( ) ;
# line 2046 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 223 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2056 "qmljs.g"
case 226 : Q_FALLTHROUGH ( ) ;
# line 2059 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 227 : {
AST : : TemplateLiteral * node = new ( pool ) AST : : TemplateLiteral ( stringRef ( 1 ) , rawStringRef ( 1 ) , nullptr ) ;
2018-10-16 15:32:58 +02:00
node - > literalToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2068 "qmljs.g"
case 228 : Q_FALLTHROUGH ( ) ;
# line 2071 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 229 : {
AST : : TemplateLiteral * node = new ( pool ) AST : : TemplateLiteral ( stringRef ( 1 ) , rawStringRef ( 1 ) , sym ( 2 ) . Expression ) ;
2018-10-16 15:32:58 +02:00
node - > next = sym ( 3 ) . Template ;
node - > literalToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2084 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 231 : {
2018-10-16 15:32:58 +02:00
AST : : SuperLiteral * node = new ( pool ) AST : : SuperLiteral ( ) ;
node - > superToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2094 "qmljs.g"
case 232 : Q_FALLTHROUGH ( ) ;
# line 2096 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 233 : {
2018-10-16 15:32:58 +02:00
AST : : ArrayMemberExpression * node = new ( pool ) AST : : ArrayMemberExpression ( sym ( 1 ) . Expression , sym ( 3 ) . Expression ) ;
node - > lbracketToken = loc ( 2 ) ;
node - > rbracketToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2108 "qmljs.g"
case 234 :
2018-10-16 15:32:58 +02:00
{
AST : : IdentifierExpression * node = new ( pool ) AST : : IdentifierExpression ( stringRef ( 1 ) ) ;
node - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} Q_FALLTHROUGH ( ) ;
2019-10-04 16:11:02 +02:00
# line 2116 "qmljs.g"
case 235 : Q_FALLTHROUGH ( ) ;
# line 2118 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 236 : {
2018-10-16 15:32:58 +02:00
AST : : FieldMemberExpression * node = new ( pool ) AST : : FieldMemberExpression ( sym ( 1 ) . Expression , stringRef ( 3 ) ) ;
node - > dotToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2130 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 238 : {
2018-10-16 15:32:58 +02:00
AST : : NewMemberExpression * node = new ( pool ) AST : : NewMemberExpression ( sym ( 2 ) . Expression , sym ( 4 ) . ArgumentList ) ;
node - > newToken = loc ( 1 ) ;
node - > lparenToken = loc ( 3 ) ;
node - > rparenToken = loc ( 5 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2146 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 241 : {
2018-10-16 15:32:58 +02:00
AST : : NewExpression * node = new ( pool ) AST : : NewExpression ( sym ( 2 ) . Expression ) ;
node - > newToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2156 "qmljs.g"
case 242 : Q_FALLTHROUGH ( ) ;
# line 2158 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 243 : {
2018-10-16 15:32:58 +02:00
AST : : TaggedTemplate * node = new ( pool ) AST : : TaggedTemplate ( sym ( 1 ) . Expression , sym ( 2 ) . Template ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2166 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 244 : {
2018-10-16 15:32:58 +02:00
AST : : CallExpression * node = new ( pool ) AST : : CallExpression ( sym ( 1 ) . Expression , sym ( 3 ) . ArgumentList ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2176 "qmljs.g"
case 245 : Q_FALLTHROUGH ( ) ;
# line 2178 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 246 : {
2018-10-16 15:32:58 +02:00
AST : : CallExpression * node = new ( pool ) AST : : CallExpression ( sym ( 1 ) . Expression , sym ( 3 ) . ArgumentList ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2188 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 247 : {
2018-10-16 15:32:58 +02:00
AST : : ArrayMemberExpression * node = new ( pool ) AST : : ArrayMemberExpression ( sym ( 1 ) . Expression , sym ( 3 ) . Expression ) ;
node - > lbracketToken = loc ( 2 ) ;
node - > rbracketToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2198 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 248 : {
2018-10-16 15:32:58 +02:00
AST : : FieldMemberExpression * node = new ( pool ) AST : : FieldMemberExpression ( sym ( 1 ) . Expression , stringRef ( 3 ) ) ;
node - > dotToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2208 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 249 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2215 "qmljs.g"
case 250 : Q_FALLTHROUGH ( ) ;
# line 2217 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 251 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . ArgumentList - > finish ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2224 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 252 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : ArgumentList ( sym ( 1 ) . Expression ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2231 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 253 : {
2018-10-16 15:32:58 +02:00
AST : : ArgumentList * node = new ( pool ) AST : : ArgumentList ( sym ( 2 ) . Expression ) ;
node - > isSpreadElement = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2240 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 254 : {
2018-10-16 15:32:58 +02:00
AST : : ArgumentList * node = new ( pool ) AST : : ArgumentList ( sym ( 1 ) . ArgumentList , sym ( 3 ) . Expression ) ;
node - > commaToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2249 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 255 : {
2018-10-16 15:32:58 +02:00
AST : : ArgumentList * node = new ( pool ) AST : : ArgumentList ( sym ( 1 ) . ArgumentList , sym ( 4 ) . Expression ) ;
node - > commaToken = loc ( 2 ) ;
node - > isSpreadElement = true ;
sym ( 1 ) . Node = node ;
} break ;
2010-03-29 17:20:38 +02:00
2019-10-04 16:11:02 +02:00
# line 2264 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 259 : {
2018-10-16 15:32:58 +02:00
AST : : PostIncrementExpression * node = new ( pool ) AST : : PostIncrementExpression ( sym ( 1 ) . Expression ) ;
node - > incrementToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2273 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 260 : {
2018-10-16 15:32:58 +02:00
AST : : PostDecrementExpression * node = new ( pool ) AST : : PostDecrementExpression ( sym ( 1 ) . Expression ) ;
node - > decrementToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2282 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 261 : {
2018-10-16 15:32:58 +02:00
AST : : PreIncrementExpression * node = new ( pool ) AST : : PreIncrementExpression ( sym ( 2 ) . Expression ) ;
node - > incrementToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2291 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 262 : {
2018-10-16 15:32:58 +02:00
AST : : PreDecrementExpression * node = new ( pool ) AST : : PreDecrementExpression ( sym ( 2 ) . Expression ) ;
node - > decrementToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2302 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 264 : {
2018-10-16 15:32:58 +02:00
AST : : DeleteExpression * node = new ( pool ) AST : : DeleteExpression ( sym ( 2 ) . Expression ) ;
node - > deleteToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2311 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 265 : {
2018-10-16 15:32:58 +02:00
AST : : VoidExpression * node = new ( pool ) AST : : VoidExpression ( sym ( 2 ) . Expression ) ;
node - > voidToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2320 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 266 : {
2018-10-16 15:32:58 +02:00
AST : : TypeOfExpression * node = new ( pool ) AST : : TypeOfExpression ( sym ( 2 ) . Expression ) ;
node - > typeofToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2329 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 267 : {
2018-10-16 15:32:58 +02:00
AST : : UnaryPlusExpression * node = new ( pool ) AST : : UnaryPlusExpression ( sym ( 2 ) . Expression ) ;
node - > plusToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2338 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 268 : {
2018-10-16 15:32:58 +02:00
AST : : UnaryMinusExpression * node = new ( pool ) AST : : UnaryMinusExpression ( sym ( 2 ) . Expression ) ;
node - > minusToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2347 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 269 : {
2018-10-16 15:32:58 +02:00
AST : : TildeExpression * node = new ( pool ) AST : : TildeExpression ( sym ( 2 ) . Expression ) ;
node - > tildeToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2356 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 270 : {
2018-10-16 15:32:58 +02:00
AST : : NotExpression * node = new ( pool ) AST : : NotExpression ( sym ( 2 ) . Expression ) ;
node - > notToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2367 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 272 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : Exp , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 2378 "qmljs.g"
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
case 274 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , sym ( 2 ) . ival , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
# line 2387 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 275 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Mul ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2394 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 276 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Div ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2401 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 277 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Mod ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2410 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 279 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : Add , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2419 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 280 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : Sub , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2430 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 282 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : LShift , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2439 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 283 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : RShift , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2448 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 284 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : URShift , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2460 "qmljs.g"
case 287 : Q_FALLTHROUGH ( ) ;
# line 2462 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 288 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , sym ( 2 ) . ival , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2471 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 289 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Lt ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2477 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 290 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Gt ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2483 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 291 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Le ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2489 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 292 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Ge ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2495 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 293 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InstanceOf ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2502 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 294 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : In , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2514 "qmljs.g"
case 297 : Q_FALLTHROUGH ( ) ;
# line 2516 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 298 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , sym ( 2 ) . ival , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2525 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 299 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Equal ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2531 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 300 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : NotEqual ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2537 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 301 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : StrictEqual ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2543 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 302 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : StrictNotEqual ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2554 "qmljs.g"
case 305 : Q_FALLTHROUGH ( ) ;
# line 2556 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 306 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : BitAnd , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2569 "qmljs.g"
case 309 : Q_FALLTHROUGH ( ) ;
# line 2571 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 310 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : BitXor , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2583 "qmljs.g"
case 313 : Q_FALLTHROUGH ( ) ;
# line 2585 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 314 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : BitOr , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2597 "qmljs.g"
case 317 : Q_FALLTHROUGH ( ) ;
# line 2599 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 318 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : And , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2611 "qmljs.g"
case 321 : Q_FALLTHROUGH ( ) ;
# line 2613 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 322 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : Or , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2626 "qmljs.g"
case 325 : Q_FALLTHROUGH ( ) ;
# line 2628 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 326 : {
2018-10-16 15:32:58 +02:00
AST : : ConditionalExpression * node = new ( pool ) AST : : ConditionalExpression ( sym ( 1 ) . Expression , sym ( 3 ) . Expression , sym ( 5 ) . Expression ) ;
node - > questionToken = loc ( 2 ) ;
node - > colonToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2647 "qmljs.g"
case 333 : Q_FALLTHROUGH ( ) ;
# line 2649 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 334 : {
2018-10-16 15:32:58 +02:00
// need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral
if ( AST : : Pattern * p = sym ( 1 ) . Expression - > patternCast ( ) ) {
AST : : SourceLocation errorLoc ;
QString errorMsg ;
if ( ! p - > convertLiteralToAssignmentPattern ( pool , & errorLoc , & errorMsg ) ) {
syntaxError ( errorLoc , errorMsg ) ;
return false ;
}
}
// if lhs is an identifier expression and rhs is an anonymous function expression, we need to assign the name of lhs to the function
if ( auto * f = asAnonymousFunctionDefinition ( sym ( 3 ) . Expression ) ) {
if ( auto * id = AST : : cast < AST : : IdentifierExpression * > ( sym ( 1 ) . Expression ) )
f - > name = id - > name ;
}
if ( auto * c = asAnonymousClassDefinition ( sym ( 3 ) . Expression ) ) {
if ( auto * id = AST : : cast < AST : : IdentifierExpression * > ( sym ( 1 ) . Expression ) )
c - > name = id - > name ;
}
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : Assign , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2677 "qmljs.g"
case 335 : Q_FALLTHROUGH ( ) ;
# line 2679 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 336 : {
2018-10-16 15:32:58 +02:00
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , sym ( 2 ) . ival , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2688 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 337 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceMul ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2695 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 338 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceExp ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2702 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 339 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceDiv ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2709 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 340 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceMod ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2716 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 341 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceAdd ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2723 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 342 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceSub ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2730 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 343 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceLeftShift ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2737 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 344 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceRightShift ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2744 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 345 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceURightShift ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2751 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 346 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceAnd ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2758 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 347 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceXor ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2765 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 348 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceOr ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2775 "qmljs.g"
case 351 : Q_FALLTHROUGH ( ) ;
# line 2777 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 352 : {
2018-10-16 15:32:58 +02:00
AST : : Expression * node = new ( pool ) AST : : Expression ( sym ( 1 ) . Expression , sym ( 3 ) . Expression ) ;
node - > commaToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2786 "qmljs.g"
case 353 : Q_FALLTHROUGH ( ) ;
# line 2788 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 354 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-03-03 11:38:33 +01:00
2019-10-04 16:11:02 +02:00
# line 2800 "qmljs.g"
2010-03-31 15:40:28 +02:00
2019-10-04 16:11:02 +02:00
case 357 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 3 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 2807 "qmljs.g"
case 358 : Q_FALLTHROUGH ( ) ;
# line 2809 "qmljs.g"
case 359 : Q_FALLTHROUGH ( ) ;
# line 2811 "qmljs.g"
case 360 : Q_FALLTHROUGH ( ) ;
# line 2813 "qmljs.g"
case 361 : Q_FALLTHROUGH ( ) ;
# line 2815 "qmljs.g"
case 362 : Q_FALLTHROUGH ( ) ;
# line 2817 "qmljs.g"
case 363 : Q_FALLTHROUGH ( ) ;
# line 2819 "qmljs.g"
case 364 : Q_FALLTHROUGH ( ) ;
# line 2821 "qmljs.g"
case 365 : Q_FALLTHROUGH ( ) ;
# line 2823 "qmljs.g"
case 366 : Q_FALLTHROUGH ( ) ;
# line 2825 "qmljs.g"
case 367 : Q_FALLTHROUGH ( ) ;
# line 2827 "qmljs.g"
case 368 : Q_FALLTHROUGH ( ) ;
# line 2829 "qmljs.g"
case 369 : Q_FALLTHROUGH ( ) ;
# line 2831 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 370 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2853 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 381 : {
2018-10-16 15:32:58 +02:00
AST : : Block * node = new ( pool ) AST : : Block ( sym ( 2 ) . StatementList ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2865 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 383 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = sym ( 1 ) . StatementList - > append ( sym ( 2 ) . StatementList ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2872 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 384 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = new ( pool ) AST : : StatementList ( sym ( 1 ) . Statement ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2879 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 385 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : StatementList ( sym ( 3 ) . FunctionDeclaration ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2886 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 386 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2893 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 387 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . StatementList - > finish ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2900 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 388 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . scope = AST : : VariableScope : : Let ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2906 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 389 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . scope = AST : : VariableScope : : Const ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2913 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 390 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . scope = AST : : VariableScope : : Var ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2920 "qmljs.g"
case 391 : Q_FALLTHROUGH ( ) ;
# line 2922 "qmljs.g"
case 392 : Q_FALLTHROUGH ( ) ;
# line 2924 "qmljs.g"
case 393 : Q_FALLTHROUGH ( ) ;
# line 2926 "qmljs.g"
case 394 : {
AST : : VariableDeclarationList * declarations = sym ( 2 ) . VariableDeclarationList - > finish ( sym ( 1 ) . scope ) ;
for ( auto it = declarations ; it ; it = it - > next ) {
if ( it - > declaration & & it - > declaration - > typeAnnotation ) {
syntaxError ( it - > declaration - > typeAnnotation - > firstSourceLocation ( ) , " Type annotations are not permitted in variable declarations " ) ;
return false ;
}
}
AST : : VariableStatement * node = new ( pool ) AST : : VariableStatement ( declarations ) ;
2018-10-16 15:32:58 +02:00
node - > declarationKindToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2944 "qmljs.g"
case 396 : Q_FALLTHROUGH ( ) ;
# line 2946 "qmljs.g"
case 397 : Q_FALLTHROUGH ( ) ;
# line 2948 "qmljs.g"
case 398 : Q_FALLTHROUGH ( ) ;
# line 2950 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 399 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : VariableDeclarationList ( sym ( 1 ) . PatternElement ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2957 "qmljs.g"
case 400 : Q_FALLTHROUGH ( ) ;
# line 2959 "qmljs.g"
case 401 : Q_FALLTHROUGH ( ) ;
# line 2961 "qmljs.g"
case 402 : Q_FALLTHROUGH ( ) ;
# line 2963 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 403 : {
2018-10-16 15:32:58 +02:00
AST : : VariableDeclarationList * node = new ( pool ) AST : : VariableDeclarationList ( sym ( 1 ) . VariableDeclarationList , sym ( 3 ) . PatternElement ) ;
node - > commaToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2972 "qmljs.g"
case 404 : Q_FALLTHROUGH ( ) ;
# line 2974 "qmljs.g"
case 405 : Q_FALLTHROUGH ( ) ;
# line 2976 "qmljs.g"
case 406 : Q_FALLTHROUGH ( ) ;
# line 2978 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 407 : {
auto * node = new ( pool ) AST : : PatternElement ( stringRef ( 1 ) , sym ( 2 ) . TypeAnnotation , sym ( 3 ) . Expression ) ;
2018-10-16 15:32:58 +02:00
node - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
// if initializer is an anonymous function expression, we need to assign identifierref as it's name
2019-10-04 16:11:02 +02:00
if ( auto * f = asAnonymousFunctionDefinition ( sym ( 3 ) . Expression ) )
2018-10-16 15:32:58 +02:00
f - > name = stringRef ( 1 ) ;
2019-10-04 16:11:02 +02:00
if ( auto * c = asAnonymousClassDefinition ( sym ( 3 ) . Expression ) )
2018-10-16 15:32:58 +02:00
c - > name = stringRef ( 1 ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 2992 "qmljs.g"
case 408 : Q_FALLTHROUGH ( ) ;
# line 2994 "qmljs.g"
case 409 : Q_FALLTHROUGH ( ) ;
# line 2996 "qmljs.g"
case 410 : Q_FALLTHROUGH ( ) ;
# line 2998 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 411 : {
2018-10-16 15:32:58 +02:00
auto * node = new ( pool ) AST : : PatternElement ( sym ( 1 ) . Pattern , sym ( 2 ) . Expression ) ;
node - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3007 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 412 : {
2018-10-16 15:32:58 +02:00
auto * node = new ( pool ) AST : : ObjectPattern ( sym ( 2 ) . PatternPropertyList ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 3 ) ;
node - > parseMode = AST : : Pattern : : Binding ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3018 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 413 : {
2018-10-16 15:32:58 +02:00
auto * node = new ( pool ) AST : : ArrayPattern ( sym ( 2 ) . PatternElementList ) ;
node - > lbracketToken = loc ( 1 ) ;
node - > rbracketToken = loc ( 3 ) ;
node - > parseMode = AST : : Pattern : : Binding ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3029 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 414 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3036 "qmljs.g"
case 415 :
# line 3038 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 416 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . PatternPropertyList - > finish ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3045 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 417 : {
2018-10-16 15:32:58 +02:00
if ( sym ( 1 ) . Elision | | sym ( 2 ) . Node ) {
auto * l = new ( pool ) AST : : PatternElementList ( sym ( 1 ) . Elision , sym ( 2 ) . PatternElement ) ;
sym ( 1 ) . Node = l - > finish ( ) ;
} else {
sym ( 1 ) . Node = nullptr ;
}
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3057 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 418 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . PatternElementList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3064 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 419 : {
2018-10-16 15:32:58 +02:00
if ( sym ( 3 ) . Elision | | sym ( 4 ) . Node ) {
auto * l = new ( pool ) AST : : PatternElementList ( sym ( 3 ) . Elision , sym ( 4 ) . PatternElement ) ;
l = sym ( 1 ) . PatternElementList - > append ( l ) ;
sym ( 1 ) . Node = l ;
}
sym ( 1 ) . Node = sym ( 1 ) . PatternElementList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3076 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 420 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : PatternPropertyList ( sym ( 1 ) . PatternProperty ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3083 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 421 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : PatternPropertyList ( sym ( 1 ) . PatternPropertyList , sym ( 3 ) . PatternProperty ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3092 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 423 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . PatternElementList = sym ( 1 ) . PatternElementList - > append ( sym ( 3 ) . PatternElementList ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3099 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 424 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : PatternElementList ( sym ( 1 ) . Elision , sym ( 2 ) . PatternElement ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3107 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 425 : {
2018-10-16 15:32:58 +02:00
AST : : StringLiteralPropertyName * name = new ( pool ) AST : : StringLiteralPropertyName ( stringRef ( 1 ) ) ;
name - > propertyNameToken = loc ( 1 ) ;
// if initializer is an anonymous function expression, we need to assign identifierref as it's name
if ( auto * f = asAnonymousFunctionDefinition ( sym ( 2 ) . Expression ) )
f - > name = stringRef ( 1 ) ;
if ( auto * c = asAnonymousClassDefinition ( sym ( 2 ) . Expression ) )
c - > name = stringRef ( 1 ) ;
sym ( 1 ) . Node = new ( pool ) AST : : PatternProperty ( name , stringRef ( 1 ) , sym ( 2 ) . Expression ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3121 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 426 : {
2018-10-16 15:32:58 +02:00
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 1 ) . PropertyName , stringRef ( 3 ) , sym ( 4 ) . Expression ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3129 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 427 : {
2018-10-16 15:32:58 +02:00
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 1 ) . PropertyName , sym ( 3 ) . Pattern , sym ( 4 ) . Expression ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3137 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 428 : {
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( stringRef ( 1 ) , sym ( 2 ) . TypeAnnotation , sym ( 3 ) . Expression ) ;
2018-10-16 15:32:58 +02:00
node - > identifierToken = loc ( 1 ) ;
// if initializer is an anonymous function expression, we need to assign identifierref as it's name
2019-10-04 16:11:02 +02:00
if ( auto * f = asAnonymousFunctionDefinition ( sym ( 3 ) . Expression ) )
2018-10-16 15:32:58 +02:00
f - > name = stringRef ( 1 ) ;
2019-10-04 16:11:02 +02:00
if ( auto * c = asAnonymousClassDefinition ( sym ( 3 ) . Expression ) )
2018-10-16 15:32:58 +02:00
c - > name = stringRef ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3151 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 429 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( sym ( 1 ) . Pattern , sym ( 2 ) . Expression ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3159 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 430 : {
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( stringRef ( 2 ) , /*type annotation*/ nullptr , nullptr , AST : : PatternElement : : RestElement ) ;
2018-10-16 15:32:58 +02:00
node - > identifierToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3168 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 431 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( sym ( 2 ) . Pattern , nullptr , AST : : PatternElement : : RestElement ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3176 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 432 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3186 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 434 : {
2018-10-16 15:32:58 +02:00
AST : : EmptyStatement * node = new ( pool ) AST : : EmptyStatement ( ) ;
node - > semicolonToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3201 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 435 : {
2018-10-16 15:32:58 +02:00
int token = lookaheadToken ( lexer ) ;
if ( token = = T_LBRACE )
pushToken ( T_FORCE_BLOCK ) ;
2019-10-04 16:11:02 +02:00
else if ( token = = T_FUNCTION | | token = = T_FUNCTION_STAR | | token = = T_CLASS | | token = = T_LET | | token = = T_CONST )
2018-10-16 15:32:58 +02:00
pushToken ( T_FORCE_DECLARATION ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3212 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 436 : {
2018-10-16 15:32:58 +02:00
AST : : ExpressionStatement * node = new ( pool ) AST : : ExpressionStatement ( sym ( 1 ) . Expression ) ;
node - > semicolonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3221 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 437 : {
2018-10-16 15:32:58 +02:00
AST : : IfStatement * node = new ( pool ) AST : : IfStatement ( sym ( 3 ) . Expression , sym ( 5 ) . Statement , sym ( 7 ) . Statement ) ;
node - > ifToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
node - > elseToken = loc ( 6 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3233 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 438 : {
2018-10-16 15:32:58 +02:00
AST : : IfStatement * node = new ( pool ) AST : : IfStatement ( sym ( 3 ) . Expression , sym ( 5 ) . Statement ) ;
node - > ifToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3246 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 440 : {
2018-10-16 15:32:58 +02:00
AST : : DoWhileStatement * node = new ( pool ) AST : : DoWhileStatement ( sym ( 2 ) . Statement , sym ( 5 ) . Expression ) ;
node - > doToken = loc ( 1 ) ;
node - > whileToken = loc ( 3 ) ;
node - > lparenToken = loc ( 4 ) ;
node - > rparenToken = loc ( 6 ) ;
node - > semicolonToken = loc ( 7 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3259 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 441 : {
2018-10-16 15:32:58 +02:00
AST : : WhileStatement * node = new ( pool ) AST : : WhileStatement ( sym ( 3 ) . Expression , sym ( 5 ) . Statement ) ;
node - > whileToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3270 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 442 : {
2018-10-16 15:32:58 +02:00
AST : : ForStatement * node = new ( pool ) AST : : ForStatement ( sym ( 3 ) . Expression , sym ( 5 ) . Expression , sym ( 7 ) . Expression , sym ( 9 ) . Statement ) ;
node - > forToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > firstSemicolonToken = loc ( 4 ) ;
node - > secondSemicolonToken = loc ( 6 ) ;
node - > rparenToken = loc ( 8 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3283 "qmljs.g"
case 443 : Q_FALLTHROUGH ( ) ;
# line 3285 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 444 : {
2018-10-16 15:32:58 +02:00
// ### get rid of the static_cast!
AST : : ForStatement * node = new ( pool ) AST : : ForStatement (
static_cast < AST : : VariableStatement * > ( sym ( 3 ) . Node ) - > declarations , sym ( 5 ) . Expression ,
sym ( 7 ) . Expression , sym ( 9 ) . Statement ) ;
node - > forToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > firstSemicolonToken = loc ( 4 ) ;
node - > secondSemicolonToken = loc ( 6 ) ;
node - > rparenToken = loc ( 8 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3301 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 445 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . forEachType = AST : : ForEachType : : In ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3308 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 446 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . forEachType = AST : : ForEachType : : Of ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3315 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 447 : {
2018-10-16 15:32:58 +02:00
// need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral
if ( AST : : Pattern * p = sym ( 3 ) . Expression - > patternCast ( ) ) {
AST : : SourceLocation errorLoc ;
QString errorMsg ;
if ( ! p - > convertLiteralToAssignmentPattern ( pool , & errorLoc , & errorMsg ) ) {
syntaxError ( errorLoc , errorMsg ) ;
return false ;
}
}
AST : : ForEachStatement * node = new ( pool ) AST : : ForEachStatement ( sym ( 3 ) . Expression , sym ( 5 ) . Expression , sym ( 7 ) . Statement ) ;
node - > forToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > inOfToken = loc ( 4 ) ;
node - > rparenToken = loc ( 6 ) ;
node - > type = sym ( 4 ) . forEachType ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3337 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 448 : {
2018-10-16 15:32:58 +02:00
AST : : ForEachStatement * node = new ( pool ) AST : : ForEachStatement ( sym ( 3 ) . PatternElement , sym ( 5 ) . Expression , sym ( 7 ) . Statement ) ;
node - > forToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > inOfToken = loc ( 4 ) ;
node - > rparenToken = loc ( 6 ) ;
node - > type = sym ( 4 ) . forEachType ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3350 "qmljs.g"
case 449 : Q_FALLTHROUGH ( ) ;
# line 3352 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 450 : {
if ( auto typeAnnotation = sym ( 3 ) . TypeAnnotation ) {
syntaxError ( typeAnnotation - > firstSourceLocation ( ) , " Type annotations are not permitted in variable declarations " ) ;
return false ;
}
auto * node = new ( pool ) AST : : PatternElement ( stringRef ( 2 ) , sym ( 3 ) . TypeAnnotation , nullptr ) ;
2018-10-16 15:32:58 +02:00
node - > identifierToken = loc ( 2 ) ;
node - > scope = sym ( 1 ) . scope ;
node - > isForDeclaration = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3367 "qmljs.g"
case 451 : Q_FALLTHROUGH ( ) ;
# line 3369 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 452 : {
2018-10-16 15:32:58 +02:00
auto * node = new ( pool ) AST : : PatternElement ( sym ( 2 ) . Pattern , nullptr ) ;
node - > scope = sym ( 1 ) . scope ;
node - > isForDeclaration = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3379 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 453 : {
2018-10-16 15:32:58 +02:00
AST : : ContinueStatement * node = new ( pool ) AST : : ContinueStatement ( ) ;
node - > continueToken = loc ( 1 ) ;
node - > semicolonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3389 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 454 : {
2018-10-16 15:32:58 +02:00
AST : : ContinueStatement * node = new ( pool ) AST : : ContinueStatement ( stringRef ( 2 ) ) ;
node - > continueToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3400 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 455 : {
2018-10-16 15:32:58 +02:00
AST : : BreakStatement * node = new ( pool ) AST : : BreakStatement ( QStringRef ( ) ) ;
node - > breakToken = loc ( 1 ) ;
node - > semicolonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3410 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 456 : {
2018-10-16 15:32:58 +02:00
AST : : BreakStatement * node = new ( pool ) AST : : BreakStatement ( stringRef ( 2 ) ) ;
node - > breakToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3421 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 457 : {
2018-10-16 15:32:58 +02:00
if ( ! functionNestingLevel ) {
syntaxError ( loc ( 1 ) , " Return statement not allowed outside of Function declaration. " ) ;
return false ;
}
AST : : ReturnStatement * node = new ( pool ) AST : : ReturnStatement ( sym ( 2 ) . Expression ) ;
node - > returnToken = loc ( 1 ) ;
node - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3435 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 458 : {
2018-10-16 15:32:58 +02:00
AST : : WithStatement * node = new ( pool ) AST : : WithStatement ( sym ( 3 ) . Expression , sym ( 5 ) . Statement ) ;
node - > withToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3446 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 459 : {
2018-10-16 15:32:58 +02:00
AST : : SwitchStatement * node = new ( pool ) AST : : SwitchStatement ( sym ( 3 ) . Expression , sym ( 5 ) . CaseBlock ) ;
node - > switchToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3457 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 460 : {
2018-10-16 15:32:58 +02:00
AST : : CaseBlock * node = new ( pool ) AST : : CaseBlock ( sym ( 2 ) . CaseClauses ) ;
node - > lbraceToken = loc ( 1 ) ;
node - > rbraceToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 3467 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 461 : {
2018-10-16 15:32:58 +02:00
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 ;
2019-10-04 16:11:02 +02:00
# line 3477 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 462 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : CaseClauses ( sym ( 1 ) . CaseClause ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3484 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 463 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : CaseClauses ( sym ( 1 ) . CaseClauses , sym ( 2 ) . CaseClause ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3491 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 464 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3498 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 465 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . CaseClauses - > finish ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3505 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 466 : {
2018-10-16 15:32:58 +02:00
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 ;
2019-10-04 16:11:02 +02:00
# line 3515 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 467 : {
2018-10-16 15:32:58 +02:00
AST : : DefaultClause * node = new ( pool ) AST : : DefaultClause ( sym ( 3 ) . StatementList ) ;
node - > defaultToken = loc ( 1 ) ;
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3525 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 468 : {
2018-10-16 15:32:58 +02:00
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 ;
2019-10-04 16:11:02 +02:00
# line 3537 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 470 : {
2018-10-16 15:32:58 +02:00
syntaxError ( loc ( 3 ) , " FunctionDeclarations are not allowed after a label. " ) ;
return false ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3545 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 471 : {
2018-10-16 15:32:58 +02:00
AST : : ThrowStatement * node = new ( pool ) AST : : ThrowStatement ( sym ( 2 ) . Expression ) ;
node - > throwToken = loc ( 1 ) ;
node - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3555 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 472 : {
2018-10-16 15:32:58 +02:00
AST : : TryStatement * node = new ( pool ) AST : : TryStatement ( sym ( 2 ) . Statement , sym ( 3 ) . Catch ) ;
node - > tryToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3564 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 473 : {
2018-10-16 15:32:58 +02:00
AST : : TryStatement * node = new ( pool ) AST : : TryStatement ( sym ( 2 ) . Statement , sym ( 3 ) . Finally ) ;
node - > tryToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3573 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 474 : {
2018-10-16 15:32:58 +02:00
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 ;
2019-10-04 16:11:02 +02:00
# line 3582 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 475 : {
2018-10-16 15:32:58 +02:00
AST : : Catch * node = new ( pool ) AST : : Catch ( sym ( 3 ) . PatternElement , sym ( 5 ) . Block ) ;
node - > catchToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
node - > rparenToken = loc ( 4 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3594 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 476 : {
2018-10-16 15:32:58 +02:00
AST : : Finally * node = new ( pool ) AST : : Finally ( sym ( 2 ) . Block ) ;
node - > finallyToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3603 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 477 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( stringRef ( 1 ) ) ;
node - > identifierToken = loc ( 1 ) ;
node - > scope = AST : : VariableScope : : Let ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3613 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 478 : {
2018-10-16 15:32:58 +02:00
AST : : PatternElement * node = new ( pool ) AST : : PatternElement ( sym ( 1 ) . Pattern ) ;
node - > scope = AST : : VariableScope : : Let ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3622 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 479 : {
2018-10-16 15:32:58 +02:00
AST : : DebuggerStatement * node = new ( pool ) AST : : DebuggerStatement ( ) ;
node - > debuggerToken = loc ( 1 ) ;
node - > semicolonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3639 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 481 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 6 ) . TypeAnnotation , sym ( 4 ) . FormalParameterList ) )
return false ;
AST : : FunctionDeclaration * node = new ( pool ) AST : : FunctionDeclaration ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 8 ) . StatementList ,
/*type annotation*/ nullptr ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > lparenToken = loc ( 3 ) ;
node - > rparenToken = loc ( 5 ) ;
2019-10-04 16:11:02 +02:00
node - > lbraceToken = loc ( 7 ) ;
node - > rbraceToken = loc ( 9 ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3656 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 482 : {
AST : : FunctionDeclaration * node = new ( pool ) AST : : FunctionDeclaration ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 8 ) . StatementList ,
sym ( 6 ) . TypeAnnotation ) ;
node - > functionToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > lparenToken = loc ( 3 ) ;
node - > rparenToken = loc ( 5 ) ;
node - > lbraceToken = loc ( 7 ) ;
node - > rbraceToken = loc ( 9 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 3672 "qmljs.g"
case 484 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 5 ) . TypeAnnotation , sym ( 3 ) . FormalParameterList ) )
return false ;
AST : : FunctionDeclaration * node = new ( pool ) AST : : FunctionDeclaration ( QStringRef ( ) , sym ( 3 ) . FormalParameterList , sym ( 7 ) . StatementList ,
/*type annotation*/ nullptr ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
2019-10-04 16:11:02 +02:00
node - > lbraceToken = loc ( 6 ) ;
node - > rbraceToken = loc ( 8 ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3688 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 485 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 6 ) . TypeAnnotation , sym ( 4 ) . FormalParameterList ) )
return false ;
AST : : FunctionExpression * node = new ( pool ) AST : : FunctionExpression ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 8 ) . StatementList ,
/*type annotation*/ nullptr ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
if ( ! stringRef ( 2 ) . isNull ( ) )
node - > identifierToken = loc ( 2 ) ;
node - > lparenToken = loc ( 3 ) ;
node - > rparenToken = loc ( 5 ) ;
2019-10-04 16:11:02 +02:00
node - > lbraceToken = loc ( 7 ) ;
node - > rbraceToken = loc ( 9 ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3706 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 486 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 5 ) . TypeAnnotation , sym ( 3 ) . FormalParameterList ) )
return false ;
AST : : FunctionExpression * node = new ( pool ) AST : : FunctionExpression ( QStringRef ( ) , sym ( 3 ) . FormalParameterList , sym ( 7 ) . StatementList ,
/*type annotation*/ nullptr ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
2019-10-04 16:11:02 +02:00
node - > lbraceToken = loc ( 6 ) ;
node - > rbraceToken = loc ( 8 ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3724 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 488 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3731 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 489 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = ( new ( pool ) AST : : FormalParameterList ( nullptr , sym ( 1 ) . PatternElement ) ) - > finish ( pool ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3739 "qmljs.g"
case 490 :
# line 3741 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 491 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . FormalParameterList - > finish ( pool ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3748 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 492 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = ( new ( pool ) AST : : FormalParameterList ( sym ( 1 ) . FormalParameterList , sym ( 3 ) . PatternElement ) ) - > finish ( pool ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3756 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 493 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = new ( pool ) AST : : FormalParameterList ( nullptr , sym ( 1 ) . PatternElement ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3765 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 494 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = new ( pool ) AST : : FormalParameterList ( sym ( 1 ) . FormalParameterList , sym ( 3 ) . PatternElement ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3775 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 496 : {
2018-10-16 15:32:58 +02:00
+ + functionNestingLevel ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3782 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 497 : {
2018-10-16 15:32:58 +02:00
- - functionNestingLevel ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3792 "qmljs.g"
case 499 : Q_FALLTHROUGH ( ) ;
# line 3794 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 500 : {
2018-10-16 15:32:58 +02:00
AST : : ReturnStatement * ret = new ( pool ) AST : : ReturnStatement ( sym ( 4 ) . Expression ) ;
ret - > returnToken = sym ( 4 ) . Node - > firstSourceLocation ( ) ;
ret - > semicolonToken = sym ( 4 ) . Node - > lastSourceLocation ( ) ;
AST : : StatementList * statements = ( new ( pool ) AST : : StatementList ( ret ) ) - > finish ( ) ;
AST : : FunctionExpression * f = new ( pool ) AST : : FunctionExpression ( QStringRef ( ) , sym ( 1 ) . FormalParameterList , statements ) ;
f - > isArrowFunction = true ;
f - > functionToken = sym ( 1 ) . Node ? sym ( 1 ) . Node - > firstSourceLocation ( ) : loc ( 1 ) ;
f - > lbraceToken = sym ( 4 ) . Node - > firstSourceLocation ( ) ;
f - > rbraceToken = sym ( 4 ) . Node - > lastSourceLocation ( ) ;
sym ( 1 ) . Node = f ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3810 "qmljs.g"
case 501 : Q_FALLTHROUGH ( ) ;
# line 3812 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 502 : {
2018-10-16 15:32:58 +02:00
AST : : FunctionExpression * f = new ( pool ) AST : : FunctionExpression ( QStringRef ( ) , sym ( 1 ) . FormalParameterList , sym ( 6 ) . StatementList ) ;
f - > isArrowFunction = true ;
f - > functionToken = sym ( 1 ) . Node ? sym ( 1 ) . Node - > firstSourceLocation ( ) : loc ( 1 ) ;
f - > lbraceToken = loc ( 6 ) ;
f - > rbraceToken = loc ( 7 ) ;
sym ( 1 ) . Node = f ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3824 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 503 : {
AST : : PatternElement * e = new ( pool ) AST : : PatternElement ( stringRef ( 1 ) , /*type annotation*/ nullptr , nullptr , AST : : PatternElement : : Binding ) ;
2018-10-16 15:32:58 +02:00
e - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . FormalParameterList = ( new ( pool ) AST : : FormalParameterList ( nullptr , e ) ) - > finish ( pool ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3835 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 504 : {
2018-10-16 15:32:58 +02:00
if ( coverExpressionType ! = CE_FormalParameterList ) {
AST : : NestedExpression * ne = static_cast < AST : : NestedExpression * > ( sym ( 1 ) . Node ) ;
AST : : FormalParameterList * list = ne - > expression - > reparseAsFormalParameterList ( pool ) ;
if ( ! list ) {
syntaxError ( loc ( 1 ) , " Invalid Arrow parameter list. " ) ;
return false ;
}
sym ( 1 ) . Node = list - > finish ( pool ) ;
}
} break ;
2019-10-04 16:11:02 +02:00
# line 3853 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 505 : {
2018-10-16 15:32:58 +02:00
if ( lookaheadToken ( lexer ) = = T_LBRACE )
pushToken ( T_FORCE_BLOCK ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3861 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 506 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 5 ) . TypeAnnotation , sym ( 3 ) . FormalParameterList ) )
return false ;
AST : : FunctionExpression * f = new ( pool ) AST : : FunctionExpression ( stringRef ( 1 ) , sym ( 3 ) . FormalParameterList , sym ( 7 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
f - > functionToken = sym ( 1 ) . PropertyName - > firstSourceLocation ( ) ;
f - > lparenToken = loc ( 2 ) ;
f - > rparenToken = loc ( 4 ) ;
2019-10-04 16:11:02 +02:00
f - > lbraceToken = loc ( 6 ) ;
f - > rbraceToken = loc ( 8 ) ;
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 1 ) . PropertyName , f , AST : : PatternProperty : : Method ) ;
2018-10-16 15:32:58 +02:00
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3878 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 507 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 6 ) . TypeAnnotation , sym ( 4 ) . FormalParameterList ) )
return false ;
AST : : FunctionExpression * f = new ( pool ) AST : : FunctionExpression ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 8 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
f - > functionToken = sym ( 2 ) . PropertyName - > firstSourceLocation ( ) ;
f - > lparenToken = loc ( 3 ) ;
f - > rparenToken = loc ( 5 ) ;
2019-10-04 16:11:02 +02:00
f - > lbraceToken = loc ( 7 ) ;
f - > rbraceToken = loc ( 9 ) ;
2018-10-16 15:32:58 +02:00
f - > isGenerator = true ;
2019-10-04 16:11:02 +02:00
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 2 ) . PropertyName , f , AST : : PatternProperty : : Method ) ;
2018-10-16 15:32:58 +02:00
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3897 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 508 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 5 ) . TypeAnnotation , /*formals*/ nullptr ) )
return false ;
AST : : FunctionExpression * f = new ( pool ) AST : : FunctionExpression ( stringRef ( 2 ) , nullptr , sym ( 7 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
f - > functionToken = sym ( 2 ) . PropertyName - > firstSourceLocation ( ) ;
f - > lparenToken = loc ( 3 ) ;
f - > rparenToken = loc ( 4 ) ;
2019-10-04 16:11:02 +02:00
f - > lbraceToken = loc ( 6 ) ;
f - > rbraceToken = loc ( 8 ) ;
2018-10-16 15:32:58 +02:00
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 2 ) . PropertyName , f , AST : : PatternProperty : : Getter ) ;
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3914 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 509 : {
if ( ! ensureNoFunctionTypeAnnotations ( sym ( 6 ) . TypeAnnotation , sym ( 4 ) . FormalParameterList ) )
return false ;
AST : : FunctionExpression * f = new ( pool ) AST : : FunctionExpression ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 8 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
f - > functionToken = sym ( 2 ) . PropertyName - > firstSourceLocation ( ) ;
f - > lparenToken = loc ( 3 ) ;
f - > rparenToken = loc ( 5 ) ;
2019-10-04 16:11:02 +02:00
f - > lbraceToken = loc ( 7 ) ;
f - > rbraceToken = loc ( 9 ) ;
2018-10-16 15:32:58 +02:00
AST : : PatternProperty * node = new ( pool ) AST : : PatternProperty ( sym ( 2 ) . PropertyName , f , AST : : PatternProperty : : Setter ) ;
node - > colonToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3932 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 510 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = ( new ( pool ) AST : : FormalParameterList ( nullptr , sym ( 1 ) . PatternElement ) ) - > finish ( pool ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3940 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 511 : {
2018-10-16 15:32:58 +02:00
lexer - > enterGeneratorBody ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3947 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 512 : {
2018-10-16 15:32:58 +02:00
- - functionNestingLevel ;
lexer - > leaveGeneratorBody ( ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3957 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 514 : {
AST : : FunctionDeclaration * node = new ( pool ) AST : : FunctionDeclaration ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 7 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
2019-10-04 16:11:02 +02:00
node - > identifierToken = loc ( 2 ) ;
2018-10-16 15:32:58 +02:00
node - > lparenToken = loc ( 3 ) ;
node - > rparenToken = loc ( 5 ) ;
node - > lbraceToken = loc ( 6 ) ;
node - > rbraceToken = loc ( 8 ) ;
node - > isGenerator = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3973 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 516 : {
AST : : FunctionDeclaration * node = new ( pool ) AST : : FunctionDeclaration ( QStringRef ( ) , sym ( 3 ) . FormalParameterList , sym ( 6 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
2019-10-04 16:11:02 +02:00
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
node - > lbraceToken = loc ( 5 ) ;
node - > rbraceToken = loc ( 7 ) ;
2018-10-16 15:32:58 +02:00
node - > isGenerator = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 3987 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 517 : {
AST : : FunctionExpression * node = new ( pool ) AST : : FunctionExpression ( stringRef ( 2 ) , sym ( 4 ) . FormalParameterList , sym ( 7 ) . StatementList ) ;
2018-10-16 15:32:58 +02:00
node - > functionToken = loc ( 1 ) ;
2019-10-04 16:11:02 +02:00
if ( ! stringRef ( 2 ) . isNull ( ) )
node - > identifierToken = loc ( 2 ) ;
2018-10-16 15:32:58 +02:00
node - > lparenToken = loc ( 3 ) ;
node - > rparenToken = loc ( 5 ) ;
node - > lbraceToken = loc ( 6 ) ;
node - > rbraceToken = loc ( 8 ) ;
node - > isGenerator = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4003 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 518 : {
AST : : FunctionExpression * node = new ( pool ) AST : : FunctionExpression ( QStringRef ( ) , sym ( 3 ) . FormalParameterList , sym ( 6 ) . StatementList ) ;
node - > functionToken = loc ( 1 ) ;
node - > lparenToken = loc ( 2 ) ;
node - > rparenToken = loc ( 4 ) ;
node - > lbraceToken = loc ( 5 ) ;
node - > rbraceToken = loc ( 7 ) ;
node - > isGenerator = true ;
sym ( 1 ) . Node = node ;
} break ;
# line 4019 "qmljs.g"
case 520 : Q_FALLTHROUGH ( ) ;
# line 4021 "qmljs.g"
case 521 : {
2018-10-16 15:32:58 +02:00
AST : : YieldExpression * node = new ( pool ) AST : : YieldExpression ( ) ;
node - > yieldToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4030 "qmljs.g"
case 522 : Q_FALLTHROUGH ( ) ;
# line 4032 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 523 : {
2018-10-16 15:32:58 +02:00
AST : : YieldExpression * node = new ( pool ) AST : : YieldExpression ( sym ( 3 ) . Expression ) ;
node - > yieldToken = loc ( 1 ) ;
node - > isYieldStar = true ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4042 "qmljs.g"
case 524 : Q_FALLTHROUGH ( ) ;
# line 4044 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 525 : {
2018-10-16 15:32:58 +02:00
AST : : YieldExpression * node = new ( pool ) AST : : YieldExpression ( sym ( 2 ) . Expression ) ;
node - > yieldToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4054 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 526 : {
2018-10-16 15:32:58 +02:00
AST : : ClassDeclaration * node = new ( pool ) AST : : ClassDeclaration ( stringRef ( 2 ) , sym ( 3 ) . Expression , sym ( 5 ) . ClassElementList ) ;
node - > classToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > lbraceToken = loc ( 4 ) ;
node - > rbraceToken = loc ( 6 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4066 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 527 : {
2018-10-16 15:32:58 +02:00
AST : : ClassExpression * node = new ( pool ) AST : : ClassExpression ( stringRef ( 2 ) , sym ( 3 ) . Expression , sym ( 5 ) . ClassElementList ) ;
node - > classToken = loc ( 1 ) ;
node - > identifierToken = loc ( 2 ) ;
node - > lbraceToken = loc ( 4 ) ;
node - > rbraceToken = loc ( 6 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4078 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 528 : {
2018-10-16 15:32:58 +02:00
AST : : ClassDeclaration * node = new ( pool ) AST : : ClassDeclaration ( QStringRef ( ) , sym ( 2 ) . Expression , sym ( 4 ) . ClassElementList ) ;
node - > classToken = loc ( 1 ) ;
node - > lbraceToken = loc ( 3 ) ;
node - > rbraceToken = loc ( 5 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4089 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 529 : {
2018-10-16 15:32:58 +02:00
AST : : ClassExpression * node = new ( pool ) AST : : ClassExpression ( QStringRef ( ) , sym ( 2 ) . Expression , sym ( 4 ) . ClassElementList ) ;
node - > classToken = loc ( 1 ) ;
node - > lbraceToken = loc ( 3 ) ;
node - > rbraceToken = loc ( 5 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4102 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 531 : {
2018-10-16 15:32:58 +02:00
lexer - > setStaticIsKeyword ( true ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4109 "qmljs.g"
case 532 :
# line 4111 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 533 : {
2018-10-16 15:32:58 +02:00
lexer - > setStaticIsKeyword ( false ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4118 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 534 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4125 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 535 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4132 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 536 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4139 "qmljs.g"
2017-12-20 10:47:33 +01:00
2019-10-04 16:11:02 +02:00
case 537 : {
2018-10-16 15:32:58 +02:00
if ( sym ( 1 ) . Node )
sym ( 1 ) . Node = sym ( 1 ) . ClassElementList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4149 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 539 : {
if ( sym ( 1 ) . Node ) {
if ( sym ( 2 ) . Node )
sym ( 1 ) . ClassElementList = sym ( 1 ) . ClassElementList - > append ( sym ( 2 ) . ClassElementList ) ;
} else if ( sym ( 2 ) . Node ) {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
}
2018-10-16 15:32:58 +02:00
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4161 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 540 : {
2018-10-16 15:32:58 +02:00
AST : : ClassElementList * node = new ( pool ) AST : : ClassElementList ( sym ( 1 ) . PatternProperty , false ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4169 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 541 : {
2018-10-16 15:32:58 +02:00
lexer - > setStaticIsKeyword ( true ) ;
AST : : ClassElementList * node = new ( pool ) AST : : ClassElementList ( sym ( 2 ) . PatternProperty , true ) ;
sym ( 1 ) . Node = node ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4178 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 542 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4187 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 543 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4196 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 545 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : Program ( sym ( 1 ) . StatementList - > finish ( ) ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4203 "qmljs.g"
case 546 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : ESModule ( sym ( 1 ) . StatementList ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4209 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 547 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = sym ( 1 ) . StatementList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4216 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 548 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4226 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 551 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = sym ( 1 ) . StatementList - > append ( sym ( 2 ) . StatementList ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4234 "qmljs.g"
case 552 : Q_FALLTHROUGH ( ) ;
# line 4236 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 553 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = new ( pool ) AST : : StatementList ( sym ( 1 ) . Node ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4245 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 555 : {
2018-10-16 15:32:58 +02:00
auto decl = new ( pool ) AST : : ImportDeclaration ( sym ( 2 ) . ImportClause , sym ( 3 ) . FromClause ) ;
decl - > importToken = loc ( 1 ) ;
sym ( 1 ) . Node = decl ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4253 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 556 : {
2018-10-16 15:32:58 +02:00
auto decl = new ( pool ) AST : : ImportDeclaration ( stringRef ( 2 ) ) ;
decl - > importToken = loc ( 1 ) ;
decl - > moduleSpecifierToken = loc ( 2 ) ;
sym ( 1 ) . Node = decl ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4263 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 557 : {
2018-10-16 15:32:58 +02:00
auto clause = new ( pool ) AST : : ImportClause ( stringRef ( 1 ) ) ;
clause - > importedDefaultBindingToken = loc ( 1 ) ;
sym ( 1 ) . ImportClause = clause ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4271 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 558 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ImportClause = new ( pool ) AST : : ImportClause ( sym ( 1 ) . NameSpaceImport ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4277 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 559 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ImportClause = new ( pool ) AST : : ImportClause ( sym ( 1 ) . NamedImports ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4283 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 560 : {
2018-10-16 15:32:58 +02:00
auto importClause = new ( pool ) AST : : ImportClause ( stringRef ( 1 ) , sym ( 3 ) . NameSpaceImport ) ;
importClause - > importedDefaultBindingToken = loc ( 1 ) ;
sym ( 1 ) . ImportClause = importClause ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4291 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 561 : {
2018-10-16 15:32:58 +02:00
auto importClause = new ( pool ) AST : : ImportClause ( stringRef ( 1 ) , sym ( 3 ) . NamedImports ) ;
importClause - > importedDefaultBindingToken = loc ( 1 ) ;
sym ( 1 ) . ImportClause = importClause ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4302 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 563 : {
2018-10-16 15:32:58 +02:00
auto import = new ( pool ) AST : : NameSpaceImport ( stringRef ( 3 ) ) ;
import - > starToken = loc ( 1 ) ;
import - > importedBindingToken = loc ( 3 ) ;
sym ( 1 ) . NameSpaceImport = import ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4312 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 564 : {
2018-10-16 15:32:58 +02:00
auto namedImports = new ( pool ) AST : : NamedImports ( ) ;
namedImports - > leftBraceToken = loc ( 1 ) ;
namedImports - > rightBraceToken = loc ( 2 ) ;
sym ( 1 ) . NamedImports = namedImports ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4321 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 565 : {
2018-10-16 15:32:58 +02:00
auto namedImports = new ( pool ) AST : : NamedImports ( sym ( 2 ) . ImportsList - > finish ( ) ) ;
namedImports - > leftBraceToken = loc ( 1 ) ;
namedImports - > rightBraceToken = loc ( 3 ) ;
sym ( 1 ) . NamedImports = namedImports ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4330 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 566 : {
2018-10-16 15:32:58 +02:00
auto namedImports = new ( pool ) AST : : NamedImports ( sym ( 2 ) . ImportsList - > finish ( ) ) ;
namedImports - > leftBraceToken = loc ( 1 ) ;
namedImports - > rightBraceToken = loc ( 4 ) ;
sym ( 1 ) . NamedImports = namedImports ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4340 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 567 : {
2018-10-16 15:32:58 +02:00
auto clause = new ( pool ) AST : : FromClause ( stringRef ( 2 ) ) ;
clause - > fromToken = loc ( 1 ) ;
clause - > moduleSpecifierToken = loc ( 2 ) ;
sym ( 1 ) . FromClause = clause ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4350 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 568 : {
2018-10-16 15:32:58 +02:00
auto importsList = new ( pool ) AST : : ImportsList ( sym ( 1 ) . ImportSpecifier ) ;
importsList - > importSpecifierToken = loc ( 1 ) ;
sym ( 1 ) . ImportsList = importsList ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4358 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 569 : {
2018-10-16 15:32:58 +02:00
auto importsList = new ( pool ) AST : : ImportsList ( sym ( 1 ) . ImportsList , sym ( 3 ) . ImportSpecifier ) ;
importsList - > importSpecifierToken = loc ( 3 ) ;
sym ( 1 ) . ImportsList = importsList ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4367 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 570 : {
2018-10-16 15:32:58 +02:00
auto importSpecifier = new ( pool ) AST : : ImportSpecifier ( stringRef ( 1 ) ) ;
importSpecifier - > importedBindingToken = loc ( 1 ) ;
sym ( 1 ) . ImportSpecifier = importSpecifier ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4375 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 571 : {
2018-10-16 15:32:58 +02:00
auto importSpecifier = new ( pool ) AST : : ImportSpecifier ( stringRef ( 1 ) , stringRef ( 3 ) ) ;
importSpecifier - > identifierToken = loc ( 1 ) ;
importSpecifier - > importedBindingToken = loc ( 3 ) ;
sym ( 1 ) . ImportSpecifier = importSpecifier ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4392 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 574 : {
2018-10-16 15:32:58 +02:00
int token = lookaheadToken ( lexer ) ;
2019-10-04 16:11:02 +02:00
if ( token = = T_FUNCTION | | token = = T_FUNCTION_STAR | | token = = T_CLASS )
2018-10-16 15:32:58 +02:00
pushToken ( T_FORCE_DECLARATION ) ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4401 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 575 : {
2018-10-16 15:32:58 +02:00
auto exportDeclaration = new ( pool ) AST : : ExportDeclaration ( sym ( 3 ) . FromClause ) ;
exportDeclaration - > exportToken = loc ( 1 ) ;
sym ( 1 ) . ExportDeclaration = exportDeclaration ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4409 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 576 : {
2018-10-16 15:32:58 +02:00
auto exportDeclaration = new ( pool ) AST : : ExportDeclaration ( sym ( 2 ) . ExportClause , sym ( 3 ) . FromClause ) ;
exportDeclaration - > exportToken = loc ( 1 ) ;
sym ( 1 ) . ExportDeclaration = exportDeclaration ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4417 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 577 : {
2018-10-16 15:32:58 +02:00
auto exportDeclaration = new ( pool ) AST : : ExportDeclaration ( sym ( 2 ) . ExportClause ) ;
exportDeclaration - > exportToken = loc ( 1 ) ;
sym ( 1 ) . ExportDeclaration = exportDeclaration ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4425 "qmljs.g"
case 578 : Q_FALLTHROUGH ( ) ;
# line 4427 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 579 : {
2018-10-16 15:32:58 +02:00
auto exportDeclaration = new ( pool ) AST : : ExportDeclaration ( /*exportDefault=*/ false , sym ( 2 ) . Node ) ;
exportDeclaration - > exportToken = loc ( 1 ) ;
sym ( 1 ) . ExportDeclaration = exportDeclaration ;
} break ;
2019-10-04 16:11:02 +02:00
# line 4435 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 580 : {
2018-10-16 15:32:58 +02:00
if ( auto * f = AST : : cast < AST : : FunctionDeclaration * > ( sym ( 5 ) . Node ) ) {
if ( f - > name . isEmpty ( ) ) {
f - > name = stringRef ( 2 ) ;
f - > identifierToken = loc ( 2 ) ;
}
}
} Q_FALLTHROUGH ( ) ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4446 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 581 : {
2018-10-16 15:32:58 +02:00
// Emulate 15.2.3.11
if ( auto * cls = AST : : cast < AST : : ClassDeclaration * > ( sym ( 5 ) . Node ) ) {
if ( cls - > name . isEmpty ( ) ) {
cls - > name = stringRef ( 2 ) ;
cls - > identifierToken = loc ( 2 ) ;
}
}
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
auto exportDeclaration = new ( pool ) AST : : ExportDeclaration ( /*exportDefault=*/ true , sym ( 5 ) . Node ) ;
exportDeclaration - > exportToken = loc ( 1 ) ;
sym ( 1 ) . ExportDeclaration = exportDeclaration ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4462 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 582 : {
2018-10-16 15:32:58 +02:00
// if lhs is an identifier expression and rhs is an anonymous function expression, we need to assign the name of lhs to the function
if ( auto * f = asAnonymousFunctionDefinition ( sym ( 4 ) . Node ) ) {
f - > name = stringRef ( 2 ) ;
}
if ( auto * c = asAnonymousClassDefinition ( sym ( 4 ) . Expression ) ) {
c - > name = stringRef ( 2 ) ;
}
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
auto exportDeclaration = new ( pool ) AST : : ExportDeclaration ( /*exportDefault=*/ true , sym ( 4 ) . Node ) ;
exportDeclaration - > exportToken = loc ( 1 ) ;
sym ( 1 ) . ExportDeclaration = exportDeclaration ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4479 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 583 : {
2018-10-16 15:32:58 +02:00
auto exportClause = new ( pool ) AST : : ExportClause ( ) ;
exportClause - > leftBraceToken = loc ( 1 ) ;
exportClause - > rightBraceToken = loc ( 2 ) ;
sym ( 1 ) . ExportClause = exportClause ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4488 "qmljs.g"
2013-11-06 14:17:23 +01:00
2019-10-04 16:11:02 +02:00
case 584 : {
2018-10-16 15:32:58 +02:00
auto exportClause = new ( pool ) AST : : ExportClause ( sym ( 2 ) . ExportsList - > finish ( ) ) ;
exportClause - > leftBraceToken = loc ( 1 ) ;
exportClause - > rightBraceToken = loc ( 3 ) ;
sym ( 1 ) . ExportClause = exportClause ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4497 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 585 : {
2018-10-16 15:32:58 +02:00
auto exportClause = new ( pool ) AST : : ExportClause ( sym ( 2 ) . ExportsList - > finish ( ) ) ;
exportClause - > leftBraceToken = loc ( 1 ) ;
exportClause - > rightBraceToken = loc ( 4 ) ;
sym ( 1 ) . ExportClause = exportClause ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4507 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 586 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ExportsList = new ( pool ) AST : : ExportsList ( sym ( 1 ) . ExportSpecifier ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4513 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 587 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ExportsList = new ( pool ) AST : : ExportsList ( sym ( 1 ) . ExportsList , sym ( 3 ) . ExportSpecifier ) ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4520 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 588 : {
2018-10-16 15:32:58 +02:00
auto exportSpecifier = new ( pool ) AST : : ExportSpecifier ( stringRef ( 1 ) ) ;
exportSpecifier - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . ExportSpecifier = exportSpecifier ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4528 "qmljs.g"
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
case 589 : {
2018-10-16 15:32:58 +02:00
auto exportSpecifier = new ( pool ) AST : : ExportSpecifier ( stringRef ( 1 ) , stringRef ( 3 ) ) ;
exportSpecifier - > identifierToken = loc ( 1 ) ;
exportSpecifier - > exportedIdentifierToken = loc ( 3 ) ;
sym ( 1 ) . ExportSpecifier = exportSpecifier ;
} break ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
# line 4539 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
// ------------ end of switch statement
2010-01-18 13:13:34 +01:00
} // switch
action = nt_action ( state_stack [ tos ] , lhs [ r ] - TERMINAL_COUNT ) ;
} // if
} while ( action ! = 0 ) ;
2018-10-16 15:32:58 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " Done or error. " ;
# endif
2010-01-18 13:13:34 +01:00
if ( first_token = = last_token ) {
const int errorState = state_stack [ tos ] ;
// automatic insertion of `;'
2013-01-22 11:15:23 +01:00
if ( yytoken ! = - 1 & & ( ( t_action ( errorState , T_AUTOMATIC_SEMICOLON ) & & lexer - > canInsertAutomaticSemicolon ( yytoken ) )
| | t_action ( errorState , T_COMPATIBILITY_SEMICOLON ) ) ) {
2018-10-16 15:32:58 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " Inserting automatic semicolon. " ;
# endif
2010-01-18 13:13:34 +01:00
SavedToken & tk = token_buffer [ 0 ] ;
tk . token = yytoken ;
tk . dval = yylval ;
2011-09-13 08:42:52 +02:00
tk . spell = yytokenspell ;
2019-10-04 16:11:02 +02:00
tk . raw = yytokenraw ;
2010-01-18 13:13:34 +01:00
tk . loc = yylloc ;
yylloc = yyprevlloc ;
yylloc . offset + = yylloc . length ;
yylloc . startColumn + = yylloc . length ;
yylloc . length = 0 ;
2019-10-04 16:11:02 +02:00
//const QString msg = QCoreApplication::translate("QQmlParser", "Missing `;'");
//diagnostic_messages.append(compileError(yyloc, msg, Severity::Warning));
2010-01-18 13:13:34 +01:00
first_token = & token_buffer [ 0 ] ;
last_token = & token_buffer [ 1 ] ;
yytoken = T_SEMICOLON ;
yylval = 0 ;
action = errorState ;
goto _Lcheck_token ;
}
hadErrors = true ;
token_buffer [ 0 ] . token = yytoken ;
token_buffer [ 0 ] . dval = yylval ;
2011-09-13 08:42:52 +02:00
token_buffer [ 0 ] . spell = yytokenspell ;
2019-10-04 16:11:02 +02:00
token_buffer [ 0 ] . raw = yytokenraw ;
2010-01-18 13:13:34 +01:00
token_buffer [ 0 ] . loc = yylloc ;
2011-09-13 08:42:52 +02:00
token_buffer [ 1 ] . token = yytoken = lexer - > lex ( ) ;
token_buffer [ 1 ] . dval = yylval = lexer - > tokenValue ( ) ;
token_buffer [ 1 ] . spell = yytokenspell = lexer - > tokenSpell ( ) ;
2019-10-04 16:11:02 +02:00
token_buffer [ 1 ] . raw = yytokenraw = lexer - > rawString ( ) ;
2011-09-13 08:42:52 +02:00
token_buffer [ 1 ] . loc = yylloc = location ( lexer ) ;
2010-01-18 13:13:34 +01:00
if ( t_action ( errorState , yytoken ) ) {
2019-10-04 16:11:02 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " Parse error, trying to recover. " ;
# endif
2010-01-21 16:47:46 +01:00
QString msg ;
int token = token_buffer [ 0 ] . token ;
if ( token < 0 | | token > = TERMINAL_COUNT )
2019-10-04 16:11:02 +02:00
msg = QCoreApplication : : translate ( " QQmlParser " , " Syntax error " ) ;
2010-01-21 16:47:46 +01:00
else
2019-10-04 16:11:02 +02:00
msg = QCoreApplication : : translate ( " QQmlParser " , " Unexpected token `%1' " ) . arg ( QLatin1String ( spell [ token ] ) ) ;
diagnostic_messages . append ( compileError ( token_buffer [ 0 ] . loc , msg ) ) ;
2010-01-18 13:13:34 +01:00
action = errorState ;
goto _Lcheck_token ;
}
static int tokens [ ] = {
T_PLUS ,
T_EQ ,
T_COMMA ,
T_COLON ,
T_SEMICOLON ,
T_RPAREN , T_RBRACKET , T_RBRACE ,
T_NUMERIC_LITERAL ,
T_IDENTIFIER ,
T_LPAREN , T_LBRACKET , T_LBRACE ,
EOF_SYMBOL
} ;
for ( int * tk = tokens ; * tk ! = EOF_SYMBOL ; + + tk ) {
int a = t_action ( errorState , * tk ) ;
if ( a > 0 & & t_action ( a , yytoken ) ) {
2019-10-04 16:11:02 +02:00
# ifdef PARSER_DEBUG
qDebug ( ) < < " Parse error, trying to recover (2). " ;
# endif
const QString msg = QCoreApplication : : translate ( " QQmlParser " , " Expected token `%1' " ) . arg ( QLatin1String ( spell [ * tk ] ) ) ;
diagnostic_messages . append ( compileError ( token_buffer [ 0 ] . loc , msg ) ) ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
pushToken ( * tk ) ;
2010-01-18 13:13:34 +01:00
goto _Lcheck_token ;
}
}
for ( int tk = 1 ; tk < TERMINAL_COUNT ; + + tk ) {
if ( tk = = T_AUTOMATIC_SEMICOLON | | tk = = T_FEED_UI_PROGRAM | |
2018-10-16 15:32:58 +02:00
tk = = T_FEED_JS_STATEMENT | | tk = = T_FEED_JS_EXPRESSION )
2010-01-18 13:13:34 +01:00
continue ;
int a = t_action ( errorState , tk ) ;
if ( a > 0 & & t_action ( a , yytoken ) ) {
2019-10-04 16:11:02 +02:00
const QString msg = QCoreApplication : : translate ( " QQmlParser " , " Expected token `%1' " ) . arg ( QLatin1String ( spell [ tk ] ) ) ;
diagnostic_messages . append ( compileError ( token_buffer [ 0 ] . loc , msg ) ) ;
2010-01-18 13:13:34 +01:00
2019-10-04 16:11:02 +02:00
pushToken ( tk ) ;
2010-01-18 13:13:34 +01:00
goto _Lcheck_token ;
}
}
2019-10-04 16:11:02 +02:00
const QString msg = QCoreApplication : : translate ( " QQmlParser " , " Syntax error " ) ;
diagnostic_messages . append ( compileError ( token_buffer [ 0 ] . loc , msg ) ) ;
2010-01-18 13:13:34 +01:00
}
return false ;
}
QT_QML_END_NAMESPACE