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
* *
2020-02-28 17:51:32 +01:00
* * This file is part of Qt Creator .
2010-01-18 13:13:34 +01:00
* *
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
* *
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
2020-02-28 17:51:32 +01:00
* * General Public License version 3 as published by the Free Software
* * Foundation with exceptions as appearing in the file LICENSE . GPL3 - EXCEPT
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
2020-02-28 17:51:32 +01:00
* * be met : https : //www.gnu.org/licenses/gpl-3.0.html.
2010-01-18 13:13:34 +01:00
* *
2012-10-02 09:12:39 +02:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2020-02-28 17:51:32 +01:00
# line 172 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# include "qmljs/parser/qmljsengine_p.h"
# include "qmljs/parser/qmljslexer_p.h"
# include "qmljs/parser/qmljsast_p.h"
# include "qmljs/parser/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
2020-02-28 17:51:32 +01:00
# line 493 "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 ) ) ) ;
2020-02-28 17:51:32 +01:00
location_stack = reinterpret_cast < SourceLocation * > ( realloc ( location_stack , stack_size * sizeof ( 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
}
}
2020-02-28 17:51:32 +01:00
static inline SourceLocation location ( Lexer * lexer )
2010-01-18 13:13:34 +01:00
{
2020-02-28 17:51:32 +01:00
SourceLocation loc ;
2010-01-18 13:13:34 +01:00
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 ;
2020-02-28 17:51:32 +01:00
QVarLengthArray < SourceLocation , 4 > locations ;
2010-01-18 13:13:34 +01:00
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 ) {
2020-02-28 17:51:32 +01:00
# line 720 "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
2020-02-28 17:51:32 +01:00
# line 728 "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
2020-02-28 17:51:32 +01:00
# line 736 "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
2020-02-28 17:51:32 +01:00
# line 744 "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
2020-02-28 17:51:32 +01:00
# line 752 "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
2020-02-28 17:51:32 +01:00
# line 760 "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
2020-02-28 17:51:32 +01:00
# line 769 "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
2020-02-28 17:51:32 +01:00
# line 777 "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
2020-02-28 17:51:32 +01:00
# line 784 "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
2020-02-28 17:51:32 +01:00
# line 791 "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
2020-02-28 17:51:32 +01:00
# line 798 "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
2020-02-28 17:51:32 +01:00
# line 805 "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
2020-02-28 17:51:32 +01:00
# line 817 "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
2020-02-28 17:51:32 +01:00
# line 829 "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
2020-02-28 17:51:32 +01:00
# line 836 "qmljs.g"
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 847 "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 ;
2020-02-28 17:51:32 +01:00
# line 856 "qmljs.g"
2019-10-04 16:11:02 +02:00
case 21 : {
2020-02-28 17:51:32 +01:00
sym ( 1 ) . UiImport - > version = sym ( 2 ) . UiVersionSpecifier ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . UiImport - > semicolonToken = loc ( 3 ) ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 864 "qmljs.g"
2010-01-18 13:13:34 +01:00
2018-10-16 15:32:58 +02:00
case 22 : {
2020-02-28 17:51:32 +01:00
sym ( 1 ) . UiImport - > version = sym ( 2 ) . UiVersionSpecifier ;
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
2020-02-28 17:51:32 +01:00
# line 875 "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
2020-02-28 17:51:32 +01:00
# line 885 "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
2020-02-28 17:51:32 +01:00
# line 911 "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 ;
2020-02-28 17:51:32 +01:00
# line 918 "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 ;
2020-02-28 17:51:32 +01:00
# line 925 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 27 : {
2020-02-28 17:51:32 +01:00
AST : : IdentifierExpression * node = new ( pool ) AST : : IdentifierExpression ( stringRef ( 1 ) ) ;
node - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
2018-10-16 15:32:58 +02:00
} break ;
2020-02-28 17:51:32 +01:00
# line 934 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 28 : {
2020-02-28 17:51:32 +01:00
AST : : FieldMemberExpression * node = new ( pool ) AST : : FieldMemberExpression ( sym ( 1 ) . Expression , stringRef ( 3 ) ) ;
node - > dotToken = loc ( 2 ) ;
node - > identifierToken = loc ( 3 ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 944 "qmljs.g"
2018-10-16 15:32:58 +02:00
2019-10-04 16:11:02 +02:00
case 29 : {
2020-02-28 17:51:32 +01:00
if ( AST : : UiQualifiedId * qualifiedId = reparseAsQualifiedId ( sym ( 1 ) . Expression ) ) {
sym ( 1 ) . UiQualifiedId = qualifiedId ;
} else {
sym ( 1 ) . UiQualifiedId = 0 ;
diagnostic_messages . append ( compileError ( loc ( 1 ) ,
QLatin1String ( " Expected a qualified name id " ) ) ) ;
return false ;
}
AST : : UiAnnotation * node = new ( pool ) AST : : UiAnnotation ( sym ( 1 ) . UiQualifiedId , sym ( 2 ) . UiObjectInitializer ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 962 "qmljs.g"
case 30 : {
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
# line 970 "qmljs.g"
case 31 : {
sym ( 1 ) . Node = new ( pool ) AST : : UiAnnotationList ( sym ( 1 ) . UiAnnotation ) ;
} break ;
# line 977 "qmljs.g"
case 32 : {
AST : : UiAnnotationList * node = new ( pool ) AST : : UiAnnotationList ( sym ( 1 ) . UiAnnotationList , sym ( 2 ) . UiAnnotation ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 985 "qmljs.g"
case 33 : {
AST : : UiObjectDefinition * node = sym ( 2 ) . UiObjectDefinition ;
node - > annotations = sym ( 1 ) . UiAnnotationList - > finish ( ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 996 "qmljs.g"
case 35 : {
sym ( 1 ) . Node = new ( pool ) AST : : UiObjectMemberList ( sym ( 1 ) . UiObjectMember ) ;
} break ;
# line 1003 "qmljs.g"
case 36 : {
AST : : UiObjectMemberList * node = new ( pool ) AST : : UiObjectMemberList ( sym ( 1 ) . UiObjectMemberList , sym ( 2 ) . UiObjectMember ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1011 "qmljs.g"
case 37 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiArrayMemberList ( sym ( 1 ) . UiObjectMember ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1018 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 38 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1027 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 39 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1037 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 40 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1047 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 41 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1055 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 42 : {
AST : : UiObjectMember * node = sym ( 2 ) . UiObjectMember ;
node - > annotations = sym ( 1 ) . UiAnnotationList - > finish ( ) ;
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
# line 1068 "qmljs.g"
case 45 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1079 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 46 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1089 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 47 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1101 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 48 : {
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 ) ;
2020-02-28 17:51:32 +01:00
node - > semicolonToken = loc ( 5 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1114 "qmljs.g"
case 49 : {
AST : : ObjectPattern * l = new ( pool ) AST : : ObjectPattern ( sym ( 3 ) . PatternPropertyList - > finish ( ) ) ;
l - > lbraceToken = loc ( 1 ) ;
l - > rbraceToken = loc ( 5 ) ;
AST : : ExpressionStatement * node = new ( pool ) AST : : ExpressionStatement ( l ) ;
node - > semicolonToken = loc ( 6 ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1127 "qmljs.g"
case 50 : Q_FALLTHROUGH ( ) ;
# line 1129 "qmljs.g"
case 51 : Q_FALLTHROUGH ( ) ;
# line 1131 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 52 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 3 ) . Node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1139 "qmljs.g"
case 53 : Q_FALLTHROUGH ( ) ;
# line 1141 "qmljs.g"
case 54 : Q_FALLTHROUGH ( ) ;
# line 1143 "qmljs.g"
case 55 : Q_FALLTHROUGH ( ) ;
# line 1145 "qmljs.g"
case 56 : Q_FALLTHROUGH ( ) ;
# line 1147 "qmljs.g"
case 57 : Q_FALLTHROUGH ( ) ;
# line 1149 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 58 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1156 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 59 :
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 ;
2020-02-28 17:51:32 +01:00
# line 1166 "qmljs.g"
case 60 : Q_FALLTHROUGH ( ) ;
# line 1168 "qmljs.g"
case 61 : Q_FALLTHROUGH ( ) ;
# line 1170 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 62 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1179 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 63 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1188 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 64 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1195 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 65 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . UiParameterList - > finish ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1202 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 66 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 1213 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 67 : {
2018-10-16 15:32:58 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 1223 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 68 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1235 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 69 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1246 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 70 : {
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 - > parameters = sym ( 4 ) . UiParameterList ;
node - > semicolonToken = loc ( 6 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1260 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 71 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1273 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 72 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1289 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 74 : {
2019-10-04 16:11:02 +02:00
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
node - > isReadonlyMember = true ;
node - > readonlyToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1299 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 75 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1314 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 77 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 1324 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 78 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 1334 "qmljs.g"
case 79 : {
AST : : UiPublicMember * node = sym ( 3 ) . UiPublicMember ;
node - > isDefaultMember = true ;
node - > defaultToken = loc ( 1 ) ;
node - > isRequired = true ;
node - > requiredToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1347 "qmljs.g"
case 80 : {
AST : : UiPublicMember * node = sym ( 3 ) . UiPublicMember ;
node - > isDefaultMember = true ;
node - > defaultToken = loc ( 2 ) ;
node - > isRequired = true ;
node - > requiredToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 1359 "qmljs.g"
2019-10-04 16:11:02 +02:00
/* 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 ) */
2020-02-28 17:51:32 +01:00
# line 1365 "qmljs.g"
case 83 : {
AST : : UiRequired * node = new ( pool ) AST : : UiRequired ( stringRef ( 2 ) ) ;
node - > requiredToken = loc ( 1 ) ;
node - > semicolonToken = loc ( 3 ) ;
sym ( 1 ) . Node = node ;
} break ;
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
# line 1377 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 85 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1387 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 86 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1401 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 88 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 1411 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 89 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 1421 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 90 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1449 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 92 : {
2019-10-04 16:11:02 +02:00
AST : : UiPublicMember * node = sym ( 2 ) . UiPublicMember ;
node - > isReadonlyMember = true ;
node - > readonlyToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1459 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 93 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1484 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 95 : {
2019-10-04 16:11:02 +02:00
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
2020-02-28 17:51:32 +01:00
# line 1494 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 96 : {
2019-10-04 16:11:02 +02:00
auto node = new ( pool ) AST : : UiSourceElement ( sym ( 1 ) . Node ) ;
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1502 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 97 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : UiSourceElement ( sym ( 1 ) . Node ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1509 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 98 : {
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
2020-02-28 17:51:32 +01:00
# line 1516 "qmljs.g"
2017-03-16 17:13:46 +01:00
2020-02-28 17:51:32 +01:00
case 99 : {
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 ,
2020-02-28 17:51:32 +01:00
QLatin1String ( " Ignored annotation " ) , QtWarningMsg ) ) ;
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
2020-02-28 17:51:32 +01:00
# line 1539 "qmljs.g"
2017-03-16 17:13:46 +01:00
2020-02-28 17:51:32 +01:00
case 100 : {
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
2020-02-28 17:51:32 +01:00
# line 1550 "qmljs.g"
case 101 : {
if ( ! stringRef ( 2 ) . front ( ) . isUpper ( ) ) {
diagnostic_messages . append ( compileError ( loc ( 2 ) ,
QLatin1String ( " Type name must be upper case " ) , QtWarningMsg ) ) ;
}
auto inlineComponent = new ( pool ) AST : : UiInlineComponent ( stringRef ( 2 ) , sym ( 4 ) . UiObjectDefinition ) ;
inlineComponent - > componentToken = loc ( 1 ) ;
sym ( 1 ) . Node = inlineComponent ;
} break ;
# line 1563 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 102 : {
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
2020-02-28 17:51:32 +01:00
# line 1573 "qmljs.g"
2010-03-31 15:40:28 +02:00
2020-02-28 17:51:32 +01:00
case 103 : {
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
2020-02-28 17:51:32 +01:00
# line 1584 "qmljs.g"
2010-03-31 15:40:28 +02:00
2020-02-28 17:51:32 +01:00
case 104 : {
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
2020-02-28 17:51:32 +01:00
# line 1594 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 105 : {
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
2020-02-28 17:51:32 +01:00
# line 1638 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 132 : {
2019-10-04 16:11:02 +02:00
sym ( 1 ) . TypeArgumentList = new ( pool ) AST : : TypeArgumentList ( sym ( 1 ) . Type ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1645 "qmljs.g"
2010-03-31 15:40:28 +02:00
2020-02-28 17:51:32 +01:00
case 133 : {
2019-10-04 16:11:02 +02:00
sym ( 1 ) . TypeArgumentList = new ( pool ) AST : : TypeArgumentList ( sym ( 1 ) . TypeArgumentList , sym ( 3 ) . Type ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1652 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 134 : {
2019-10-04 16:11:02 +02:00
sym ( 1 ) . Type = new ( pool ) AST : : Type ( sym ( 1 ) . UiQualifiedId , sym ( 3 ) . TypeArgumentList - > finish ( ) ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1659 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 135 : {
2019-10-04 16:11:02 +02:00
AST : : UiQualifiedId * id = new ( pool ) AST : : UiQualifiedId ( stringRef ( 1 ) ) ;
id - > identifierToken = loc ( 1 ) ;
sym ( 1 ) . Type = new ( pool ) AST : : Type ( id - > finish ( ) ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1668 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 136 : {
2019-10-04 16:11:02 +02:00
sym ( 1 ) . Type = new ( pool ) AST : : Type ( sym ( 1 ) . UiQualifiedId ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1675 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 137 : {
2019-10-04 16:11:02 +02:00
sym ( 1 ) . TypeAnnotation = new ( pool ) AST : : TypeAnnotation ( sym ( 2 ) . Type ) ;
sym ( 1 ) . TypeAnnotation - > colonToken = loc ( 1 ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1684 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 139 : {
2019-10-04 16:11:02 +02:00
sym ( 1 ) . TypeAnnotation = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1695 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 140 : {
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
2020-02-28 17:51:32 +01:00
# line 1704 "qmljs.g"
2010-03-31 15:40:28 +02:00
2020-02-28 17:51:32 +01:00
case 141 : {
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
2020-02-28 17:51:32 +01:00
# line 1722 "qmljs.g"
2016-04-29 11:00:30 +02:00
2020-02-28 17:51:32 +01:00
case 150 : {
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
2020-02-28 17:51:32 +01:00
# line 1733 "qmljs.g"
2016-04-29 11:00:30 +02:00
2020-02-28 17:51:32 +01:00
case 151 : {
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
2020-02-28 17:51:32 +01:00
# line 1744 "qmljs.g"
2017-12-20 10:47:33 +01:00
2020-02-28 17:51:32 +01:00
case 152 : {
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
2020-02-28 17:51:32 +01:00
# line 1753 "qmljs.g"
2017-12-20 10:47:33 +01:00
2020-02-28 17:51:32 +01:00
case 153 : {
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
2020-02-28 17:51:32 +01:00
# line 1763 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 154 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1780 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 155 : {
2018-10-16 15:32:58 +02:00
AST : : NullExpression * node = new ( pool ) AST : : NullExpression ( ) ;
node - > nullToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1789 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 156 : {
2018-10-16 15:32:58 +02:00
AST : : TrueLiteral * node = new ( pool ) AST : : TrueLiteral ( ) ;
node - > trueToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1798 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 157 : {
2018-10-16 15:32:58 +02:00
AST : : FalseLiteral * node = new ( pool ) AST : : FalseLiteral ( ) ;
node - > falseToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1807 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 158 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1816 "qmljs.g"
case 159 : Q_FALLTHROUGH ( ) ;
# line 1819 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 160 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1831 "qmljs.g"
2018-10-16 15:32:58 +02:00
{
Lexer : : RegExpBodyPrefix prefix ;
2020-02-28 17:51:32 +01:00
case 161 :
2018-10-16 15:32:58 +02:00
prefix = Lexer : : NoPrefix ;
goto scan_regexp ;
2020-02-28 17:51:32 +01:00
# line 1843 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 162 :
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
}
2020-02-28 17:51:32 +01:00
# line 1867 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 163 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1880 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 164 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1890 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 165 : {
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
2020-02-28 17:51:32 +01:00
# line 1907 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 166 : {
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
2020-02-28 17:51:32 +01:00
# line 1915 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 167 : {
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
2020-02-28 17:51:32 +01:00
# line 1923 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 168 : {
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
2020-02-28 17:51:32 +01:00
# line 1931 "qmljs.g"
2010-03-29 17:20:38 +02:00
2020-02-28 17:51:32 +01:00
case 169 : {
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
2020-02-28 17:51:32 +01:00
# line 1940 "qmljs.g"
2010-03-29 17:20:38 +02:00
2020-02-28 17:51:32 +01:00
case 170 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1948 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 171 : {
2018-10-16 15:32:58 +02:00
AST : : Elision * node = new ( pool ) AST : : Elision ( ) ;
node - > commaToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1957 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 172 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1966 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 173 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1973 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 174 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . Elision - > finish ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 1980 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 175 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1988 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 176 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 1998 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 177 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2008 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 178 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2019 "qmljs.g"
case 179 : Q_FALLTHROUGH ( ) ;
# line 2021 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 180 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : PatternPropertyList ( sym ( 1 ) . PatternProperty ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2028 "qmljs.g"
case 181 : Q_FALLTHROUGH ( ) ;
# line 2030 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 182 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2038 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 183 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2054 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 185 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2074 "qmljs.g"
case 186 : Q_FALLTHROUGH ( ) ;
# line 2076 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 187 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2094 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 191 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2103 "qmljs.g"
case 192 : Q_FALLTHROUGH ( ) ;
# line 2105 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 193 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2114 "qmljs.g"
case 194 : Q_FALLTHROUGH ( ) ;
# line 2116 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 195 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2167 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 236 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2176 "qmljs.g"
case 237 : Q_FALLTHROUGH ( ) ;
# line 2178 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 238 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) = sym ( 2 ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2186 "qmljs.g"
case 239 : Q_FALLTHROUGH ( ) ;
# line 2188 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 240 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2198 "qmljs.g"
case 243 : Q_FALLTHROUGH ( ) ;
# line 2201 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 244 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 2210 "qmljs.g"
case 245 : Q_FALLTHROUGH ( ) ;
# line 2213 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 246 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 2226 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 248 : {
2018-10-16 15:32:58 +02:00
AST : : SuperLiteral * node = new ( pool ) AST : : SuperLiteral ( ) ;
node - > superToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2236 "qmljs.g"
case 249 : Q_FALLTHROUGH ( ) ;
# line 2238 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 250 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2250 "qmljs.g"
case 251 :
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 ( ) ;
2020-02-28 17:51:32 +01:00
# line 2258 "qmljs.g"
case 252 : Q_FALLTHROUGH ( ) ;
# line 2260 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 253 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2272 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 255 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2288 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 258 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2298 "qmljs.g"
case 259 : Q_FALLTHROUGH ( ) ;
# line 2300 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 260 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2308 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 261 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2318 "qmljs.g"
case 262 : Q_FALLTHROUGH ( ) ;
# line 2320 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 263 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2330 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 264 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2340 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 265 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2350 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 266 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2357 "qmljs.g"
case 267 : Q_FALLTHROUGH ( ) ;
# line 2359 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 268 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . ArgumentList - > finish ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2366 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 269 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : ArgumentList ( sym ( 1 ) . Expression ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2373 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 270 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2382 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 271 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2391 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 272 : {
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
2020-02-28 17:51:32 +01:00
# line 2406 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 276 : {
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
2020-02-28 17:51:32 +01:00
# line 2415 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 277 : {
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
2020-02-28 17:51:32 +01:00
# line 2424 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 278 : {
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
2020-02-28 17:51:32 +01:00
# line 2433 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 279 : {
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
2020-02-28 17:51:32 +01:00
# line 2444 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 281 : {
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
2020-02-28 17:51:32 +01:00
# line 2453 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 282 : {
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
2020-02-28 17:51:32 +01:00
# line 2462 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 283 : {
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
2020-02-28 17:51:32 +01:00
# line 2471 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 284 : {
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
2020-02-28 17:51:32 +01:00
# line 2480 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 285 : {
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
2020-02-28 17:51:32 +01:00
# line 2489 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 286 : {
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
2020-02-28 17:51:32 +01:00
# line 2498 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 287 : {
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
2020-02-28 17:51:32 +01:00
# line 2509 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 289 : {
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
2020-02-28 17:51:32 +01:00
# line 2520 "qmljs.g"
2013-11-06 14:17:23 +01:00
2020-02-28 17:51:32 +01:00
case 291 : {
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
2020-02-28 17:51:32 +01:00
# line 2529 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 292 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Mul ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2536 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 293 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Div ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2543 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 294 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Mod ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2552 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 296 : {
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
2020-02-28 17:51:32 +01:00
# line 2561 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 297 : {
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
2020-02-28 17:51:32 +01:00
# line 2572 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 299 : {
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
2020-02-28 17:51:32 +01:00
# line 2581 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 300 : {
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
2020-02-28 17:51:32 +01:00
# line 2590 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 301 : {
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
2020-02-28 17:51:32 +01:00
# line 2602 "qmljs.g"
case 304 : Q_FALLTHROUGH ( ) ;
# line 2604 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 305 : {
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
2020-02-28 17:51:32 +01:00
# line 2613 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 306 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Lt ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2619 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 307 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Gt ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2625 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 308 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Le ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2631 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 309 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Ge ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2637 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 310 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InstanceOf ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2644 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 311 : {
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
2020-02-28 17:51:32 +01:00
# line 2653 "qmljs.g"
case 312 : Q_FALLTHROUGH ( ) ;
# line 2655 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 313 : {
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( sym ( 1 ) . Expression , QSOperator : : As , sym ( 3 ) . Expression ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 2670 "qmljs.g"
case 318 : Q_FALLTHROUGH ( ) ;
# line 2672 "qmljs.g"
case 319 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2681 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 320 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : Equal ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2687 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 321 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : NotEqual ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2693 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 322 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : StrictEqual ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2699 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 323 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : StrictNotEqual ;
} break ;
2020-02-28 17:51:32 +01:00
# line 2710 "qmljs.g"
case 326 : Q_FALLTHROUGH ( ) ;
# line 2712 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 327 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2725 "qmljs.g"
case 330 : Q_FALLTHROUGH ( ) ;
# line 2727 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 331 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2739 "qmljs.g"
case 334 : Q_FALLTHROUGH ( ) ;
# line 2741 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 335 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2753 "qmljs.g"
case 338 : Q_FALLTHROUGH ( ) ;
# line 2755 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 339 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2767 "qmljs.g"
case 342 : Q_FALLTHROUGH ( ) ;
# line 2769 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 343 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2781 "qmljs.g"
case 346 : Q_FALLTHROUGH ( ) ;
# line 2783 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 347 : {
auto * lhs = sym ( 1 ) . Expression ;
auto * rhs = sym ( 3 ) . Expression ;
// Check if lhs or rhs contain || or &&
if ( lhs - > binaryExpressionCast ( ) ! = nullptr ) {
auto * binaryExpr = lhs - > binaryExpressionCast ( ) ;
if ( binaryExpr - > op = = QSOperator : : And | | binaryExpr - > op = = QSOperator : : Or ) {
syntaxError ( binaryExpr - > operatorToken , " Left-hand side may not contain || or && " ) ;
return false ;
}
}
if ( rhs - > binaryExpressionCast ( ) ! = nullptr ) {
auto * binaryExpr = rhs - > binaryExpressionCast ( ) ;
if ( binaryExpr - > op = = QSOperator : : And | | binaryExpr - > op = = QSOperator : : Or ) {
syntaxError ( binaryExpr - > operatorToken , " Right-hand side may not contain || or && " ) ;
return false ;
}
}
AST : : BinaryExpression * node = new ( pool ) AST : : BinaryExpression ( lhs , QSOperator : : Coalesce , rhs ) ;
node - > operatorToken = loc ( 2 ) ;
sym ( 1 ) . Node = node ;
} break ;
# line 2817 "qmljs.g"
case 350 : Q_FALLTHROUGH ( ) ;
# line 2819 "qmljs.g"
case 351 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 2838 "qmljs.g"
case 358 : Q_FALLTHROUGH ( ) ;
# line 2840 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 359 : {
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 ( ) ) {
2020-02-28 17:51:32 +01:00
SourceLocation errorLoc ;
2018-10-16 15:32:58 +02:00
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
2020-02-28 17:51:32 +01:00
# line 2868 "qmljs.g"
case 360 : Q_FALLTHROUGH ( ) ;
# line 2870 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 361 : {
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
2020-02-28 17:51:32 +01:00
# line 2879 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 362 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceMul ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2886 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 363 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceExp ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2893 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 364 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceDiv ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2900 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 365 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceMod ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2907 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 366 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceAdd ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2914 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 367 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceSub ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2921 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 368 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceLeftShift ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2928 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 369 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceRightShift ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2935 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 370 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceURightShift ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2942 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 371 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceAnd ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2949 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 372 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceXor ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2956 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 373 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . ival = QSOperator : : InplaceOr ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2966 "qmljs.g"
case 376 : Q_FALLTHROUGH ( ) ;
# line 2968 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 377 : {
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
2020-02-28 17:51:32 +01:00
# line 2977 "qmljs.g"
case 378 : Q_FALLTHROUGH ( ) ;
# line 2979 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 379 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-03-03 11:38:33 +01:00
2020-02-28 17:51:32 +01:00
# line 2991 "qmljs.g"
2010-03-31 15:40:28 +02:00
2020-02-28 17:51:32 +01:00
case 382 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 3 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 2998 "qmljs.g"
case 383 : Q_FALLTHROUGH ( ) ;
# line 3000 "qmljs.g"
case 384 : Q_FALLTHROUGH ( ) ;
# line 3002 "qmljs.g"
case 385 : Q_FALLTHROUGH ( ) ;
# line 3004 "qmljs.g"
case 386 : Q_FALLTHROUGH ( ) ;
# line 3006 "qmljs.g"
case 387 : Q_FALLTHROUGH ( ) ;
# line 3008 "qmljs.g"
case 388 : Q_FALLTHROUGH ( ) ;
# line 3010 "qmljs.g"
case 389 : Q_FALLTHROUGH ( ) ;
# line 3012 "qmljs.g"
case 390 : Q_FALLTHROUGH ( ) ;
# line 3014 "qmljs.g"
case 391 : Q_FALLTHROUGH ( ) ;
# line 3016 "qmljs.g"
case 392 : Q_FALLTHROUGH ( ) ;
# line 3018 "qmljs.g"
case 393 : Q_FALLTHROUGH ( ) ;
# line 3020 "qmljs.g"
case 394 : Q_FALLTHROUGH ( ) ;
# line 3022 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 395 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3044 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 406 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3056 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 408 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = sym ( 1 ) . StatementList - > append ( sym ( 2 ) . StatementList ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3063 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 409 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = new ( pool ) AST : : StatementList ( sym ( 1 ) . Statement ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3070 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 410 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : StatementList ( sym ( 3 ) . FunctionDeclaration ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3077 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 411 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3084 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 412 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . StatementList - > finish ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3091 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 413 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . scope = AST : : VariableScope : : Let ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3097 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 414 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . scope = AST : : VariableScope : : Const ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3104 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 415 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . scope = AST : : VariableScope : : Var ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3111 "qmljs.g"
case 416 : Q_FALLTHROUGH ( ) ;
# line 3113 "qmljs.g"
case 417 : Q_FALLTHROUGH ( ) ;
# line 3115 "qmljs.g"
case 418 : Q_FALLTHROUGH ( ) ;
# line 3117 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 419 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3135 "qmljs.g"
case 421 : Q_FALLTHROUGH ( ) ;
# line 3137 "qmljs.g"
case 422 : Q_FALLTHROUGH ( ) ;
# line 3139 "qmljs.g"
case 423 : Q_FALLTHROUGH ( ) ;
# line 3141 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 424 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : VariableDeclarationList ( sym ( 1 ) . PatternElement ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3148 "qmljs.g"
case 425 : Q_FALLTHROUGH ( ) ;
# line 3150 "qmljs.g"
case 426 : Q_FALLTHROUGH ( ) ;
# line 3152 "qmljs.g"
case 427 : Q_FALLTHROUGH ( ) ;
# line 3154 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 428 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3163 "qmljs.g"
case 429 : Q_FALLTHROUGH ( ) ;
# line 3165 "qmljs.g"
case 430 : Q_FALLTHROUGH ( ) ;
# line 3167 "qmljs.g"
case 431 : Q_FALLTHROUGH ( ) ;
# line 3169 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 432 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3183 "qmljs.g"
case 433 : Q_FALLTHROUGH ( ) ;
# line 3185 "qmljs.g"
case 434 : Q_FALLTHROUGH ( ) ;
# line 3187 "qmljs.g"
case 435 : Q_FALLTHROUGH ( ) ;
# line 3189 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 436 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3198 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 437 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3209 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 438 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3220 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 439 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3227 "qmljs.g"
case 440 :
# line 3229 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 441 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . PatternPropertyList - > finish ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3236 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 442 : {
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
2020-02-28 17:51:32 +01:00
# line 3248 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 443 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . PatternElementList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 3255 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 444 : {
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
2020-02-28 17:51:32 +01:00
# line 3267 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 445 : {
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
2020-02-28 17:51:32 +01:00
# line 3274 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 446 : {
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
2020-02-28 17:51:32 +01:00
# line 3283 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 448 : {
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
2020-02-28 17:51:32 +01:00
# line 3290 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 449 : {
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
2020-02-28 17:51:32 +01:00
# line 3298 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 450 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3312 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 451 : {
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
2020-02-28 17:51:32 +01:00
# line 3320 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 452 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3328 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 453 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3342 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 454 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3350 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 455 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3359 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 456 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3367 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 457 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3377 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 459 : {
2018-10-16 15:32:58 +02:00
AST : : EmptyStatement * node = new ( pool ) AST : : EmptyStatement ( ) ;
node - > semicolonToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3392 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 460 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3403 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 461 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3412 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 462 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3424 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 463 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3437 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 465 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3450 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 466 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3461 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 467 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3474 "qmljs.g"
case 468 : Q_FALLTHROUGH ( ) ;
# line 3476 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 469 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3492 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 470 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . forEachType = AST : : ForEachType : : In ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3499 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 471 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . forEachType = AST : : ForEachType : : Of ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3506 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 472 : {
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 ( ) ) {
2020-02-28 17:51:32 +01:00
SourceLocation errorLoc ;
2018-10-16 15:32:58 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3528 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 473 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3541 "qmljs.g"
case 474 : Q_FALLTHROUGH ( ) ;
# line 3543 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 475 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3558 "qmljs.g"
case 476 : Q_FALLTHROUGH ( ) ;
# line 3560 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 477 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3570 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 478 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3580 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 479 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3591 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 480 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3601 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 481 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3612 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 482 : {
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
2020-02-28 17:51:32 +01:00
# line 3626 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 483 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3637 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 484 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3648 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 485 : {
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
2020-02-28 17:51:32 +01:00
# line 3658 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 486 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3668 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 487 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : CaseClauses ( sym ( 1 ) . CaseClause ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3675 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 488 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = new ( pool ) AST : : CaseClauses ( sym ( 1 ) . CaseClauses , sym ( 2 ) . CaseClause ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3682 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 489 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3689 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 490 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . CaseClauses - > finish ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3696 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 491 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3706 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 492 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3716 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 493 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3728 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 495 : {
2018-10-16 15:32:58 +02:00
syntaxError ( loc ( 3 ) , " FunctionDeclarations are not allowed after a label. " ) ;
return false ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3736 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 496 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3746 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 497 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3755 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 498 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3764 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 499 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3773 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 500 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3785 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 501 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3794 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 502 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3804 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 503 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3813 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 504 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3830 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 506 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3847 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 507 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3863 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 509 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3879 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 510 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3897 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 511 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 3915 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 513 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3922 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 514 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3930 "qmljs.g"
case 515 :
# line 3932 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 516 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 1 ) . FormalParameterList - > finish ( pool ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3939 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 517 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3947 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 518 : {
2018-10-16 15:32:58 +02:00
AST : : FormalParameterList * node = new ( pool ) AST : : FormalParameterList ( nullptr , sym ( 1 ) . PatternElement ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3956 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 519 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 3966 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 521 : {
2018-10-16 15:32:58 +02:00
+ + functionNestingLevel ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3973 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 522 : {
2018-10-16 15:32:58 +02:00
- - functionNestingLevel ;
} break ;
2020-02-28 17:51:32 +01:00
# line 3983 "qmljs.g"
case 524 : Q_FALLTHROUGH ( ) ;
# line 3985 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 525 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4001 "qmljs.g"
case 526 : Q_FALLTHROUGH ( ) ;
# line 4003 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 527 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4015 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 528 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4026 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 529 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4044 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 530 : {
2018-10-16 15:32:58 +02:00
if ( lookaheadToken ( lexer ) = = T_LBRACE )
pushToken ( T_FORCE_BLOCK ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 4052 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 531 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4069 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 532 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4088 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 533 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4105 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 534 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4123 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 535 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4131 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 536 : {
2018-10-16 15:32:58 +02:00
lexer - > enterGeneratorBody ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 4138 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 537 : {
2018-10-16 15:32:58 +02:00
- - functionNestingLevel ;
lexer - > leaveGeneratorBody ( ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 4148 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 539 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4164 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 541 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4178 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 542 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4194 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 543 : {
2019-10-04 16:11:02 +02:00
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 ;
2020-02-28 17:51:32 +01:00
# line 4210 "qmljs.g"
case 545 : Q_FALLTHROUGH ( ) ;
# line 4212 "qmljs.g"
2019-10-04 16:11:02 +02:00
2020-02-28 17:51:32 +01:00
case 546 : {
2018-10-16 15:32:58 +02:00
AST : : YieldExpression * node = new ( pool ) AST : : YieldExpression ( ) ;
node - > yieldToken = loc ( 1 ) ;
sym ( 1 ) . Node = node ;
} break ;
2020-02-28 17:51:32 +01:00
# line 4221 "qmljs.g"
case 547 : Q_FALLTHROUGH ( ) ;
# line 4223 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 548 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4233 "qmljs.g"
case 549 : Q_FALLTHROUGH ( ) ;
# line 4235 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 550 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4245 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 551 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4257 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 552 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4269 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 553 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4280 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 554 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4293 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 556 : {
2018-10-16 15:32:58 +02:00
lexer - > setStaticIsKeyword ( true ) ;
} break ;
2020-02-28 17:51:32 +01:00
# line 4300 "qmljs.g"
case 557 :
# line 4302 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 558 : {
2018-10-16 15:32:58 +02:00
lexer - > setStaticIsKeyword ( false ) ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4309 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 559 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2020-02-28 17:51:32 +01:00
# line 4316 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 560 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = sym ( 2 ) . Node ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4323 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 561 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4330 "qmljs.g"
2017-12-20 10:47:33 +01:00
2020-02-28 17:51:32 +01:00
case 562 : {
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
2020-02-28 17:51:32 +01:00
# line 4340 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 564 : {
2019-10-04 16:11:02 +02:00
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
2020-02-28 17:51:32 +01:00
# line 4352 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 565 : {
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
2020-02-28 17:51:32 +01:00
# line 4360 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 566 : {
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
2020-02-28 17:51:32 +01:00
# line 4369 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 567 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4378 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 568 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . Node = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4387 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 570 : {
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
2020-02-28 17:51:32 +01:00
# line 4394 "qmljs.g"
case 571 : {
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
2020-02-28 17:51:32 +01:00
# line 4400 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 572 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = sym ( 1 ) . StatementList - > finish ( ) ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4407 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 573 : {
2018-10-16 15:32:58 +02:00
sym ( 1 ) . StatementList = nullptr ;
} break ;
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
# line 4417 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 576 : {
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
2020-02-28 17:51:32 +01:00
# line 4425 "qmljs.g"
case 577 : Q_FALLTHROUGH ( ) ;
# line 4427 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 578 : {
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
2020-02-28 17:51:32 +01:00
# line 4436 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 580 : {
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
2020-02-28 17:51:32 +01:00
# line 4444 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 581 : {
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
2020-02-28 17:51:32 +01:00
# line 4454 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 582 : {
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
2020-02-28 17:51:32 +01:00
# line 4462 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 583 : {
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
2020-02-28 17:51:32 +01:00
# line 4468 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 584 : {
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
2020-02-28 17:51:32 +01:00
# line 4474 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 585 : {
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
2020-02-28 17:51:32 +01:00
# line 4482 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 586 : {
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
2020-02-28 17:51:32 +01:00
# line 4493 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 588 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4503 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 589 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4512 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 590 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4521 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 591 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4531 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 592 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4541 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 593 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4549 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 594 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4561 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 595 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4569 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 596 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4586 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 599 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4595 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 600 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4603 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 601 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4611 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 602 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4619 "qmljs.g"
case 603 : Q_FALLTHROUGH ( ) ;
# line 4621 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 604 : {
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 ;
2020-02-28 17:51:32 +01:00
# line 4629 "qmljs.g"
2018-10-16 15:32:58 +02:00
2020-02-28 17:51:32 +01:00
case 605 : {
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
2020-02-28 17:51:32 +01:00
# line 4640 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 606 : {
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
2020-02-28 17:51:32 +01:00
# line 4656 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 607 : {
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
2020-02-28 17:51:32 +01:00
# line 4673 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 608 : {
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
2020-02-28 17:51:32 +01:00
# line 4682 "qmljs.g"
2013-11-06 14:17:23 +01:00
2020-02-28 17:51:32 +01:00
case 609 : {
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
2020-02-28 17:51:32 +01:00
# line 4691 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 610 : {
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
2020-02-28 17:51:32 +01:00
# line 4701 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 611 : {
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
2020-02-28 17:51:32 +01:00
# line 4707 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 612 : {
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
2020-02-28 17:51:32 +01:00
# line 4714 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 613 : {
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
2020-02-28 17:51:32 +01:00
# line 4722 "qmljs.g"
2010-01-18 13:13:34 +01:00
2020-02-28 17:51:32 +01:00
case 614 : {
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
2020-02-28 17:51:32 +01:00
# line 4733 "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 ;
2020-02-28 17:51:32 +01:00
//const QString msg = QCoreApplication::translate("QmlParser", "Missing `;'");
//diagnostic_messages.append(compileError(yyloc, msg, QtWarningMsg));
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 )
2020-02-28 17:51:32 +01:00
msg = QCoreApplication : : translate ( " QmlParser " , " Syntax error " ) ;
2010-01-21 16:47:46 +01:00
else
2020-02-28 17:51:32 +01:00
msg = QCoreApplication : : translate ( " QmlParser " , " Unexpected token `%1' " ) . arg ( QLatin1String ( spell [ token ] ) ) ;
2019-10-04 16:11:02 +02:00
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
2020-02-28 17:51:32 +01:00
const QString msg = QCoreApplication : : translate ( " QmlParser " , " Expected token `%1' " ) . arg ( QLatin1String ( spell [ * tk ] ) ) ;
2019-10-04 16:11:02 +02:00
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 ) ) {
2020-02-28 17:51:32 +01:00
const QString msg = QCoreApplication : : translate ( " QmlParser " , " Expected token `%1' " ) . arg ( QLatin1String ( spell [ tk ] ) ) ;
2019-10-04 16:11:02 +02:00
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 ;
}
}
2020-02-28 17:51:32 +01:00
const QString msg = QCoreApplication : : translate ( " QmlParser " , " Syntax error " ) ;
2019-10-04 16:11:02 +02:00
diagnostic_messages . append ( compileError ( token_buffer [ 0 ] . loc , msg ) ) ;
2010-01-18 13:13:34 +01:00
}
return false ;
}
QT_QML_END_NAMESPACE