diff options
author | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2021-07-06 23:50:30 +0200 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2021-07-20 09:02:15 +0000 |
commit | af88a7876b50ed9dd71e3fc7614eef5998908d03 (patch) | |
tree | 8d8345ea2962a11579b3802ce68df6732c290674 /src/libs | |
parent | dc654cfcba7f1c446ea1bd32e326d3f8c747cf4f (diff) |
qmljs: update Qml parser to parser of Qt 6.2
this is needed (among other things) for
* null coalescing
* shebang support
Change-Id: I1b37fd86593f143de8b39c0daf433831a8785568
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/libs')
32 files changed, 3748 insertions, 3394 deletions
diff --git a/src/libs/qmljs/CMakeLists.txt b/src/libs/qmljs/CMakeLists.txt index ebb985daf8..bf06a2a88d 100644 --- a/src/libs/qmljs/CMakeLists.txt +++ b/src/libs/qmljs/CMakeLists.txt @@ -4,6 +4,7 @@ add_qtc_library(QmlJS SOURCES jsoncheck.cpp jsoncheck.h parser/qmldirparser.cpp parser/qmldirparser_p.h + parser/qmlimportresolver.cpp parser/qmlimportresolver_p.h parser/qmljsast.cpp parser/qmljsast_p.h parser/qmljsastfwd_p.h parser/qmljsastvisitor.cpp parser/qmljsastvisitor_p.h diff --git a/src/libs/qmljs/parser/parser.pri b/src/libs/qmljs/parser/parser.pri index 0694a5188b..d27091628c 100644 --- a/src/libs/qmljs/parser/parser.pri +++ b/src/libs/qmljs/parser/parser.pri @@ -3,6 +3,7 @@ HEADERS += \ $$PWD/qmljsastfwd_p.h \ $$PWD/qmljsastvisitor_p.h \ $$PWD/qmljsengine_p.h \ + $$PWD/qmlimportresolver_p.h \ $$PWD/qmljslexer_p.h \ $$PWD/qmljsglobal_p.h \ $$PWD/qmljssourcelocation_p.h \ @@ -16,6 +17,7 @@ SOURCES += \ $$PWD/qmljsast.cpp \ $$PWD/qmljsastvisitor.cpp \ $$PWD/qmljsengine_p.cpp \ + $$PWD/qmlimportresolver.cpp \ $$PWD/qmljslexer.cpp \ $$PWD/qmldirparser.cpp \ $$PWD/qmljsgrammar.cpp \ diff --git a/src/libs/qmljs/parser/qmldirparser.cpp b/src/libs/qmljs/parser/qmldirparser.cpp index 88a5b5f6ab..f8bce96962 100644 --- a/src/libs/qmljs/parser/qmldirparser.cpp +++ b/src/libs/qmljs/parser/qmldirparser.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -102,7 +102,7 @@ void QmlDirParser::clear() _plugins.clear(); _designerSupported = false; _typeInfos.clear(); - _className.clear(); + _classNames.clear(); } inline static void scanSpace(const QChar *&ch) { @@ -258,7 +258,6 @@ bool QmlDirParser::parse(const QString &source) "not %1.").arg(sections[1])); continue; } - } else if (sections[0] == QLatin1String("classname")) { if (sectionCount < 2) { reportError(lineNumber, 0, @@ -267,7 +266,7 @@ bool QmlDirParser::parse(const QString &source) continue; } - _className = sections[1]; + _classNames.append(sections[1]); } else if (sections[0] == QLatin1String("internal")) { if (sectionCount != 3) { @@ -308,19 +307,38 @@ bool QmlDirParser::parse(const QString &source) QStringLiteral("typeinfo requires 1 argument, but %1 were provided").arg(sectionCount - 1)); continue; } -#ifdef QT_CREATOR - TypeInfo typeInfo(sections[1]); - _typeInfos.append(typeInfo); -#endif - + _typeInfos.append(sections[1]); } else if (sections[0] == QLatin1String("designersupported")) { if (sectionCount != 1) reportError(lineNumber, 0, QStringLiteral("designersupported does not expect any argument")); else _designerSupported = true; - } else if (sections[0] == QLatin1String("depends") || sections[0] == QLatin1String("import")) { + } else if (sections[0] == QLatin1String("import") + || sections[0] == QLatin1String("depends")) { if (!readImport(sections, sectionCount, Import::Default)) continue; + } else if (sections[0] == QLatin1String("prefer")) { + if (sectionCount < 2) { + reportError(lineNumber, 0, + QStringLiteral("prefer directive requires one argument, " + "but %1 were provided").arg(sectionCount - 1)); + continue; + } + + if (!_preferredPath.isEmpty()) { + reportError(lineNumber, 0, QStringLiteral( + "only one prefer directive may be defined in a qmldir file")); + continue; + } + + if (!sections[1].endsWith(u'/')) { + // Yes. People should realize it's a directory. + reportError(lineNumber, 0, QStringLiteral( + "the preferred directory has to end with a '/'")); + continue; + } + + _preferredPath = sections[1]; } else if (sectionCount == 2) { // No version specified (should only be used for relative qmldir files) const Component entry(sections[0], sections[1], -1, -1); @@ -361,14 +379,6 @@ void QmlDirParser::reportError(quint16 line, quint16 column, const QString &desc _errors.append(error); } -bool QmlDirParser::hasError() const -{ - if (! _errors.isEmpty()) - return true; - - return false; -} - void QmlDirParser::setError(const QmlJS::DiagnosticMessage &e) { _errors.clear(); @@ -388,56 +398,6 @@ QList<QmlJS::DiagnosticMessage> QmlDirParser::errors(const QString &uri) const return errors; } -QString QmlDirParser::typeNamespace() const -{ - return _typeNamespace; -} - -void QmlDirParser::setTypeNamespace(const QString &s) -{ - _typeNamespace = s; -} - -QList<QmlDirParser::Plugin> QmlDirParser::plugins() const -{ - return _plugins; -} - -QMultiHash<QString, QmlDirParser::Component> QmlDirParser::components() const -{ - return _components; -} - -QList<QmlDirParser::Import> QmlDirParser::dependencies() const -{ - return _dependencies; -} - -QList<QmlDirParser::Import> QmlDirParser::imports() const -{ - return _imports; -} - -QList<QmlDirParser::Script> QmlDirParser::scripts() const -{ - return _scripts; -} - -QList<QmlDirParser::TypeInfo> QmlDirParser::typeInfos() const -{ - return _typeInfos; -} - -bool QmlDirParser::designerSupported() const -{ - return _designerSupported; -} - -QString QmlDirParser::className() const -{ - return _className; -} - QDebug &operator<< (QDebug &debug, const QmlDirParser::Component &component) { const QString output = QStringLiteral("{%1 %2.%3}"). diff --git a/src/libs/qmljs/parser/qmldirparser_p.h b/src/libs/qmljs/parser/qmldirparser_p.h index 5576cfa515..21315fd71c 100644 --- a/src/libs/qmljs/parser/qmldirparser_p.h +++ b/src/libs/qmljs/parser/qmldirparser_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -55,12 +55,12 @@ public: void clear(); bool parse(const QString &source); - bool hasError() const; + bool hasError() const { return !_errors.isEmpty(); } void setError(const QmlJS::DiagnosticMessage &); QList<QmlJS::DiagnosticMessage> errors(const QString &uri) const; - QString typeNamespace() const; - void setTypeNamespace(const QString &s); + QString typeNamespace() const { return _typeNamespace; } + void setTypeNamespace(const QString &s) { _typeNamespace = s; } static void checkNonRelative(const char *item, const QString &typeName, const QString &fileName) { @@ -141,25 +141,16 @@ public: Flags flags; }; - QMultiHash<QString,Component> components() const; - QList<Import> dependencies() const; - QList<Import> imports() const; - QList<Script> scripts() const; - QList<Plugin> plugins() const; - bool designerSupported() const; + QMultiHash<QString,Component> components() const { return _components; } + QList<Import> dependencies() const { return _dependencies; } + QList<Import> imports() const { return _imports; } + QList<Script> scripts() const { return _scripts; } + QList<Plugin> plugins() const { return _plugins; } + bool designerSupported() const { return _designerSupported; } - struct TypeInfo - { - TypeInfo() = default; - TypeInfo(const QString &fileName) - : fileName(fileName) {} - - QString fileName; - }; - - QList<TypeInfo> typeInfos() const; - - QString className() const; + QStringList typeInfos() const { return _typeInfos; } + QStringList classNames() const { return _classNames; } + QString preferredPath() const { return _preferredPath; } private: bool maybeAddComponent(const QString &typeName, const QString &fileName, const QString &version, QHash<QString,Component> &hash, int lineNumber = -1, bool multi = true); @@ -168,19 +159,21 @@ private: private: QList<QmlJS::DiagnosticMessage> _errors; QString _typeNamespace; + QString _preferredPath; QMultiHash<QString,Component> _components; QList<Import> _dependencies; QList<Import> _imports; QList<Script> _scripts; QList<Plugin> _plugins; bool _designerSupported = false; - QList<TypeInfo> _typeInfos; - QString _className; + QStringList _typeInfos; + QStringList _classNames; }; using QmlDirComponents = QMultiHash<QString,QmlDirParser::Component>; using QmlDirScripts = QList<QmlDirParser::Script>; using QmlDirPlugins = QList<QmlDirParser::Plugin>; +using QmlDirImports = QList<QmlDirParser::Import>; QDebug &operator<< (QDebug &, const QmlDirParser::Component &); QDebug &operator<< (QDebug &, const QmlDirParser::Script &); diff --git a/src/libs/qmljs/parser/qmlimportresolver.cpp b/src/libs/qmljs/parser/qmlimportresolver.cpp new file mode 100644 index 0000000000..e74c5840c1 --- /dev/null +++ b/src/libs/qmljs/parser/qmlimportresolver.cpp @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** 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 +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "qmlimportresolver_p.h" + +QT_QML_BEGIN_NAMESPACE + +enum ImportVersion { FullyVersioned, PartiallyVersioned, Unversioned }; + +/*! + Forms complete paths to a module, from a list of base paths, + a module URI and version specification. + + For example, QtQml.Models 2.0: + - base/QtQml/Models.2.0 + - base/QtQml.2.0/Models + - base/QtQml/Models.2 + - base/QtQml.2/Models + - base/QtQml/Models +*/ +QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths, + LanguageUtils::ComponentVersion version) +{ + static const QLatin1Char Slash('/'); + static const QLatin1Char Backslash('\\'); + + const QList<QStringView> parts = uri.split(u'.', Qt::SkipEmptyParts); + + QStringList importPaths; + // fully & partially versioned parts + 1 unversioned for each base path + importPaths.reserve(2 * parts.count() + 1); + + auto versionString = [](LanguageUtils::ComponentVersion version, ImportVersion mode) + { + if (mode == FullyVersioned) { + // extension with fully encoded version number (eg. MyModule.3.2) + return QString::fromLatin1(".%1.%2").arg(version.majorVersion()) + .arg(version.minorVersion()); + } + if (mode == PartiallyVersioned) { + // extension with encoded version major (eg. MyModule.3) + return QString::fromLatin1(".%1").arg(version.majorVersion()); + } + // else extension without version number (eg. MyModule) + return QString(); + }; + + auto joinStringRefs = [](const QList<QStringView> &refs, const QChar &sep) { + QString str; + for (auto it = refs.cbegin(); it != refs.cend(); ++it) { + if (it != refs.cbegin()) + str += sep; + str += *it; + } + return str; + }; + + const ImportVersion initial = ((version.minorVersion() >= 0) + ? FullyVersioned + : ((version.majorVersion() >= 0) ? PartiallyVersioned : Unversioned)); + for (int mode = initial; mode <= Unversioned; ++mode) { + const QString ver = versionString(version, ImportVersion(mode)); + + for (const QString &path : basePaths) { + QString dir = path; + if (!dir.endsWith(Slash) && !dir.endsWith(Backslash)) + dir += Slash; + + // append to the end + importPaths += dir + joinStringRefs(parts, Slash) + ver; + + if (mode != Unversioned) { + // insert in the middle + for (int index = parts.count() - 2; index >= 0; --index) { + importPaths += dir + joinStringRefs(parts.mid(0, index + 1), Slash) + + ver + Slash + + joinStringRefs(parts.mid(index + 1), Slash); + } + } + } + } + + return importPaths; +} + +QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmlimportresolver_p.h b/src/libs/qmljs/parser/qmlimportresolver_p.h new file mode 100644 index 0000000000..68c052d408 --- /dev/null +++ b/src/libs/qmljs/parser/qmlimportresolver_p.h @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** 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 +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qmljs/parser/qmljsglobal_p.h" + +#include "qmljsglobal_p.h" +#include <QtCore/qstring.h> +#include <languageutils/componentversion.h> + +QT_QML_BEGIN_NAMESPACE + +QML_PARSER_EXPORT QStringList qQmlResolveImportPaths(QStringView uri, const QStringList &basePaths, + LanguageUtils::ComponentVersion version); + +QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljs.g b/src/libs/qmljs/parser/qmljs.g index 262a489060..ae79830d2e 100644 --- a/src/libs/qmljs/parser/qmljs.g +++ b/src/libs/qmljs/parser/qmljs.g @@ -81,6 +81,7 @@ %token T_COMPATIBILITY_SEMICOLON %token T_ARROW "=>" %token T_QUESTION_QUESTION "??" +%token T_QUESTION_DOT "?." %token T_ENUM "enum" %token T_ELLIPSIS "..." %token T_YIELD "yield" @@ -835,18 +836,32 @@ UiImport: UiImportHead Semicolon; UiVersionSpecifier: T_VERSION_NUMBER T_DOT T_VERSION_NUMBER; /. case $rule_number: { - auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval, sym(3).dval); + const int major = sym(1).dval; + const int minor = sym(3).dval; + if (major < 0 || major >= 255 || minor < 0 || minor >= 255) { + diagnostic_messages.append( + compileError(loc(1), + QLatin1String("Invalid version. Version numbers must be >= 0 and < 255."))); + return false; + } + auto version = new (pool) AST::UiVersionSpecifier(major, minor); version->majorToken = loc(1); version->minorToken = loc(3); sym(1).UiVersionSpecifier = version; } break; ./ - UiVersionSpecifier: T_VERSION_NUMBER; /. case $rule_number: { - auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval, 0); + const int major = sym(1).dval; + if (major < 0 || major >= 255) { + diagnostic_messages.append( + compileError(loc(1), + QLatin1String("Invalid major version. Version numbers must be >= 0 and < 255."))); + return false; + } + auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval); version->majorToken = loc(1); sym(1).UiVersionSpecifier = version; } break; @@ -1320,6 +1335,7 @@ UiObjectMember: T_DEFAULT UiObjectMemberPropertyNoInitialiser; } break; ./ + UiObjectMember: T_REQUIRED UiObjectMemberListPropertyNoInitialiser; /. case $rule_number: { @@ -2277,7 +2293,16 @@ MemberExpression: MemberExpression T_LBRACKET Expression_In T_RBRACKET; sym(1).Node = node; } break; ./ - +MemberExpression: MemberExpression T_QUESTION_DOT T_LBRACKET Expression_In T_RBRACKET; +/. + case $rule_number: { + AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); + node->lbracketToken = loc(3); + node->rbracketToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; +./ -- the identifier has to be "target", catched at codegen time NewTarget: T_NEW T_DOT T_IDENTIFIER; @@ -2300,6 +2325,17 @@ MemberExpression: MemberExpression T_DOT IdentifierName; } break; ./ +MemberExpression: MemberExpression T_QUESTION_DOT IdentifierName; +/. + case $rule_number: { + AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + node->isOptional = true; + sym(1).Node = node; + } break; +./ + MemberExpression: MetaProperty; MemberExpression: T_NEW MemberExpression T_LPAREN Arguments T_RPAREN; @@ -2348,6 +2384,17 @@ CallExpression: MemberExpression T_LPAREN Arguments T_RPAREN; } break; ./ +CallExpression: MemberExpression T_QUESTION_DOT T_LPAREN Arguments T_RPAREN; +/. + case $rule_number: { + AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; +./ + CallExpression: Super T_LPAREN Arguments T_RPAREN; /. case $rule_number: Q_FALLTHROUGH(); ./ CallExpression: CallExpression T_LPAREN Arguments T_RPAREN; @@ -2360,6 +2407,18 @@ CallExpression: CallExpression T_LPAREN Arguments T_RPAREN; } break; ./ +CallExpression: CallExpression T_QUESTION_DOT T_LPAREN Arguments T_RPAREN; +/. + case $rule_number: { + AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; +./ + + CallExpression: CallExpression T_LBRACKET Expression_In T_RBRACKET; /. case $rule_number: { @@ -2370,6 +2429,17 @@ CallExpression: CallExpression T_LBRACKET Expression_In T_RBRACKET; } break; ./ +CallExpression: CallExpression T_QUESTION_DOT T_LBRACKET Expression_In T_RBRACKET; +/. + case $rule_number: { + AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); + node->lbracketToken = loc(3); + node->rbracketToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; +./ + CallExpression: CallExpression T_DOT IdentifierName; /. case $rule_number: { @@ -2380,6 +2450,17 @@ CallExpression: CallExpression T_DOT IdentifierName; } break; ./ +CallExpression: CallExpression T_QUESTION_DOT IdentifierName; +/. + case $rule_number: { + AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + node->isOptional = true; + sym(1).Node = node; + } break; +./ + Arguments: ; /. case $rule_number: { @@ -2673,30 +2754,22 @@ RelationalOperator: T_INSTANCEOF; sym(1).ival = QSOperator::InstanceOf; } break; ./ - -RelationalExpression_In: RelationalExpression_In T_IN ShiftExpression; +RelationalOperator: T_AS; /. case $rule_number: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; + sym(1).ival = QSOperator::As; } break; ./ -TypeAssertExpression_In: RelationalExpression_In T_AS Type; -/. case $rule_number: Q_FALLTHROUGH(); ./ -TypeAssertExpression: RelationalExpression T_AS Type; +RelationalExpression_In: RelationalExpression_In T_IN ShiftExpression; /. case $rule_number: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::As, sym(3).Expression); + AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; ./ -RelationalExpression_In: TypeAssertExpression_In; -RelationalExpression: TypeAssertExpression; - EqualityExpression_In: RelationalExpression_In; EqualityExpression: RelationalExpression; @@ -2873,6 +2946,9 @@ AssignmentExpression: LeftHandSideExpression T_EQ AssignmentExpression; AssignmentExpression_In: LeftHandSideExpression T_EQ AssignmentExpression_In; /. case $rule_number: { + if (sym(1).Expression->containsOptionalChain()) { + syntaxError(loc(1), QStringLiteral("Optional chains are not permitted on the left-hand-side in assignments")); + } // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral if (AST::Pattern *p = sym(1).Expression->patternCast()) { SourceLocation errorLoc; @@ -2903,6 +2979,9 @@ AssignmentExpression: LeftHandSideExpression AssignmentOperator AssignmentExpres AssignmentExpression_In: LeftHandSideExpression AssignmentOperator AssignmentExpression_In; /. case $rule_number: { + if (sym(1).Expression->containsOptionalChain()) { + syntaxError(loc(1), QStringLiteral("Optional chains are not permitted on the left-hand-side in assignments")); + } AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; @@ -4019,15 +4098,14 @@ ArrowFunction_In: ArrowParameters T_ARROW ConciseBodyLookahead AssignmentExpress /. case $rule_number: { AST::ReturnStatement *ret = new (pool) AST::ReturnStatement(sym(4).Expression); - ret->returnToken = sym(4).Node->firstSourceLocation().zeroLength(); - ret->semicolonToken = sym(4).Node->lastSourceLocation().zeroLengthEnd(driver->code()); + ret->returnToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); + ret->semicolonToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation(driver->code()); AST::StatementList *statements = (new (pool) AST::StatementList(ret))->finish(); - AST::FunctionExpression *f = new (pool) - AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, statements); + AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, statements); f->isArrowFunction = true; - f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().zeroLength() : loc(1).zeroLength(); - f->lbraceToken = sym(4).Node->firstSourceLocation().zeroLength(); - f->rbraceToken = sym(4).Node->lastSourceLocation().zeroLengthEnd(driver->code()); + f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); + f->lbraceToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); + f->rbraceToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation(driver->code()); sym(1).Node = f; } break; ./ @@ -4039,8 +4117,8 @@ ArrowFunction_In: ArrowParameters T_ARROW ConciseBodyLookahead T_FORCE_BLOCK Fun case $rule_number: { AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, sym(6).StatementList); f->isArrowFunction = true; - f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().zeroLength() : loc(1).zeroLength(); - f->lbraceToken = loc(5); + f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); + f->lbraceToken = loc(6); f->rbraceToken = loc(7); sym(1).Node = f; } break; diff --git a/src/libs/qmljs/parser/qmljsast.cpp b/src/libs/qmljs/parser/qmljsast.cpp index af12c480d3..fd99d9e4d5 100644 --- a/src/libs/qmljs/parser/qmljsast.cpp +++ b/src/libs/qmljs/parser/qmljsast.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -23,11 +23,11 @@ ** ****************************************************************************/ +#include <QLocale> #include "qmljsast_p.h" #include "qmljsastvisitor_p.h" - -#include <QLocale> +#include <qlocale.h> QT_QML_BEGIN_NAMESPACE @@ -104,6 +104,44 @@ ExpressionNode *ExpressionNode::expressionCast() return this; } +bool ExpressionNode::containsOptionalChain() const +{ + for (const Node *node = this;;) { + switch (node->kind) { + case Kind_FieldMemberExpression: { + const auto *fme = AST::cast<const FieldMemberExpression*>(node); + if (fme->isOptional) + return true; + node = fme->base; + break; + } + case Kind_ArrayMemberExpression: { + const auto *ame = AST::cast<const ArrayMemberExpression*>(node); + if (ame->isOptional) + return true; + node = ame->base; + break; + } + case Kind_CallExpression: { + const auto *ce = AST::cast<const CallExpression*>(node); + if (ce->isOptional) + return true; + node = ce->base; + break; + } + case Kind_NestedExpression: { + const auto *ne = AST::cast<const NestedExpression*>(node); + node = ne->expression; + break; + } + default: + // These unhandled nodes lead to invalid lvalues anyway, so they do not need to be handled here. + return false; + } + } + return false; +} + FormalParameterList *ExpressionNode::reparseAsFormalParameterList(MemoryPool *pool) { AST::ExpressionNode *expr = this; @@ -145,6 +183,12 @@ BinaryExpression *BinaryExpression::binaryExpressionCast() return this; } +void TypeExpression::accept0(BaseVisitor *visitor) +{ + visitor->visit(this); + visitor->endVisit(this); +} + Statement *Statement::statementCast() { return this; @@ -989,7 +1033,13 @@ BoundNames FormalParameterList::formals() const // change the name of the earlier argument to enforce the lookup semantics from the spec formals[duplicateIndex].id += QLatin1String("#") + QString::number(i); } - formals += {name, it->element->typeAnnotation}; + formals += { + name, + it->element->typeAnnotation, + it->element->isInjectedSignalParameter + ? BoundName::Injected + : BoundName::Declared + }; } ++i; } @@ -1392,7 +1442,8 @@ void PatternElement::boundNames(BoundNames *names) else if (PatternPropertyList *p = propertyList()) p->boundNames(names); } else { - names->append({bindingIdentifier.toString(), typeAnnotation}); + names->append({bindingIdentifier.toString(), typeAnnotation, + isInjectedSignalParameter ? BoundName::Injected : BoundName::Declared}); } } @@ -1531,7 +1582,7 @@ QString Type::toString() const void Type::toString(QString *out) const { for (QmlJS::AST::UiQualifiedId *it = typeId; it; it = it->next) { - out->append(it->name.toString()); + out->append(it->name); if (it->next) out->append(QLatin1Char('.')); diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h index 9086b981fa..a2ddcea594 100644 --- a/src/libs/qmljs/parser/qmljsast_p.h +++ b/src/libs/qmljs/parser/qmljsast_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -42,6 +42,7 @@ #include "qmljs/parser/qmljsmemorypool_p.h" #include <QtCore/qstring.h> +#include <QtCore/qversionnumber.h> QT_QML_BEGIN_NAMESPACE @@ -201,6 +202,7 @@ public: Kind_SwitchStatement, Kind_TemplateLiteral, Kind_TaggedTemplate, + Kind_TypeExpression, Kind_ThisExpression, Kind_ThrowStatement, Kind_TildeExpression, @@ -319,8 +321,7 @@ public: QMLJS_DECLARE_AST_NODE(UiQualifiedId) UiQualifiedId(QStringView name) - : next(this) - , name(name) + : next(this), name(name) { kind = K; } UiQualifiedId(UiQualifiedId *previous, QStringView name) @@ -444,6 +445,7 @@ public: ExpressionNode() {} ExpressionNode *expressionCast() override; + bool containsOptionalChain() const; AST::FormalParameterList *reparseAsFormalParameterList(MemoryPool *pool); @@ -489,6 +491,26 @@ public: SourceLocation rparenToken; }; + +class QML_PARSER_EXPORT TypeExpression : public ExpressionNode +{ +public: + QMLJS_DECLARE_AST_NODE(TypeExpression) + TypeExpression(Type *t) : m_type(t) { kind = K; } + + void accept0(BaseVisitor *visitor) override; + + SourceLocation firstSourceLocation() const override { + return m_type->firstSourceLocation(); + } + + SourceLocation lastSourceLocation() const override { + return m_type->lastSourceLocation(); + } + + Type *m_type; +}; + class QML_PARSER_EXPORT ThisExpression: public LeftHandSideExpression { public: @@ -513,11 +535,8 @@ class QML_PARSER_EXPORT IdentifierExpression: public LeftHandSideExpression public: QMLJS_DECLARE_AST_NODE(IdentifierExpression) - IdentifierExpression(QStringView n) - : name(n) - { - kind = K; - } + IdentifierExpression(QStringView n): + name (n) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -635,7 +654,15 @@ class QML_PARSER_EXPORT UiVersionSpecifier : public Node public: QMLJS_DECLARE_AST_NODE(UiVersionSpecifier) - UiVersionSpecifier(int majorum, int minorum) : majorVersion(majorum), minorVersion(minorum) { kind = K; } + UiVersionSpecifier(int majorum) : majorVersion(majorum) + { + kind = K; + } + + UiVersionSpecifier(int majorum, int minorum) : majorVersion(majorum), minorVersion(minorum) + { + kind = K; + } void accept0(BaseVisitor *visitor) override; @@ -647,8 +674,8 @@ public: } // attributes: - int majorVersion; - int minorVersion; + int majorVersion = -1; + int minorVersion = -1; SourceLocation majorToken; SourceLocation minorToken; }; @@ -658,11 +685,8 @@ class QML_PARSER_EXPORT StringLiteral : public LeftHandSideExpression public: QMLJS_DECLARE_AST_NODE(StringLiteral) - StringLiteral(QStringView v) - : value(v) - { - kind = K; - } + StringLiteral(QStringView v): + value (v) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -683,10 +707,7 @@ public: QMLJS_DECLARE_AST_NODE(TemplateLiteral) TemplateLiteral(QStringView str, QStringView raw, ExpressionNode *e) - : value(str) - , rawValue(raw) - , expression(e) - , next(nullptr) + : value(str), rawValue(raw), expression(e), next(nullptr) { kind = K; } SourceLocation firstSourceLocation() const override @@ -712,12 +733,8 @@ class QML_PARSER_EXPORT RegExpLiteral: public LeftHandSideExpression public: QMLJS_DECLARE_AST_NODE(RegExpLiteral) - RegExpLiteral(QStringView p, int f) - : pattern(p) - , flags(f) - { - kind = K; - } + RegExpLiteral(QStringView p, int f): + pattern (p), flags (f) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -857,13 +874,20 @@ public: struct QML_PARSER_EXPORT BoundName { + enum Type { + Declared, + Injected, + }; + QString id; - TypeAnnotation *typeAnnotation = nullptr; - BoundName(const QString &id, TypeAnnotation *typeAnnotation) - : id(id), typeAnnotation(typeAnnotation) + Type typeAnnotationType; + TypeAnnotation *typeAnnotation; + BoundName(const QString &id, TypeAnnotation *typeAnnotation, Type type = Declared) + : id(id), typeAnnotation(typeAnnotation), typeAnnotationType(type) {} BoundName() = default; QString typeName() const { return typeAnnotation ? typeAnnotation->type->toString() : QString(); } + bool isInjected() const { return typeAnnotation && typeAnnotationType == Injected; } }; struct BoundNames : public QVector<BoundName> @@ -907,13 +931,8 @@ public: : initializer(i), type(t) { kind = K; } - PatternElement(QStringView n, - TypeAnnotation *typeAnnotation = nullptr, - ExpressionNode *i = nullptr, - Type t = Binding) - : bindingIdentifier(n) - , initializer(i) - , type(t) + PatternElement(QStringView n, TypeAnnotation *typeAnnotation = nullptr, ExpressionNode *i = nullptr, Type t = Binding) + : bindingIdentifier(n), initializer(i), type(t) , typeAnnotation(typeAnnotation) { Q_ASSERT(t >= RestElement); @@ -956,6 +975,7 @@ public: // when used in a VariableDeclarationList VariableScope scope = VariableScope::NoScope; bool isForDeclaration = false; + bool isInjectedSignalParameter = false; }; class QML_PARSER_EXPORT PatternElementList : public Node @@ -1008,8 +1028,7 @@ public: { kind = K; } PatternProperty(PropertyName *name, QStringView n, ExpressionNode *i = nullptr) - : PatternElement(n, /*type annotation*/ nullptr, i) - , name(name) + : PatternElement(n, /*type annotation*/nullptr, i), name(name) { kind = K; } PatternProperty(PropertyName *name, Pattern *pattern, ExpressionNode *i = nullptr) @@ -1078,11 +1097,8 @@ class QML_PARSER_EXPORT IdentifierPropertyName: public PropertyName public: QMLJS_DECLARE_AST_NODE(IdentifierPropertyName) - IdentifierPropertyName(QStringView n) - : id(n) - { - kind = K; - } + IdentifierPropertyName(QStringView n): + id (n) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -1097,11 +1113,8 @@ class QML_PARSER_EXPORT StringLiteralPropertyName: public PropertyName public: QMLJS_DECLARE_AST_NODE(StringLiteralPropertyName) - StringLiteralPropertyName(QStringView n) - : id(n) - { - kind = K; - } + StringLiteralPropertyName(QStringView n): + id (n) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -1173,6 +1186,7 @@ public: ExpressionNode *expression; SourceLocation lbracketToken; SourceLocation rbracketToken; + bool isOptional = false; }; class QML_PARSER_EXPORT FieldMemberExpression: public LeftHandSideExpression @@ -1180,11 +1194,9 @@ class QML_PARSER_EXPORT FieldMemberExpression: public LeftHandSideExpression public: QMLJS_DECLARE_AST_NODE(FieldMemberExpression) - FieldMemberExpression(ExpressionNode *b, QStringView n) - : base(b) - , name(n) - { - kind = K; } + FieldMemberExpression(ExpressionNode *b, QStringView n): + base (b), name (n) + { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -1199,6 +1211,7 @@ public: QStringView name; SourceLocation dotToken; SourceLocation identifierToken; + bool isOptional = false; }; class QML_PARSER_EXPORT TaggedTemplate : public LeftHandSideExpression @@ -1291,6 +1304,7 @@ public: ArgumentList *arguments; SourceLocation lparenToken; SourceLocation rparenToken; + bool isOptional = false; }; class QML_PARSER_EXPORT ArgumentList: public Node @@ -1972,11 +1986,8 @@ class QML_PARSER_EXPORT ContinueStatement: public Statement public: QMLJS_DECLARE_AST_NODE(ContinueStatement) - ContinueStatement(QStringView l = QStringView()) - : label(l) - { - kind = K; - } + ContinueStatement(QStringView l = QStringView()): + label (l) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -1998,11 +2009,8 @@ class QML_PARSER_EXPORT BreakStatement: public Statement public: QMLJS_DECLARE_AST_NODE(BreakStatement) - BreakStatement(QStringView l) - : label(l) - { - kind = K; - } + BreakStatement(QStringView l): + label (l) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -2229,11 +2237,9 @@ class QML_PARSER_EXPORT LabelledStatement: public Statement public: QMLJS_DECLARE_AST_NODE(LabelledStatement) - LabelledStatement(QStringView l, Statement *stmt) - : label(l) - , statement(stmt) - { - kind = K; } + LabelledStatement(QStringView l, Statement *stmt): + label (l), statement (stmt) + { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -2364,16 +2370,10 @@ class QML_PARSER_EXPORT FunctionExpression: public ExpressionNode public: QMLJS_DECLARE_AST_NODE(FunctionExpression) - FunctionExpression(QStringView n, - FormalParameterList *f, - StatementList *b, - TypeAnnotation *typeAnnotation = nullptr) - : name(n) - , formals(f) - , body(b) - , typeAnnotation(typeAnnotation) - { - kind = K; } + FunctionExpression(QStringView n, FormalParameterList *f, StatementList *b, TypeAnnotation *typeAnnotation = nullptr): + name (n), formals (f), body (b), + typeAnnotation(typeAnnotation) + { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -2405,13 +2405,9 @@ class QML_PARSER_EXPORT FunctionDeclaration: public FunctionExpression public: QMLJS_DECLARE_AST_NODE(FunctionDeclaration) - FunctionDeclaration(QStringView n, - FormalParameterList *f, - StatementList *b, - TypeAnnotation *typeAnnotation = nullptr) - : FunctionExpression(n, f, b, typeAnnotation) - { - kind = K; } + FunctionDeclaration(QStringView n, FormalParameterList *f, StatementList *b, TypeAnnotation *typeAnnotation = nullptr): + FunctionExpression(n, f, b, typeAnnotation) + { kind = K; } void accept0(BaseVisitor *visitor) override; }; @@ -2507,11 +2503,8 @@ public: QMLJS_DECLARE_AST_NODE(ClassExpression) ClassExpression(QStringView n, ExpressionNode *heritage, ClassElementList *elements) - : name(n) - , heritage(heritage) - , elements(elements) - { - kind = K; } + : name(n), heritage(heritage), elements(elements) + { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -2540,8 +2533,7 @@ public: ClassDeclaration(QStringView n, ExpressionNode *heritage, ClassElementList *elements) : ClassExpression(n, heritage, elements) - { - kind = K; } + { kind = K; } void accept0(BaseVisitor *visitor) override; }; @@ -2617,8 +2609,7 @@ public: } ImportSpecifier(QStringView identifier, QStringView importedBinding) - : identifier(identifier) - , importedBinding(importedBinding) + : identifier(identifier), importedBinding(importedBinding) { kind = K; } @@ -2852,15 +2843,13 @@ public: QMLJS_DECLARE_AST_NODE(ExportSpecifier) ExportSpecifier(QStringView identifier) - : identifier(identifier) - , exportedIdentifier(identifier) + : identifier(identifier), exportedIdentifier(identifier) { kind = K; } ExportSpecifier(QStringView identifier, QStringView exportedIdentifier) - : identifier(identifier) - , exportedIdentifier(exportedIdentifier) + : identifier(identifier), exportedIdentifier(exportedIdentifier) { kind = K; } @@ -2959,7 +2948,6 @@ public: ExportDeclaration(FromClause *fromClause) : fromClause(fromClause) { - exportAll = true; kind = K; } @@ -2982,6 +2970,11 @@ public: kind = K; } + bool exportsAll() const + { + return fromClause && !exportClause; + } + void accept0(BaseVisitor *visitor) override; SourceLocation firstSourceLocation() const override @@ -2991,7 +2984,6 @@ public: // attributes SourceLocation exportToken; - bool exportAll = false; ExportClause *exportClause = nullptr; FromClause *fromClause = nullptr; Node *variableStatementOrDeclaration = nullptr; @@ -3048,8 +3040,7 @@ public: QMLJS_DECLARE_AST_NODE(UiImport) UiImport(QStringView fileName) - : fileName(fileName) - , importUri(nullptr) + : fileName(fileName), importUri(nullptr) { kind = K; } UiImport(UiQualifiedId *uri) @@ -3154,7 +3145,7 @@ public: QMLJS_DECLARE_AST_NODE(UiRequired) UiRequired(QStringView name) - : name(name) + :name(name) { kind = K; } void accept0(BaseVisitor *visitor) override; @@ -3319,16 +3310,12 @@ class QML_PARSER_EXPORT UiParameterList: public Node public: QMLJS_DECLARE_AST_NODE(UiParameterList) - UiParameterList(UiQualifiedId *t, QStringView n) - : type(t) - , name(n) - , next(this) - { - kind = K; } + UiParameterList(UiQualifiedId *t, QStringView n): + type (t), name (n), next (this) + { kind = K; } - UiParameterList(UiParameterList *previous, UiQualifiedId *t, QStringView n) - : type(t) - , name(n) + UiParameterList(UiParameterList *previous, UiQualifiedId *t, QStringView n): + type (t), name (n) { kind = K; next = previous->next; @@ -3368,43 +3355,29 @@ class QML_PARSER_EXPORT UiPublicMember: public UiObjectMember public: QMLJS_DECLARE_AST_NODE(UiPublicMember) - UiPublicMember(UiQualifiedId *memberType, QStringView name) - : type(Property) - , memberType(memberType) - , name(name) - , statement(nullptr) - , binding(nullptr) - , isDefaultMember(false) - , isReadonlyMember(false) - , parameters(nullptr) + UiPublicMember(UiQualifiedId *memberType, + QStringView name) + : type(Property), memberType(memberType), name(name), statement(nullptr), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr) { kind = K; } - UiPublicMember(UiQualifiedId *memberType, QStringView name, Statement *statement) - : type(Property) - , memberType(memberType) - , name(name) - , statement(statement) - , binding(nullptr) - , isDefaultMember(false) - , isReadonlyMember(false) - , parameters(nullptr) + UiPublicMember(UiQualifiedId *memberType, + QStringView name, + Statement *statement) + : type(Property), memberType(memberType), name(name), statement(statement), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr) { kind = K; } void accept0(BaseVisitor *visitor) override; SourceLocation firstSourceLocation() const override { - if (requiredToken.isValid()) { - if (defaultToken.isValid() && defaultToken.offset < requiredToken.offset) - return defaultToken; - return requiredToken; - } - if (defaultToken.isValid()) - return defaultToken; - if (readonlyToken.isValid()) - return readonlyToken; + if (defaultToken.isValid()) + return defaultToken; + else if (readonlyToken.isValid()) + return readonlyToken; + else if (requiredToken.isValid()) + return requiredToken; - return propertyToken; + return propertyToken; } SourceLocation lastSourceLocation() const override @@ -3468,9 +3441,8 @@ class QML_PARSER_EXPORT UiInlineComponent: public UiObjectMember public: QMLJS_DECLARE_AST_NODE(UiInlineComponent) - UiInlineComponent(QStringView inlineComponentName, UiObjectDefinition *inlineComponent) - : name(inlineComponentName) - , component(inlineComponent) + UiInlineComponent(QStringView inlineComponentName, UiObjectDefinition* inlineComponent) + : name(inlineComponentName), component(inlineComponent) { kind = K; } SourceLocation lastSourceLocation() const override @@ -3596,7 +3568,7 @@ public: { kind = K; } SourceLocation firstSourceLocation() const override - { return qualifiedId->identifierToken; } + { Q_ASSERT(qualifiedId); return qualifiedId->identifierToken; } SourceLocation lastSourceLocation() const override { return rbracketToken; } @@ -3616,9 +3588,7 @@ class QML_PARSER_EXPORT UiEnumMemberList: public Node QMLJS_DECLARE_AST_NODE(UiEnumMemberList) public: UiEnumMemberList(QStringView member, double v = 0.0) - : next(this) - , member(member) - , value(v) + : next(this), member(member), value(v) { kind = K; } UiEnumMemberList(UiEnumMemberList *previous, QStringView member) @@ -3631,8 +3601,7 @@ public: } UiEnumMemberList(UiEnumMemberList *previous, QStringView member, double v) - : member(member) - , value(v) + : member(member), value(v) { kind = K; next = previous->next; @@ -3670,7 +3639,8 @@ class QML_PARSER_EXPORT UiEnumDeclaration: public UiObjectMember public: QMLJS_DECLARE_AST_NODE(UiEnumDeclaration) - UiEnumDeclaration(QStringView name, UiEnumMemberList *members) + UiEnumDeclaration(QStringView name, + UiEnumMemberList *members) : name(name) , members(members) { kind = K; } @@ -3754,4 +3724,3 @@ public: QT_QML_END_NAMESPACE - diff --git a/src/libs/qmljs/parser/qmljsastfwd_p.h b/src/libs/qmljs/parser/qmljsastfwd_p.h index dd0a402ec7..088ef716d8 100644 --- a/src/libs/qmljs/parser/qmljsastfwd_p.h +++ b/src/libs/qmljs/parser/qmljsastfwd_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -50,6 +50,7 @@ class Visitor; class Node; class ExpressionNode; class Statement; +class TypeExpression; class ThisExpression; class IdentifierExpression; class NullExpression; diff --git a/src/libs/qmljs/parser/qmljsastvisitor.cpp b/src/libs/qmljs/parser/qmljsastvisitor.cpp index b42a0c7022..c046c75d8b 100644 --- a/src/libs/qmljs/parser/qmljsastvisitor.cpp +++ b/src/libs/qmljs/parser/qmljsastvisitor.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. diff --git a/src/libs/qmljs/parser/qmljsastvisitor_p.h b/src/libs/qmljs/parser/qmljsastvisitor_p.h index ae2b323a59..05e6875e37 100644 --- a/src/libs/qmljs/parser/qmljsastvisitor_p.h +++ b/src/libs/qmljs/parser/qmljsastvisitor_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -126,6 +126,9 @@ public: virtual void endVisit(UiRequired *) = 0; // QmlJS + virtual bool visit(TypeExpression *) = 0; + virtual void endVisit(TypeExpression *) = 0; + virtual bool visit(ThisExpression *) = 0; virtual void endVisit(ThisExpression *) = 0; @@ -467,6 +470,9 @@ public: void endVisit(UiRequired *) override {} // QmlJS + bool visit(TypeExpression *) override { return true; } + void endVisit(TypeExpression *) override {} + bool visit(ThisExpression *) override { return true; } void endVisit(ThisExpression *) override {} diff --git a/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h b/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h index e3c2cf56e8..5e2c445b36 100644 --- a/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h +++ b/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. diff --git a/src/libs/qmljs/parser/qmljsengine_p.cpp b/src/libs/qmljs/parser/qmljsengine_p.cpp index 44f03a1a74..2a0482c5ea 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.cpp +++ b/src/libs/qmljs/parser/qmljsengine_p.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -26,11 +26,9 @@ #include "qmljsengine_p.h" #include "qmljsglobal_p.h" -#include <utils/porting.h> - -#include <QtCore/qdebug.h> -#include <QtCore/qhash.h> #include <QtCore/qnumeric.h> +#include <QtCore/qhash.h> +#include <QtCore/qdebug.h> QT_QML_BEGIN_NAMESPACE @@ -138,9 +136,7 @@ QStringView Engine::newStringRef(const QString &text) } QStringView Engine::newStringRef(const QChar *chars, int size) -{ - return newStringRef(QString(chars, size)); -} +{ return newStringRef(QString(chars, size)); } } // end of namespace QmlJS diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h index a6e8ad272f..928257ee37 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.h +++ b/src/libs/qmljs/parser/qmljsengine_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -37,16 +37,14 @@ // #include "qmljsglobal_p.h" - -#include "qmljs/parser/qmljsmemorypool_p.h" #include "qmljs/parser/qmljssourcelocation_p.h" -#include <qmljs/qmljsconstants.h> -#include <utils/porting.h> +#include "qmljs/parser/qmljsmemorypool_p.h" #include <QString> #include <QSet> +#include <qmljs/qmljsconstants.h> QT_QML_BEGIN_NAMESPACE namespace QmlJS { @@ -107,10 +105,7 @@ public: MemoryPool *pool(); - inline QStringView midRef(int position, int size) - { - return Utils::midView(_code, position, size); - } + inline QStringView midRef(int position, int size) { return QStringView{_code}.mid(position, size); } QStringView newStringRef(const QString &s); QStringView newStringRef(const QChar *chars, int size); diff --git a/src/libs/qmljs/parser/qmljsglobal_p.h b/src/libs/qmljs/parser/qmljsglobal_p.h index e9ea5ed351..f2b0da9d74 100644 --- a/src/libs/qmljs/parser/qmljsglobal_p.h +++ b/src/libs/qmljs/parser/qmljsglobal_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. diff --git a/src/libs/qmljs/parser/qmljsgrammar.cpp b/src/libs/qmljs/parser/qmljsgrammar.cpp index e4387c77b4..04d1e6b295 100644 --- a/src/libs/qmljs/parser/qmljsgrammar.cpp +++ b/src/libs/qmljs/parser/qmljsgrammar.cpp @@ -1,11 +1,10 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** -** This file is part of the Qt Toolkit. +** This file is part of Qt Creator. ** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the @@ -36,104 +35,105 @@ const char *const QmlJSGrammar::spell [] = { "%=", "return", ")", ";", 0, "*", "**", "**=", "*=", "string literal", "property", "signal", "readonly", "switch", "this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", "^=", "null", "true", "false", "const", "let", - "@", "debugger", "reserved word", "multiline string literal", "comment", 0, "=>", "??", "enum", "...", - "yield", "super", "class", "extends", "static", "export", "from", "required", "component", "(no subst template)", - "(template head)", "(template middle)", "(template tail)", "public", "import", "pragma", "as", "of", "get", "set", - 0, 0, 0, 0, 0, 0, 0, "(force decl)", "(force block)", "(for lookahead ok)", - 0, 0, 0, 0, + "@", "debugger", "reserved word", "multiline string literal", "comment", 0, "=>", "??", "?.", "enum", + "...", "yield", "super", "class", "extends", "static", "export", "from", "required", "component", + "(no subst template)", "(template head)", "(template middle)", "(template tail)", "public", "import", "pragma", "as", "of", "get", + "set", 0, 0, 0, 0, 0, 0, 0, "(force decl)", "(force block)", + "(for lookahead ok)", 0, 0, 0, 0, #ifndef QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO -"TopLevel", "UiProgram", "Statement", "Expression", "UiAnnotatedObjectMember", "Script", - "Module", "UiHeaderItemListOpt", "UiRootMember", "Empty", "UiHeaderItemList", "UiPragma", "UiImport", "PragmaId", "JsIdentifier", "Semicolon", - "ImportId", "MemberExpression", "UiImportHead", "UiVersionSpecifier", "QmlIdentifier", "UiAnnotatedObject", "UiSimpleQualifiedId", "UiAnnotationObjectDefinition", "UiObjectInitializer", "UiAnnotation", - "UiAnnotationList", "UiObjectDefinition", "UiObjectMemberList", "UiArrayMemberList", "UiQualifiedId", "UiObjectMember", "ExpressionStatementLookahead", "UiObjectLiteral", "UiPropertyDefinitionList", "UiScriptStatement", - "ExpressionStatement", "Block", "EmptyStatement", "IfStatement", "WithStatement", "SwitchStatement", "TryStatement", "UiPropertyType", "UiParameterListOpt", "UiParameterList", - "UiObjectMemberListPropertyNoInitialiser", "UiObjectMemberPropertyNoInitialiser", "OptionalSemicolon", "UiRequired", "UiObjectMemberWithScriptStatement", "UiObjectMemberWithArray", "UiObjectMemberExpressionStatementLookahead", "GeneratorDeclaration", "FunctionDeclarationWithTypes", "VariableStatement", - "EnumMemberList", "IdentifierReference", "BindingIdentifier", "TypeArguments", "Type", "TypeAnnotation", "TypeAnnotationOpt", "PrimaryExpression", "Literal", "ArrayLiteral", - "ObjectLiteral", "FunctionExpression", "ClassExpression", "GeneratorExpression", "RegularExpressionLiteral", "TemplateLiteral", "CoverParenthesizedExpressionAndArrowParameterList", "Expression_In", "BindingRestElement", "BindingRestElementOpt", - "ElisionOpt", "ElementList", "AssignmentExpression_In", "Elision", "SpreadElement", "AssignmentExpression", "PropertyDefinitionList", "UiPropertyDefinition", "PropertyDefinition", "CoverInitializedName", - "Initializer_In", "UiPropertyName", "PropertyName", "MethodDefinition", "LiteralPropertyName", "ComputedPropertyName", "IdentifierName", "ReservedIdentifier", "Initializer", "InitializerOpt", - "InitializerOpt_In", "TemplateSpans", "Super", "NewTarget", "MetaProperty", "Arguments", "NewExpression", "CallExpression", "ArgumentList", "LeftHandSideExpression", - "UpdateExpression", "UnaryExpression", "ExponentiationExpression", "MultiplicativeExpression", "MultiplicativeOperator", "AdditiveExpression", "ShiftExpression", "RelationalExpression_In", "RelationalExpression", "RelationalOperator", - "TypeAssertExpression_In", "TypeAssertExpression", "EqualityExpression_In", "EqualityExpression", "EqualityOperator", "BitwiseANDExpression", "BitwiseANDExpression_In", "BitwiseXORExpression", "BitwiseXORExpression_In", "BitwiseORExpression", - "BitwiseORExpression_In", "LogicalANDExpression", "LogicalANDExpression_In", "LogicalORExpression", "LogicalORExpression_In", "CoalesceExpression", "CoalesceExpression_In", "ConditionalExpression", "ConditionalExpression_In", "YieldExpression", - "YieldExpression_In", "ArrowFunction", "ArrowFunction_In", "AssignmentOperator", "ExpressionOpt", "ExpressionOpt_In", "BlockStatement", "BreakableStatement", "ContinueStatement", "BreakStatement", - "ReturnStatement", "LabelledStatement", "ThrowStatement", "DebuggerStatement", "Declaration", "HoistableDeclaration", "ClassDeclaration", "LexicalDeclaration_In", "FunctionDeclaration", "HoistableDeclaration_Default", - "FunctionDeclaration_Default", "GeneratorDeclaration_Default", "IterationStatement", "StatementListOpt", "StatementList", "StatementListItem", "LetOrConst", "Var", "LexicalDeclaration", "BindingList", - "BindingList_In", "VarDeclaration", "VariableDeclarationList", "VarDeclaration_In", "VariableDeclarationList_In", "LexicalBinding_In", "VariableDeclaration", "VariableDeclaration_In", "LexicalBinding", "BindingPattern", - "ObjectBindingPattern", "ArrayBindingPattern", "BindingPropertyList", "BindingElementList", "BindingProperty", "BindingElisionElement", "BindingElement", "InOrOf", "ForDeclaration", "CaseBlock", - "CaseClausesOpt", "DefaultClause", "CaseClauses", "CaseClause", "LabelledItem", "Catch", "Finally", "CatchParameter", "Function", "FormalParameters", - "FunctionLBrace", "FunctionBody", "FunctionRBrace", "StrictFormalParameters", "FormalParameterList", "FormalParameter", "ArrowParameters", "ConciseBodyLookahead", "GeneratorLParen", "GeneratorBody", - "GeneratorRBrace", "PropertySetParameterList", "FunctionStar", "ClassHeritageOpt", "ClassLBrace", "ClassBodyOpt", "ClassRBrace", "ClassDeclaration_Default", "ClassStaticQualifier", "ClassElementList", - "ClassElement", "ScriptBody", "ModuleBodyOpt", "ModuleBody", "ModuleItemList", "ModuleItem", "ImportDeclaration", "ExportDeclaration", "ImportClause", "FromClause", - "ModuleSpecifier", "ImportedDefaultBinding", "NameSpaceImport", "NamedImports", "ImportedBinding", "ImportsList", "ImportSpecifier", "ExportDeclarationLookahead", "ExportClause", "ExportsList", - "ExportSpecifier", "$accept" +"TopLevel", "UiProgram", "Statement", "Expression", "UiAnnotatedObjectMember", + "Script", "Module", "UiHeaderItemListOpt", "UiRootMember", "Empty", "UiHeaderItemList", "UiPragma", "UiImport", "PragmaId", "JsIdentifier", + "Semicolon", "ImportId", "MemberExpression", "UiImportHead", "UiVersionSpecifier", "QmlIdentifier", "UiAnnotatedObject", "UiSimpleQualifiedId", "UiAnnotationObjectDefinition", "UiObjectInitializer", + "UiAnnotation", "UiAnnotationList", "UiObjectDefinition", "UiObjectMemberList", "UiArrayMemberList", "UiQualifiedId", "UiObjectMember", "ExpressionStatementLookahead", "UiObjectLiteral", "UiPropertyDefinitionList", + "UiScriptStatement", "ExpressionStatement", "Block", "EmptyStatement", "IfStatement", "WithStatement", "SwitchStatement", "TryStatement", "UiPropertyType", "UiParameterListOpt", + "UiParameterList", "UiObjectMemberListPropertyNoInitialiser", "UiObjectMemberPropertyNoInitialiser", "OptionalSemicolon", "UiRequired", "UiObjectMemberWithScriptStatement", "UiObjectMemberWithArray", "UiObjectMemberExpressionStatementLookahead", "GeneratorDeclaration", "FunctionDeclarationWithTypes", + "VariableStatement", "EnumMemberList", "IdentifierReference", "BindingIdentifier", "TypeArguments", "Type", "TypeAnnotation", "TypeAnnotationOpt", "PrimaryExpression", "Literal", + "ArrayLiteral", "ObjectLiteral", "FunctionExpression", "ClassExpression", "GeneratorExpression", "RegularExpressionLiteral", "TemplateLiteral", "CoverParenthesizedExpressionAndArrowParameterList", "Expression_In", "BindingRestElement", + "BindingRestElementOpt", "ElisionOpt", "ElementList", "AssignmentExpression_In", "Elision", "SpreadElement", "AssignmentExpression", "PropertyDefinitionList", "UiPropertyDefinition", "PropertyDefinition", + "CoverInitializedName", "Initializer_In", "UiPropertyName", "PropertyName", "MethodDefinition", "LiteralPropertyName", "ComputedPropertyName", "IdentifierName", "ReservedIdentifier", "Initializer", + "InitializerOpt", "InitializerOpt_In", "TemplateSpans", "Super", "NewTarget", "MetaProperty", "Arguments", "NewExpression", "CallExpression", "ArgumentList", + "LeftHandSideExpression", "UpdateExpression", "UnaryExpression", "ExponentiationExpression", "MultiplicativeExpression", "MultiplicativeOperator", "AdditiveExpression", "ShiftExpression", "RelationalExpression_In", "RelationalExpression", + "RelationalOperator", "EqualityExpression_In", "EqualityExpression", "EqualityOperator", "BitwiseANDExpression", "BitwiseANDExpression_In", "BitwiseXORExpression", "BitwiseXORExpression_In", "BitwiseORExpression", "BitwiseORExpression_In", + "LogicalANDExpression", "LogicalANDExpression_In", "LogicalORExpression", "LogicalORExpression_In", "CoalesceExpression", "CoalesceExpression_In", "ConditionalExpression", "ConditionalExpression_In", "YieldExpression", "YieldExpression_In", + "ArrowFunction", "ArrowFunction_In", "AssignmentOperator", "ExpressionOpt", "ExpressionOpt_In", "BlockStatement", "BreakableStatement", "ContinueStatement", "BreakStatement", "ReturnStatement", + "LabelledStatement", "ThrowStatement", "DebuggerStatement", "Declaration", "HoistableDeclaration", "ClassDeclaration", "LexicalDeclaration_In", "FunctionDeclaration", "HoistableDeclaration_Default", "FunctionDeclaration_Default", + "GeneratorDeclaration_Default", "IterationStatement", "StatementListOpt", "StatementList", "StatementListItem", "LetOrConst", "Var", "LexicalDeclaration", "BindingList", "BindingList_In", + "VarDeclaration", "VariableDeclarationList", "VarDeclaration_In", "VariableDeclarationList_In", "LexicalBinding_In", "VariableDeclaration", "VariableDeclaration_In", "LexicalBinding", "BindingPattern", "ObjectBindingPattern", + "ArrayBindingPattern", "BindingPropertyList", "BindingElementList", "BindingProperty", "BindingElisionElement", "BindingElement", "InOrOf", "ForDeclaration", "CaseBlock", "CaseClausesOpt", + "DefaultClause", "CaseClauses", "CaseClause", "LabelledItem", "Catch", "Finally", "CatchParameter", "Function", "FormalParameters", "FunctionLBrace", + "FunctionBody", "FunctionRBrace", "StrictFormalParameters", "FormalParameterList", "FormalParameter", "ArrowParameters", "ConciseBodyLookahead", "GeneratorLParen", "GeneratorBody", "GeneratorRBrace", + "PropertySetParameterList", "FunctionStar", "ClassHeritageOpt", "ClassLBrace", "ClassBodyOpt", "ClassRBrace", "ClassDeclaration_Default", "ClassStaticQualifier", "ClassElementList", "ClassElement", + "ScriptBody", "ModuleBodyOpt", "ModuleBody", "ModuleItemList", "ModuleItem", "ImportDeclaration", "ExportDeclaration", "ImportClause", "FromClause", "ModuleSpecifier", + "ImportedDefaultBinding", "NameSpaceImport", "NamedImports", "ImportedBinding", "ImportsList", "ImportSpecifier", "ExportDeclarationLookahead", "ExportClause", "ExportsList", "ExportSpecifier", + "$accept" #endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO }; const short QmlJSGrammar::lhs [] = { - 134, 134, 134, 134, 134, 134, 135, 141, 141, 144, - 144, 144, 144, 147, 149, 149, 145, 150, 146, 153, - 153, 146, 146, 146, 152, 143, 142, 156, 156, 157, - 159, 160, 160, 155, 155, 162, 162, 163, 163, 158, - 158, 161, 138, 138, 165, 165, 165, 165, 167, 167, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 165, - 177, 177, 177, 177, 178, 178, 179, 179, 179, 179, - 165, 165, 180, 165, 165, 181, 165, 165, 165, 165, - 165, 165, 165, 165, 182, 182, 183, 165, 165, 184, - 165, 165, 165, 185, 165, 165, 186, 165, 165, 165, - 165, 165, 164, 165, 165, 190, 190, 190, 190, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 191, 192, 193, 193, 194, 194, 194, - 195, 196, 196, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 206, 206, 206, 206, 198, 198, - 198, 198, 198, 198, 204, 204, 199, 199, 199, 211, - 211, 211, 211, 211, 213, 213, 210, 210, 214, 200, - 200, 200, 168, 216, 168, 216, 218, 218, 219, 217, - 218, 218, 222, 222, 224, 221, 224, 221, 224, 226, - 226, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 225, - 228, 220, 229, 230, 229, 230, 205, 231, 231, 205, - 151, 232, 151, 151, 233, 151, 151, 151, 151, 234, - 236, 236, 237, 151, 237, 237, 237, 237, 237, 235, - 235, 235, 238, 238, 238, 238, 239, 239, 240, 240, - 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, - 241, 242, 242, 243, 243, 244, 244, 244, 245, 245, - 245, 246, 246, 246, 246, 247, 248, 247, 248, 249, - 249, 249, 249, 249, 247, 250, 251, 247, 248, 252, - 253, 252, 253, 254, 254, 254, 254, 255, 256, 255, - 256, 257, 258, 257, 258, 259, 260, 259, 260, 261, - 262, 261, 262, 263, 264, 263, 264, 265, 266, 265, - 266, 267, 268, 267, 268, 215, 212, 215, 212, 215, - 212, 215, 212, 215, 212, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 137, 207, 137, - 207, 274, 275, 274, 275, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 284, - 284, 284, 285, 285, 289, 289, 277, 277, 276, 171, - 294, 294, 295, 295, 293, 293, 296, 296, 297, 298, - 287, 301, 303, 189, 299, 300, 302, 304, 299, 300, - 302, 304, 308, 305, 306, 307, 308, 305, 306, 307, - 309, 309, 310, 310, 310, 311, 311, 311, 312, 312, - 313, 313, 315, 314, 314, 314, 316, 316, 208, 208, - 209, 209, 172, 166, 170, 173, 173, 292, 292, 292, - 292, 292, 292, 317, 317, 292, 292, 318, 318, 318, - 318, 278, 278, 279, 279, 280, 174, 175, 319, 319, - 322, 322, 320, 320, 323, 321, 281, 324, 324, 282, - 176, 176, 176, 325, 326, 327, 327, 283, 328, 288, - 188, 290, 290, 201, 201, 333, 329, 329, 329, 329, - 329, 334, 334, 335, 330, 332, 331, 271, 272, 271, - 272, 336, 336, 337, 223, 223, 223, 223, 341, 338, - 340, 342, 187, 291, 291, 203, 203, 339, 269, 270, - 269, 270, 269, 270, 286, 202, 347, 202, 347, 344, - 346, 348, 343, 343, 345, 345, 349, 349, 350, 350, - 350, 139, 139, 351, 140, 353, 352, 352, 354, 354, - 355, 355, 355, 356, 356, 358, 358, 358, 358, 358, - 361, 362, 363, 363, 363, 359, 365, 365, 366, 366, - 360, 364, 367, 357, 357, 357, 357, 357, 357, 357, - 357, 368, 368, 368, 369, 369, 370, 370, 371 + 135, 135, 135, 135, 135, 135, 136, 142, 142, 145, + 145, 145, 145, 148, 150, 150, 146, 151, 147, 154, + 154, 147, 147, 147, 153, 144, 143, 157, 157, 158, + 160, 161, 161, 156, 156, 163, 163, 164, 164, 159, + 159, 162, 139, 139, 166, 166, 166, 166, 168, 168, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 166, + 178, 178, 178, 178, 179, 179, 180, 180, 180, 180, + 166, 166, 181, 166, 166, 182, 166, 166, 166, 166, + 166, 166, 166, 166, 183, 183, 184, 166, 166, 185, + 166, 166, 166, 186, 166, 166, 187, 166, 166, 166, + 166, 166, 165, 166, 166, 191, 191, 191, 191, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 192, 193, 194, 194, 195, 195, 195, + 196, 197, 197, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 207, 207, 207, 207, 199, 199, + 199, 199, 199, 199, 205, 205, 200, 200, 200, 212, + 212, 212, 212, 212, 214, 214, 211, 211, 215, 201, + 201, 201, 169, 217, 169, 217, 219, 219, 220, 218, + 219, 219, 223, 223, 225, 222, 225, 222, 225, 227, + 227, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 226, + 229, 221, 230, 231, 230, 231, 206, 232, 232, 206, + 152, 233, 152, 152, 152, 234, 152, 152, 152, 152, + 152, 235, 237, 237, 238, 152, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 236, 236, 236, 239, 239, + 239, 239, 240, 240, 241, 241, 241, 241, 241, 242, + 242, 242, 242, 242, 242, 242, 242, 243, 243, 244, + 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, + 247, 248, 249, 248, 249, 250, 250, 250, 250, 250, + 250, 248, 251, 252, 251, 252, 253, 253, 253, 253, + 254, 255, 254, 255, 256, 257, 256, 257, 258, 259, + 258, 259, 260, 261, 260, 261, 262, 263, 262, 263, + 264, 265, 264, 265, 266, 267, 266, 267, 216, 213, + 216, 213, 216, 213, 216, 213, 216, 213, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, + 138, 208, 138, 208, 273, 274, 273, 274, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 283, 283, 283, 284, 284, 288, 288, 276, + 276, 275, 172, 293, 293, 294, 294, 292, 292, 295, + 295, 296, 297, 286, 300, 302, 190, 298, 299, 301, + 303, 298, 299, 301, 303, 307, 304, 305, 306, 307, + 304, 305, 306, 308, 308, 309, 309, 309, 310, 310, + 310, 311, 311, 312, 312, 314, 313, 313, 313, 315, + 315, 209, 209, 210, 210, 173, 167, 171, 174, 174, + 291, 291, 291, 291, 291, 291, 316, 316, 291, 291, + 317, 317, 317, 317, 277, 277, 278, 278, 279, 175, + 176, 318, 318, 321, 321, 319, 319, 322, 320, 280, + 323, 323, 281, 177, 177, 177, 324, 325, 326, 326, + 282, 327, 287, 189, 289, 289, 202, 202, 332, 328, + 328, 328, 328, 328, 333, 333, 334, 329, 331, 330, + 270, 271, 270, 271, 335, 335, 336, 224, 224, 224, + 224, 340, 337, 339, 341, 188, 290, 290, 204, 204, + 338, 268, 269, 268, 269, 268, 269, 285, 203, 346, + 203, 346, 343, 345, 347, 342, 342, 344, 344, 348, + 348, 349, 349, 349, 140, 140, 350, 141, 352, 351, + 351, 353, 353, 354, 354, 354, 355, 355, 357, 357, + 357, 357, 357, 360, 361, 362, 362, 362, 358, 364, + 364, 365, 365, 359, 363, 366, 356, 356, 356, 356, + 356, 356, 356, 356, 367, 367, 367, 368, 368, 369, + 369, 370 }; const short QmlJSGrammar::rhs [] = { @@ -162,110 +162,112 @@ const short QmlJSGrammar::rhs [] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 0, 0, 1, 1, 1, 1, 3, 3, - 1, 1, 4, 4, 3, 3, 3, 1, 5, 1, - 1, 2, 2, 2, 4, 4, 4, 4, 3, 0, - 1, 2, 1, 2, 3, 4, 1, 1, 1, 2, - 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, - 2, 1, 3, 1, 3, 1, 1, 1, 1, 3, - 3, 1, 3, 3, 3, 1, 1, 3, 3, 1, - 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, - 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, - 3, 1, 1, 3, 3, 1, 1, 3, 3, 1, - 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, - 3, 1, 1, 5, 5, 1, 1, 1, 1, 1, - 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 3, 0, 0, 1, 1, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 2, 1, 4, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 1, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 3, 3, 0, 1, 2, 2, 1, 4, 1, 3, - 1, 3, 2, 2, 4, 4, 3, 2, 2, 2, - 0, 1, 1, 0, 2, 7, 5, 7, 7, 5, - 9, 9, 9, 1, 1, 7, 7, 3, 3, 2, - 2, 2, 3, 2, 3, 3, 5, 5, 3, 5, - 1, 2, 0, 1, 4, 3, 3, 1, 3, 3, - 3, 3, 4, 5, 2, 1, 1, 2, 1, 9, - 9, 1, 8, 9, 8, 1, 0, 1, 1, 2, - 3, 1, 3, 1, 1, 1, 1, 4, 4, 7, - 7, 1, 1, 0, 8, 9, 8, 9, 1, 1, - 1, 1, 8, 1, 7, 8, 7, 1, 1, 1, - 3, 3, 2, 2, 6, 6, 5, 5, 1, 1, - 1, 1, 0, 2, 0, 1, 1, 2, 1, 2, - 1, 0, 1, 1, 1, 1, 0, 1, 1, 2, - 2, 2, 1, 3, 2, 1, 1, 1, 3, 3, - 1, 3, 2, 3, 4, 2, 1, 3, 1, 3, - 1, 1, 0, 3, 3, 2, 2, 2, 5, 5, - 4, 2, 3, 4, 1, 3, 1, 3, 2 + 1, 1, 4, 4, 5, 3, 3, 3, 3, 1, + 5, 1, 1, 2, 2, 2, 4, 5, 4, 4, + 5, 4, 5, 3, 3, 0, 1, 2, 1, 2, + 3, 4, 1, 1, 1, 2, 2, 2, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, + 3, 1, 1, 1, 1, 3, 3, 1, 3, 3, + 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 3, 3, 1, 1, 1, 1, + 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, + 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, + 1, 1, 3, 3, 1, 1, 5, 5, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 3, 0, 0, 1, 1, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 2, 1, 4, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 3, 3, 0, 1, 2, 2, 1, + 4, 1, 3, 1, 3, 2, 2, 4, 4, 3, + 2, 2, 2, 0, 1, 1, 0, 2, 7, 5, + 7, 7, 5, 9, 9, 9, 1, 1, 7, 7, + 3, 3, 2, 2, 2, 3, 2, 3, 3, 5, + 5, 3, 5, 1, 2, 0, 1, 4, 3, 3, + 1, 3, 3, 3, 3, 4, 5, 2, 1, 1, + 2, 1, 9, 9, 1, 8, 9, 8, 1, 0, + 1, 1, 2, 3, 1, 3, 1, 1, 1, 1, + 4, 4, 7, 7, 1, 1, 0, 8, 9, 8, + 9, 1, 1, 1, 1, 8, 1, 7, 8, 7, + 1, 1, 1, 3, 3, 2, 2, 6, 6, 5, + 5, 1, 1, 1, 1, 0, 2, 0, 1, 1, + 2, 1, 2, 1, 0, 1, 1, 1, 1, 0, + 1, 1, 2, 2, 2, 1, 3, 2, 1, 1, + 1, 3, 3, 1, 3, 2, 3, 4, 2, 1, + 3, 1, 3, 1, 1, 0, 3, 3, 2, 2, + 2, 5, 5, 4, 2, 3, 4, 1, 3, 1, + 3, 2 }; #ifndef QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO const int QmlJSGrammar::rule_info [] = { - 134, 121, 135, 134, 123, 136, 134, 124, 137, 134, 122, 138, 134, 125, 139, 134, 126, 140, 135, 141, 142, 141, 143, 141, 144, 144, 145, - 144, 146, 144, 144, 145, 144, 144, 146, 147, 148, 149, 64, 149, 63, 145, 115, 147, 149, 150, 151, 146, 152, 149, 153, 50, 15, 50, - 153, 50, 146, 152, 153, 149, 146, 152, 153, 116, 154, 149, 146, 152, 116, 154, 149, 152, 114, 150, 143, 142, 155, 156, 30, 156, 156, 15, 30, 157, 156, 158, - 159, 90, 157, 160, 159, 160, 160, 159, 155, 160, 161, 155, 161, 162, 138, 162, 162, 138, 163, 161, 163, 163, 8, 161, 158, 34, 57, - 158, 34, 162, 57, 161, 164, 158, 138, 160, 165, 138, 165, 165, 161, 165, 164, 7, 166, 35, 163, 58, 165, 164, 7, 166, 164, 158, 165, 164, 130, 164, 158, 167, 34, 166, 168, 57, 149, 167, 34, 166, 168, 8, 57, 149, - 169, 166, 127, 170, 169, 166, 128, 171, 169, 166, 128, 167, 169, 166, 172, 169, 166, 170, 169, 166, 173, 169, 166, 174, 169, 166, 175, 169, 166, 176, 165, 164, 7, 169, - 177, 79, 177, 92, 177, 30, 177, 177, 15, 30, 178, 178, 179, 179, 154, 7, 177, 179, 177, 154, 179, 179, 8, 154, 7, 177, 179, 179, 8, 177, 154, - 165, 71, 30, 37, 178, 62, 149, 165, 71, 30, 149, 180, 70, 30, 38, 177, 25, 154, 149, 165, 180, 165, 72, 180, 181, 70, 177, 154, 149, 165, 181, 165, 10, 181, 165, 107, 180, 165, 10, 107, 180, - 165, 107, 10, 180, 165, 10, 180, 165, 10, 107, 181, 165, 107, 10, 181, 182, 182, 149, 183, 107, 154, 149, 165, 183, 165, 107, 181, 184, 70, 177, 154, 7, 169, 182, - 165, 184, 165, 72, 184, 165, 10, 184, 185, 70, 30, 38, 177, 25, 154, 7, 35, 163, 58, 149, 165, 185, 165, 72, 185, 186, 70, 177, 154, 7, 166, 164, 158, 149, 165, 186, 165, 72, 186, 165, 187, - 165, 188, 165, 189, 164, 151, 165, 98, 30, 34, 190, 57, 165, 108, 30, 7, 161, 190, 30, 190, 30, 17, 48, 190, 190, 8, 30, 190, 190, 8, 30, 17, 48, 154, 30, - 154, 70, 154, 71, 154, 72, 154, 130, 154, 118, 154, 119, 154, 106, 154, 117, 154, 107, 154, 108, - 148, 30, 148, 70, 148, 71, 148, 72, 148, 130, 148, 118, 148, 119, 148, 106, 148, 104, 148, 117, - 148, 116, 148, 107, 148, 108, 191, 148, 192, 191, 193, 194, 193, 193, 8, 194, 194, 164, 38, 193, 25, 194, 92, 194, 164, - 195, 7, 194, 196, 195, 196, 197, 74, 197, 191, 197, 198, 197, 199, 197, 200, 197, 201, 197, 202, - 197, 203, 197, 204, 197, 205, 197, 206, 206, 37, 207, 62, 206, 37, 62, 206, 37, 208, 62, 206, 37, 207, 8, 209, 62, 198, 85, 198, 86, - 198, 87, 198, 48, 198, 93, 198, 69, 204, 12, 204, 13, 199, 35, 210, 58, 199, 35, 211, 58, 199, 35, 211, 8, 210, 58, 211, 212, - 211, 213, 212, 211, 210, 214, 211, 211, 8, 210, 212, 211, 211, 8, 210, 214, 213, 8, 213, 213, 8, 210, 210, 213, 214, 99, 215, 200, 34, 57, - 200, 34, 216, 57, 200, 34, 216, 8, 57, 168, 217, 216, 218, 168, 168, 8, 217, 216, 216, 8, 218, 218, 191, 218, 219, 219, 191, 220, 217, 221, 7, 212, - 218, 222, 7, 212, 218, 223, 222, 224, 222, 225, 224, 226, 221, 69, 224, 69, 221, 48, 224, 48, 226, 191, - 226, 227, 227, 4, 227, 5, 227, 6, 227, 9, 227, 10, 227, 11, 227, 14, 227, 16, 227, 98, - 227, 87, 227, 20, 227, 21, 227, 23, 227, 31, 227, 32, 227, 33, 227, 44, 227, 85, 227, 61, - 227, 73, 227, 74, 227, 75, 227, 86, 227, 77, 227, 78, 227, 79, 227, 80, 227, 81, 227, 88, - 227, 89, 227, 91, 227, 92, 227, 101, 227, 82, 227, 102, 227, 103, 227, 105, 227, 114, 225, 35, 212, 58, - 228, 17, 215, 220, 17, 212, 229, 230, 229, 228, 230, 220, 205, 109, 231, 112, 231, 111, 137, 231, 205, 110, 137, 231, - 151, 197, 232, 101, 151, 232, 35, 207, 58, 151, 151, 35, 207, 58, 233, 44, 15, 30, 151, 232, 15, 226, 151, 151, 15, 226, 151, 234, 151, 44, 151, 37, 235, 62, 234, 233, - 236, 151, 236, 44, 236, 237, 237, 205, 151, 151, 205, 237, 151, 37, 235, 62, 237, 232, 37, 235, 62, 237, 237, 37, 235, 62, 237, 237, 35, 207, 58, 237, 237, 15, 226, 235, - 235, 238, 235, 238, 8, 238, 212, 238, 99, 212, 238, 238, 8, 212, 238, 238, 8, 99, 212, 239, 236, 239, 237, 240, 239, 240, 239, 55, - 240, 239, 43, 240, 55, 241, 240, 43, 241, 241, 240, 241, 11, 241, 241, 80, 241, 241, 78, 241, 241, 53, 241, 241, 41, 241, 241, 76, 241, - 241, 45, 241, 242, 241, 242, 240, 66, 242, 243, 242, 243, 243, 244, 242, 244, 65, 244, 12, 244, 59, 245, 243, 245, 245, 53, 243, - 245, 245, 41, 243, 246, 245, 246, 246, 39, 245, 246, 246, 26, 245, 246, 246, 28, 245, 247, 246, 248, 246, 247, 247, 249, 246, 248, 248, 249, 246, 249, 38, - 249, 25, 249, 36, 249, 24, 249, 33, 247, 247, 32, 246, 250, 247, 116, 194, 251, 248, 116, 194, 247, 250, 248, 251, 252, 247, - 253, 248, 252, 252, 254, 247, 253, 253, 254, 248, 254, 18, 254, 46, 254, 19, 254, 47, 255, 253, 256, 252, 255, 255, 1, 253, - 256, 256, 1, 252, 257, 255, 258, 256, 257, 257, 83, 255, 258, 258, 83, 256, 259, 257, 260, 258, 259, 259, 49, 257, 260, 260, 49, 258, 261, 259, - 262, 260, 261, 261, 2, 259, 262, 262, 2, 260, 263, 261, 264, 262, 263, 263, 52, 261, 264, 264, 52, 262, 265, 263, 266, 264, 265, 265, 97, 263, - 266, 266, 97, 264, 267, 265, 268, 266, 267, 265, 56, 212, 7, 215, 268, 266, 56, 212, 7, 212, 215, 267, 212, 268, 215, 269, 212, 270, 215, 271, - 212, 272, 215, 239, 17, 215, 212, 239, 17, 212, 215, 239, 273, 215, 212, 239, 273, 212, 273, 68, 273, 67, 273, 13, 273, 60, 273, 54, - 273, 42, 273, 40, 273, 27, 273, 29, 273, 3, 273, 84, 273, 51, 137, 215, 207, 212, 137, 137, 8, 215, - 207, 207, 8, 212, 274, 275, 274, 137, 275, 207, 136, 166, 128, 276, 136, 166, 189, 136, 166, 172, 136, 166, 170, 136, 166, 173, - 136, 166, 277, 136, 166, 278, 136, 166, 279, 136, 166, 280, 136, 166, 174, 136, 166, 281, 136, 166, 282, 136, 166, 176, 136, 166, 283, 284, 285, - 284, 286, 284, 287, 285, 288, 285, 187, 289, 290, 289, 291, 277, 292, 277, 175, 276, 171, 171, 34, 293, 57, - 294, 295, 294, 294, 295, 295, 136, 295, 166, 127, 284, 149, 293, 166, 293, 294, 296, 89, 296, 88, 297, 79, 298, 296, 299, - 287, 296, 300, 301, 297, 302, 303, 297, 304, 189, 303, 149, 299, 305, 300, 305, 302, 306, 304, 307, 299, 299, 8, 308, 300, 300, 8, 305, - 302, 302, 8, 306, 304, 304, 8, 307, 308, 192, 196, 229, 305, 192, 196, 230, 306, 192, 196, 229, 307, 192, 196, 230, 308, 309, 228, 305, 309, 220, 306, 309, 228, 307, 309, 220, - 309, 34, 310, 57, 309, 35, 311, 58, 310, 310, 312, 310, 312, 8, 311, 210, 209, 311, 313, 311, 313, 8, 210, 209, 312, 314, 312, 312, 8, 314, - 313, 315, 313, 313, 8, 315, 315, 210, 316, 314, 192, 230, 314, 222, 7, 192, 230, 314, 222, 7, 309, 230, 316, 192, 196, 230, 316, 309, 230, 208, 99, 192, 208, 99, 309, - 209, 209, 208, 172, 63, 166, 170, 207, 149, 173, 31, 37, 207, 62, 136, 16, 136, 173, 31, 37, 207, 62, 136, 292, 14, 136, 81, 37, 207, 62, 95, 292, 14, 136, 81, 37, 207, 62, 149, 292, 81, 37, 207, 62, 136, - 292, 21, 37, 274, 63, 275, 63, 275, 62, 136, 292, 21, 37, 301, 63, 275, 63, 275, 62, 136, 292, 21, 37, 298, 63, 275, 63, 275, 62, 136, 317, 32, 317, 117, 292, 21, 37, 239, 317, 207, 62, 136, 292, 21, 37, 318, 317, 207, 62, 136, 318, 296, 192, 196, 318, 297, 192, 196, 318, 296, 309, - 318, 297, 309, 278, 9, 149, 278, 9, 191, 149, 279, 4, 149, 279, 4, 191, 149, 280, 61, 275, 149, 174, 82, 37, 207, 62, 136, 175, 73, 37, 207, 62, 319, 319, 34, 320, 57, 319, 34, 320, 321, 320, 57, - 322, 323, 322, 322, 323, 320, 320, 322, 323, 5, 207, 7, 293, 321, 10, 7, 293, 281, 191, 7, 324, 324, 136, 324, 166, 127, 288, 282, 75, 207, 149, - 176, 77, 171, 325, 176, 77, 171, 326, 176, 77, 171, 325, 326, 325, 6, 37, 327, 62, 171, 326, 20, 171, 327, 192, 327, 309, 283, 91, 149, 328, 23, 288, 328, 192, 37, 329, 62, 196, 330, 331, 332, - 188, 328, 192, 37, 329, 62, 196, 330, 331, 332, 290, 288, 290, 328, 37, 329, 62, 196, 330, 331, 332, 201, 23, 192, 37, 329, 62, 196, 330, 331, 332, 201, 23, 37, 329, 62, 196, 330, 331, 332, 333, 329, 329, 329, 208, 329, 334, 329, 334, 8, - 329, 334, 8, 208, 334, 316, 334, 334, 8, 316, 335, 316, 330, 34, 332, 57, 331, 293, 271, 336, 96, 337, 215, 272, 336, 96, 337, 212, 271, 336, 96, 337, 128, 330, 331, 332, - 272, 336, 96, 337, 128, 330, 331, 332, 336, 192, 336, 206, 337, 223, 222, 37, 333, 62, 196, 330, 331, 332, 223, 65, 222, 338, 333, 62, 196, 330, 339, 340, 223, 118, 222, 37, 62, 196, 330, 331, 332, 223, 119, 222, 37, 341, 62, 196, 330, 331, 332, 341, 335, 338, 37, - 340, 57, 342, 22, 187, 342, 192, 338, 329, 62, 330, 339, 340, 291, 187, 291, 342, 338, 329, 62, 330, 339, 340, 203, 22, 192, 338, 329, 62, 330, 339, 340, 203, 22, 338, 329, 62, 330, 339, 340, 339, 331, 269, 100, 270, 100, - 269, 100, 65, 215, 270, 100, 65, 212, 269, 100, 215, 270, 100, 212, 286, 102, 192, 343, 344, 345, 346, 202, 102, 192, 343, 344, 345, 346, 347, 102, 343, 344, 345, 346, 202, 102, 343, 344, 345, 346, 347, 286, 344, 34, - 346, 57, 348, 104, 343, 343, 103, 239, 345, 345, 349, 349, 350, 349, 349, 350, 350, 223, 350, 348, 223, - 350, 63, 139, 139, 351, 351, 294, 140, 352, 353, 354, 352, 352, 353, 354, 355, 354, 354, 355, - 355, 356, 149, 355, 357, 149, 355, 295, 356, 114, 358, 359, 356, 114, 360, 358, 361, 358, 362, 358, 363, 358, 361, 8, 362, 358, 361, 8, 363, - 361, 364, 362, 65, 116, 364, 363, 34, 57, 363, 34, 365, 57, 363, 34, 365, 8, 57, 359, 106, 360, 365, 366, 365, 365, 8, 366, 366, 364, 366, 226, 116, 364, - 360, 69, 364, 192, 367, 357, 105, 65, 359, 357, 105, 368, 359, 357, 105, 368, 357, 105, 189, 357, 105, 284, 357, 105, 10, 367, 127, 289, 357, 105, 10, 367, 127, 347, - 357, 105, 10, 367, 212, 368, 34, 57, 368, 34, 369, 57, 368, 34, 369, 8, 57, 369, 370, 369, 369, 8, 370, 370, 226, 370, 226, 116, 226, 371, 134, 0 + 135, 122, 136, 135, 124, 137, 135, 125, 138, 135, 123, 139, 135, 126, 140, 135, 127, 141, 136, 142, 143, 142, 144, 142, 145, 145, 146, + 145, 147, 145, 145, 146, 145, 145, 147, 148, 149, 150, 64, 150, 63, 146, 116, 148, 150, 151, 152, 147, 153, 150, 154, 50, 15, 50, + 154, 50, 147, 153, 154, 150, 147, 153, 154, 117, 155, 150, 147, 153, 117, 155, 150, 153, 115, 151, 144, 143, 156, 157, 30, 157, 157, 15, 30, 158, 157, 159, + 160, 90, 158, 161, 160, 161, 161, 160, 156, 161, 162, 156, 162, 163, 139, 163, 163, 139, 164, 162, 164, 164, 8, 162, 159, 34, 57, + 159, 34, 163, 57, 162, 165, 159, 139, 161, 166, 139, 166, 166, 162, 166, 165, 7, 167, 35, 164, 58, 166, 165, 7, 167, 165, 159, 166, 165, 131, 165, 159, 168, 34, 167, 169, 57, 150, 168, 34, 167, 169, 8, 57, 150, + 170, 167, 128, 171, 170, 167, 129, 172, 170, 167, 129, 168, 170, 167, 173, 170, 167, 171, 170, 167, 174, 170, 167, 175, 170, 167, 176, 170, 167, 177, 166, 165, 7, 170, + 178, 79, 178, 92, 178, 30, 178, 178, 15, 30, 179, 179, 180, 180, 155, 7, 178, 180, 178, 155, 180, 180, 8, 155, 7, 178, 180, 180, 8, 178, 155, + 166, 71, 30, 37, 179, 62, 150, 166, 71, 30, 150, 181, 70, 30, 38, 178, 25, 155, 150, 166, 181, 166, 72, 181, 182, 70, 178, 155, 150, 166, 182, 166, 10, 182, 166, 108, 181, 166, 10, 108, 181, + 166, 108, 10, 181, 166, 10, 181, 166, 10, 108, 182, 166, 108, 10, 182, 183, 183, 150, 184, 108, 155, 150, 166, 184, 166, 108, 182, 185, 70, 178, 155, 7, 170, 183, + 166, 185, 166, 72, 185, 166, 10, 185, 186, 70, 30, 38, 178, 25, 155, 7, 35, 164, 58, 150, 166, 186, 166, 72, 186, 187, 70, 178, 155, 7, 167, 165, 159, 150, 166, 187, 166, 72, 187, 166, 188, + 166, 189, 166, 190, 165, 152, 166, 99, 30, 34, 191, 57, 166, 109, 30, 7, 162, 191, 30, 191, 30, 17, 48, 191, 191, 8, 30, 191, 191, 8, 30, 17, 48, 155, 30, + 155, 70, 155, 71, 155, 72, 155, 131, 155, 119, 155, 120, 155, 107, 155, 118, 155, 108, 155, 109, + 149, 30, 149, 70, 149, 71, 149, 72, 149, 131, 149, 119, 149, 120, 149, 107, 149, 105, 149, 118, + 149, 117, 149, 108, 149, 109, 192, 149, 193, 192, 194, 195, 194, 194, 8, 195, 195, 165, 38, 194, 25, 195, 92, 195, 165, + 196, 7, 195, 197, 196, 197, 198, 74, 198, 192, 198, 199, 198, 200, 198, 201, 198, 202, 198, 203, + 198, 204, 198, 205, 198, 206, 198, 207, 207, 37, 208, 62, 207, 37, 62, 207, 37, 209, 62, 207, 37, 208, 8, 210, 62, 199, 85, 199, 86, + 199, 87, 199, 48, 199, 93, 199, 69, 205, 12, 205, 13, 200, 35, 211, 58, 200, 35, 212, 58, 200, 35, 212, 8, 211, 58, 212, 213, + 212, 214, 213, 212, 211, 215, 212, 212, 8, 211, 213, 212, 212, 8, 211, 215, 214, 8, 214, 214, 8, 211, 211, 214, 215, 100, 216, 201, 34, 57, + 201, 34, 217, 57, 201, 34, 217, 8, 57, 169, 218, 217, 219, 169, 169, 8, 218, 217, 217, 8, 219, 219, 192, 219, 220, 220, 192, 221, 218, 222, 7, 213, + 219, 223, 7, 213, 219, 224, 223, 225, 223, 226, 225, 227, 222, 69, 225, 69, 222, 48, 225, 48, 227, 192, + 227, 228, 228, 4, 228, 5, 228, 6, 228, 9, 228, 10, 228, 11, 228, 14, 228, 16, 228, 99, + 228, 87, 228, 20, 228, 21, 228, 23, 228, 31, 228, 32, 228, 33, 228, 44, 228, 85, 228, 61, + 228, 73, 228, 74, 228, 75, 228, 86, 228, 77, 228, 78, 228, 79, 228, 80, 228, 81, 228, 88, + 228, 89, 228, 91, 228, 92, 228, 102, 228, 82, 228, 103, 228, 104, 228, 106, 228, 115, 226, 35, 213, 58, + 229, 17, 216, 221, 17, 213, 230, 231, 230, 229, 231, 221, 206, 110, 232, 113, 232, 112, 138, 232, 206, 111, 138, 232, + 152, 198, 233, 102, 152, 233, 35, 208, 58, 152, 152, 35, 208, 58, 152, 152, 98, 35, 208, 58, 234, 44, 15, 30, 152, 233, 15, 227, 152, 152, 15, 227, 152, 152, 98, 227, 152, 235, + 152, 44, 152, 37, 236, 62, 235, 234, 237, 152, 237, 44, 237, 238, 238, 206, 152, 152, 206, 238, 152, 37, 236, 62, 238, 152, 98, 37, 236, 62, 238, 233, 37, 236, 62, 238, 238, 37, 236, 62, + 238, 238, 98, 37, 236, 62, 238, 238, 35, 208, 58, 238, 238, 98, 35, 208, 58, 238, 238, 15, 227, 238, 238, 98, 227, 236, 236, 239, 236, 239, 8, 239, 213, 239, 100, 213, + 239, 239, 8, 213, 239, 239, 8, 100, 213, 240, 237, 240, 238, 241, 240, 241, 240, 55, 241, 240, 43, 241, 55, 242, 241, 43, 242, 242, 241, + 242, 11, 242, 242, 80, 242, 242, 78, 242, 242, 53, 242, 242, 41, 242, 242, 76, 242, 242, 45, 242, 243, 242, 243, 241, 66, 243, 244, 243, + 244, 244, 245, 243, 245, 65, 245, 12, 245, 59, 246, 244, 246, 246, 53, 244, 246, 246, 41, 244, 247, 246, 247, 247, 39, 246, 247, 247, 26, 246, + 247, 247, 28, 246, 248, 247, 249, 247, 248, 248, 250, 247, 249, 249, 250, 247, 250, 38, 250, 25, 250, 36, 250, 24, 250, 33, + 250, 117, 248, 248, 32, 247, 251, 248, 252, 249, 251, 251, 253, 248, 252, 252, 253, 249, 253, 18, 253, 46, 253, 19, 253, 47, + 254, 252, 255, 251, 254, 254, 1, 252, 255, 255, 1, 251, 256, 254, 257, 255, 256, 256, 83, 254, 257, 257, 83, 255, 258, 256, 259, 257, + 258, 258, 49, 256, 259, 259, 49, 257, 260, 258, 261, 259, 260, 260, 2, 258, 261, 261, 2, 259, 262, 260, 263, 261, 262, 262, 52, 260, 263, 263, 52, 261, + 264, 262, 265, 263, 264, 264, 97, 262, 265, 265, 97, 263, 266, 264, 267, 265, 266, 264, 56, 213, 7, 216, 267, 265, 56, 213, 7, 213, 216, 266, 213, 267, + 216, 268, 213, 269, 216, 270, 213, 271, 216, 240, 17, 216, 213, 240, 17, 213, 216, 240, 272, 216, 213, 240, 272, 213, 272, 68, 272, 67, + 272, 13, 272, 60, 272, 54, 272, 42, 272, 40, 272, 27, 272, 29, 272, 3, 272, 84, 272, 51, + 138, 216, 208, 213, 138, 138, 8, 216, 208, 208, 8, 213, 273, 274, 273, 138, 274, 208, 137, 167, 129, 275, 137, 167, 190, + 137, 167, 173, 137, 167, 171, 137, 167, 174, 137, 167, 276, 137, 167, 277, 137, 167, 278, 137, 167, 279, 137, 167, 175, 137, 167, 280, 137, 167, 281, + 137, 167, 177, 137, 167, 282, 283, 284, 283, 285, 283, 286, 284, 287, 284, 188, 288, 289, 288, 290, 276, 291, + 276, 176, 275, 172, 172, 34, 292, 57, 293, 294, 293, 293, 294, 294, 137, 294, 167, 128, 283, 150, 292, 167, 292, 293, 295, 89, + 295, 88, 296, 79, 297, 295, 298, 286, 295, 299, 300, 296, 301, 302, 296, 303, 190, 302, 150, 298, 304, 299, 304, 301, 305, + 303, 306, 298, 298, 8, 307, 299, 299, 8, 304, 301, 301, 8, 305, 303, 303, 8, 306, 307, 193, 197, 230, 304, 193, 197, 231, 305, 193, 197, 230, 306, 193, 197, 231, 307, 308, 229, + 304, 308, 221, 305, 308, 229, 306, 308, 221, 308, 34, 309, 57, 308, 35, 310, 58, 309, 309, 311, 309, 311, 8, 310, 211, 210, 310, 312, + 310, 312, 8, 211, 210, 311, 313, 311, 311, 8, 313, 312, 314, 312, 312, 8, 314, 314, 211, 315, 313, 193, 231, 313, 223, 7, 193, 231, 313, 223, 7, 308, 231, 315, 193, 197, 231, + 315, 308, 231, 209, 100, 193, 209, 100, 308, 210, 210, 209, 173, 63, 167, 171, 208, 150, 174, 31, 37, 208, 62, 137, 16, 137, 174, 31, 37, 208, 62, 137, + 291, 14, 137, 81, 37, 208, 62, 95, 291, 14, 137, 81, 37, 208, 62, 150, 291, 81, 37, 208, 62, 137, 291, 21, 37, 273, 63, 274, 63, 274, 62, 137, 291, 21, 37, 300, 63, 274, 63, 274, 62, 137, 291, 21, 37, 297, 63, 274, 63, 274, 62, 137, 316, 32, 316, 118, 291, 21, 37, 240, 316, 208, 62, 137, 291, 21, 37, 317, 316, 208, 62, 137, + 317, 295, 193, 197, 317, 296, 193, 197, 317, 295, 308, 317, 296, 308, 277, 9, 150, 277, 9, 192, 150, 278, 4, 150, 278, 4, 192, 150, 279, 61, 274, 150, 175, 82, 37, 208, 62, 137, + 176, 73, 37, 208, 62, 318, 318, 34, 319, 57, 318, 34, 319, 320, 319, 57, 321, 322, 321, 321, 322, 319, 319, 321, 322, 5, 208, 7, 292, 320, 10, 7, 292, 280, 192, 7, 323, + 323, 137, 323, 167, 128, 287, 281, 75, 208, 150, 177, 77, 172, 324, 177, 77, 172, 325, 177, 77, 172, 324, 325, 324, 6, 37, 326, 62, 172, 325, 20, 172, 326, 193, 326, 308, + 282, 91, 150, 327, 23, 287, 327, 193, 37, 328, 62, 197, 329, 330, 331, 189, 327, 193, 37, 328, 62, 197, 329, 330, 331, 289, 287, 289, 327, 37, 328, 62, 197, 329, 330, 331, 202, 23, 193, 37, 328, 62, 197, 329, 330, 331, 202, 23, 37, 328, 62, 197, 329, 330, 331, 332, 328, 328, + 328, 209, 328, 333, 328, 333, 8, 328, 333, 8, 209, 333, 315, 333, 333, 8, 315, 334, 315, 329, 34, 331, 57, 330, 292, + 270, 335, 96, 336, 216, 271, 335, 96, 336, 213, 270, 335, 96, 336, 129, 329, 330, 331, 271, 335, 96, 336, 129, 329, 330, 331, 335, 193, 335, 207, 336, 224, 223, 37, 332, 62, 197, 329, 330, 331, 224, 65, 223, 337, 332, 62, 197, 329, 338, 339, 224, 119, 223, 37, 62, 197, 329, 330, 331, + 224, 120, 223, 37, 340, 62, 197, 329, 330, 331, 340, 334, 337, 37, 339, 57, 341, 22, 188, 341, 193, 337, 328, 62, 329, 338, 339, 290, 188, 290, 341, 337, 328, 62, 329, 338, 339, 204, 22, 193, 337, 328, 62, 329, 338, 339, 204, 22, 337, 328, 62, 329, 338, 339, + 338, 330, 268, 101, 269, 101, 268, 101, 65, 216, 269, 101, 65, 213, 268, 101, 216, 269, 101, 213, 285, 103, 193, 342, 343, 344, 345, 203, 103, 193, 342, 343, 344, 345, 346, 103, 342, 343, 344, 345, + 203, 103, 342, 343, 344, 345, 346, 285, 343, 34, 345, 57, 347, 105, 342, 342, 104, 240, 344, 344, 348, 348, 349, + 348, 348, 349, 349, 224, 349, 347, 224, 349, 63, 140, 140, 350, 350, 293, 141, 351, 352, 353, 351, + 351, 352, 353, 354, 353, 353, 354, 354, 355, 150, 354, 356, 150, 354, 294, 355, 115, 357, 358, 355, 115, 359, 357, 360, 357, 361, + 357, 362, 357, 360, 8, 361, 357, 360, 8, 362, 360, 363, 361, 65, 117, 363, 362, 34, 57, 362, 34, 364, 57, 362, 34, 364, 8, 57, 358, 107, 359, 364, 365, + 364, 364, 8, 365, 365, 363, 365, 227, 117, 363, 359, 69, 363, 193, 366, 356, 106, 65, 358, 356, 106, 367, 358, 356, 106, 367, 356, 106, 190, + 356, 106, 283, 356, 106, 10, 366, 128, 288, 356, 106, 10, 366, 128, 346, 356, 106, 10, 366, 213, 367, 34, 57, 367, 34, 368, 57, 367, 34, 368, 8, 57, 368, 369, 368, 368, 8, 369, 369, 227, + 369, 227, 117, 227, 370, 135, 0 }; const int QmlJSGrammar::rule_index [] = { @@ -294,618 +296,593 @@ const int QmlJSGrammar::rule_index [] = { 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 682, 685, 688, 689, 690, 692, 694, 696, 698, 702, - 706, 708, 710, 715, 720, 724, 728, 732, 734, 740, - 742, 744, 747, 750, 753, 758, 763, 768, 773, 777, - 778, 780, 783, 785, 788, 792, 797, 799, 801, 803, - 806, 809, 812, 815, 817, 820, 823, 826, 829, 832, - 835, 838, 840, 844, 846, 850, 852, 854, 856, 858, - 862, 866, 868, 872, 876, 880, 882, 884, 888, 892, - 894, 896, 898, 900, 902, 906, 910, 914, 916, 918, - 920, 922, 926, 930, 932, 934, 936, 938, 940, 942, - 946, 950, 952, 954, 958, 962, 964, 966, 970, 974, - 976, 978, 982, 986, 988, 990, 994, 998, 1000, 1002, - 1006, 1010, 1012, 1014, 1020, 1026, 1028, 1030, 1032, 1034, - 1036, 1038, 1042, 1046, 1050, 1054, 1056, 1058, 1060, 1062, - 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, - 1086, 1090, 1091, 1092, 1094, 1096, 1100, 1103, 1106, 1109, - 1112, 1115, 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139, - 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157, 1159, - 1163, 1165, 1168, 1170, 1175, 1177, 1179, 1181, 1183, 1185, - 1188, 1191, 1194, 1197, 1200, 1202, 1204, 1206, 1208, 1212, - 1216, 1220, 1224, 1228, 1232, 1236, 1240, 1243, 1246, 1249, - 1252, 1256, 1260, 1261, 1263, 1266, 1269, 1271, 1276, 1278, - 1282, 1284, 1288, 1291, 1294, 1299, 1304, 1308, 1311, 1314, - 1317, 1318, 1320, 1322, 1323, 1326, 1334, 1340, 1348, 1356, - 1362, 1372, 1382, 1392, 1394, 1396, 1404, 1412, 1416, 1420, - 1423, 1426, 1429, 1433, 1436, 1440, 1444, 1450, 1456, 1460, - 1466, 1468, 1471, 1472, 1474, 1479, 1483, 1487, 1489, 1493, - 1497, 1501, 1505, 1510, 1516, 1519, 1521, 1523, 1526, 1528, - 1538, 1548, 1550, 1559, 1569, 1578, 1580, 1581, 1583, 1585, - 1588, 1592, 1594, 1598, 1600, 1602, 1604, 1606, 1611, 1616, - 1624, 1632, 1634, 1636, 1637, 1646, 1656, 1665, 1675, 1677, - 1679, 1681, 1683, 1692, 1694, 1702, 1711, 1719, 1721, 1723, - 1725, 1729, 1733, 1736, 1739, 1746, 1753, 1759, 1765, 1767, - 1769, 1771, 1773, 1774, 1777, 1778, 1780, 1782, 1785, 1787, - 1790, 1792, 1793, 1795, 1797, 1799, 1801, 1802, 1804, 1806, - 1809, 1812, 1815, 1817, 1821, 1824, 1826, 1828, 1830, 1834, - 1838, 1840, 1844, 1847, 1851, 1856, 1859, 1861, 1865, 1867, - 1871, 1873, 1875, 1876, 1880, 1884, 1887, 1890, 1893, 1899, - 1905, 1910, 1913, 1917, 1922, 1924, 1928, 1930, 1934 + 706, 708, 710, 715, 720, 726, 730, 734, 738, 742, + 744, 750, 752, 754, 757, 760, 763, 768, 774, 779, + 784, 790, 795, 801, 805, 809, 810, 812, 815, 817, + 820, 824, 829, 831, 833, 835, 838, 841, 844, 847, + 849, 852, 855, 858, 861, 864, 867, 870, 872, 876, + 878, 882, 884, 886, 888, 890, 894, 898, 900, 904, + 908, 912, 914, 916, 920, 924, 926, 928, 930, 932, + 934, 936, 940, 942, 944, 948, 952, 954, 956, 958, + 960, 962, 964, 968, 972, 974, 976, 980, 984, 986, + 988, 992, 996, 998, 1000, 1004, 1008, 1010, 1012, 1016, + 1020, 1022, 1024, 1028, 1032, 1034, 1036, 1042, 1048, 1050, + 1052, 1054, 1056, 1058, 1060, 1064, 1068, 1072, 1076, 1078, + 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098, + 1100, 1102, 1104, 1108, 1112, 1113, 1114, 1116, 1118, 1122, + 1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152, + 1155, 1158, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, + 1177, 1179, 1181, 1185, 1187, 1190, 1192, 1197, 1199, 1201, + 1203, 1205, 1207, 1210, 1213, 1216, 1219, 1222, 1224, 1226, + 1228, 1230, 1234, 1238, 1242, 1246, 1250, 1254, 1258, 1262, + 1265, 1268, 1271, 1274, 1278, 1282, 1283, 1285, 1288, 1291, + 1293, 1298, 1300, 1304, 1306, 1310, 1313, 1316, 1321, 1326, + 1330, 1333, 1336, 1339, 1340, 1342, 1344, 1345, 1348, 1356, + 1362, 1370, 1378, 1384, 1394, 1404, 1414, 1416, 1418, 1426, + 1434, 1438, 1442, 1445, 1448, 1451, 1455, 1458, 1462, 1466, + 1472, 1478, 1482, 1488, 1490, 1493, 1494, 1496, 1501, 1505, + 1509, 1511, 1515, 1519, 1523, 1527, 1532, 1538, 1541, 1543, + 1545, 1548, 1550, 1560, 1570, 1572, 1581, 1591, 1600, 1602, + 1603, 1605, 1607, 1610, 1614, 1616, 1620, 1622, 1624, 1626, + 1628, 1633, 1638, 1646, 1654, 1656, 1658, 1659, 1668, 1678, + 1687, 1697, 1699, 1701, 1703, 1705, 1714, 1716, 1724, 1733, + 1741, 1743, 1745, 1747, 1751, 1755, 1758, 1761, 1768, 1775, + 1781, 1787, 1789, 1791, 1793, 1795, 1796, 1799, 1800, 1802, + 1804, 1807, 1809, 1812, 1814, 1815, 1817, 1819, 1821, 1823, + 1824, 1826, 1828, 1831, 1834, 1837, 1839, 1843, 1846, 1848, + 1850, 1852, 1856, 1860, 1862, 1866, 1869, 1873, 1878, 1881, + 1883, 1887, 1889, 1893, 1895, 1897, 1898, 1902, 1906, 1909, + 1912, 1915, 1921, 1927, 1932, 1935, 1939, 1944, 1946, 1950, + 1952, 1956 }; #endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO const short QmlJSGrammar::action_default [] = { - 0, 0, 464, 464, 464, 0, 26, 0, 302, 147, - 360, 0, 378, 532, 332, 340, 336, 278, 150, 352, - 356, 154, 328, 294, 3, 149, 151, 145, 134, 279, - 146, 344, 348, 261, 258, 299, 277, 260, 148, 251, - 152, 321, 307, 0, 131, 563, 133, 0, 165, 166, + 0, 0, 467, 467, 467, 0, 26, 0, 308, 147, + 363, 0, 381, 535, 335, 343, 339, 284, 150, 355, + 359, 154, 331, 300, 3, 149, 151, 145, 134, 285, + 146, 347, 351, 263, 260, 305, 283, 262, 148, 251, + 152, 324, 313, 0, 131, 566, 133, 0, 165, 166, 161, 128, 0, 0, 126, 121, 0, 177, 0, 0, 0, 163, 0, 0, 247, 159, 162, 130, 125, 0, 0, 122, 124, 132, 127, 123, 129, 164, 252, 0, - 144, 0, 160, 0, 0, 549, 153, 319, 292, 284, - 358, 0, 0, 154, 145, 279, 301, 281, 280, 0, - 297, 298, 296, 295, 300, 534, 0, 528, 0, 464, - 525, 415, 0, 413, 464, 411, 527, 361, 0, 379, - 333, 341, 337, 393, 391, 353, 357, 392, 399, 388, - 329, 389, 0, 145, 390, 407, 396, 279, 345, 349, - 320, 394, 306, 408, 0, 0, 0, 464, 0, 0, - 0, 0, 383, 463, 0, 0, 0, 419, 0, 0, - 550, 397, 398, 318, 0, 0, 387, 395, 359, 534, - 0, 529, 0, 464, 0, 531, 526, 0, 331, 0, - 324, 326, 325, 327, 322, 0, 0, 313, 311, 0, - 314, 312, 310, 308, 0, 0, 0, 304, 305, 303, - 103, 0, 0, 139, 316, 140, 0, 0, 264, 257, - 200, 201, 202, 203, 204, 236, 230, 205, 232, 206, - 207, 208, 209, 210, 238, 237, 211, 212, 213, 214, - 215, 239, 216, 217, 231, 218, 219, 233, 220, 234, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 235, - 0, 0, 254, 381, 0, 0, 256, 0, 253, 0, - 0, 270, 271, 0, 273, 0, 272, 275, 0, 276, - 259, 274, 255, 0, 136, 0, 0, 138, 137, 315, - 0, 339, 0, 335, 0, 0, 0, 0, 355, 351, - 0, 347, 0, 343, 465, 15, 16, 464, 0, 497, - 498, 0, 0, 499, 509, 0, 135, 517, 522, 143, - 244, 518, 519, 0, 0, 443, 177, 0, 142, 244, - 141, 457, 246, 0, 242, 458, 520, 523, 521, 143, - 0, 464, 0, 510, 459, 460, 244, 449, 444, 194, - 195, 135, 193, 0, 0, 0, 199, 197, 454, 445, - 450, 441, 0, 244, 244, 455, 456, 0, 240, 0, - 447, 451, 178, 461, 175, 442, 177, 452, 461, 453, - 462, 448, 176, 446, 0, 375, 368, 0, 373, 374, - 372, 371, 377, 370, 369, 366, 367, 376, 365, 363, - 0, 484, 485, 0, 482, 483, 508, 0, 0, 0, - 0, 0, 0, 469, 468, 382, 384, 0, 0, 279, - 0, 0, 418, 417, 0, 0, 0, 380, 383, 0, - 385, 383, 0, 464, 471, 0, 474, 475, 0, 464, - 477, 0, 0, 0, 364, 0, 464, 476, 362, 143, - 420, 480, 425, 478, 434, 0, 143, 0, 429, 243, - 245, 433, 0, 241, 437, 438, 383, 0, 383, 0, - 464, 473, 143, 481, 427, 422, 479, 435, 439, 0, - 143, 0, 431, 243, 383, 0, 383, 0, 464, 472, - 409, 386, 464, 0, 410, 401, 0, 403, 0, 404, - 400, 0, 402, 0, 542, 414, 0, 517, 540, 0, - 0, 464, 548, 0, 543, 541, 143, 421, 0, 426, - 244, 0, 430, 563, 0, 0, 565, 560, 0, 567, - 566, 0, 569, 0, 126, 571, 127, 0, 562, 555, - 561, 568, 570, 517, 516, 0, 143, 0, 464, 0, - 535, 0, 0, 143, 0, 464, 0, 537, 0, 0, - 524, 539, 0, 143, 0, 464, 0, 538, 0, 517, - 0, 143, 0, 464, 0, 536, 564, 0, 0, 464, - 467, 464, 466, 0, 486, 0, 0, 0, 488, 493, - 491, 494, 0, 0, 492, 493, 0, 489, 0, 490, - 464, 496, 0, 464, 495, 0, 500, 0, 501, 502, - 0, 0, 503, 0, 506, 507, 0, 0, 504, 505, - 0, 0, 464, 470, 0, 0, 464, 487, 554, 0, - 552, 143, 0, 423, 428, 244, 436, 440, 0, 432, - 424, 530, 0, 412, 0, 330, 0, 323, 0, 0, - 309, 317, 0, 338, 0, 334, 0, 0, 270, 263, - 269, 0, 268, 0, 267, 0, 0, 0, 0, 354, - 350, 0, 346, 0, 342, 270, 0, 265, 270, 0, - 266, 563, 0, 0, 565, 0, 556, 565, 0, 558, - 285, 284, 0, 517, 517, 0, 143, 0, 464, 0, - 514, 0, 143, 0, 464, 0, 515, 0, 517, 517, - 0, 0, 464, 0, 546, 0, 0, 464, 0, 547, - 188, 187, 192, 184, 0, 0, 180, 189, 0, 181, - 186, 182, 0, 191, 170, 0, 178, 0, 177, 168, - 0, 173, 174, 0, 169, 179, 171, 172, 167, 0, - 0, 156, 157, 461, 155, 0, 158, 289, 283, 261, - 262, 291, 288, 282, 0, 0, 248, 250, 0, 249, - 290, 287, 286, 553, 0, 551, 0, 293, 0, 0, - 6, 578, 575, 579, 464, 583, 0, 0, 582, 581, - 580, 608, 606, 603, 0, 0, 607, 605, 0, 596, - 601, 0, 611, 0, 559, 610, 0, 512, 405, 0, - 544, 406, 609, 563, 517, 0, 143, 0, 464, 0, - 513, 517, 0, 0, 464, 0, 545, 0, 565, 0, - 557, 615, 0, 617, 612, 0, 613, 616, 614, 0, - 618, 604, 602, 0, 591, 586, 585, 587, 588, 0, - 0, 584, 0, 589, 590, 0, 597, 599, 0, 593, - 0, 600, 0, 594, 598, 595, 0, 592, 5, 573, - 464, 2, 0, 101, 100, 0, 133, 0, 0, 509, - 542, 122, 124, 132, 123, 4, 32, 0, 45, 44, - 98, 74, 77, 95, 91, 0, 88, 102, 0, 517, - 0, 143, 0, 464, 0, 511, 28, 31, 0, 0, - 0, 30, 29, 40, 36, 0, 41, 37, 0, 0, - 105, 0, 42, 0, 0, 82, 78, 93, 63, 62, - 61, 0, 0, 63, 0, 0, 0, 64, 0, 120, - 117, 115, 110, 118, 114, 111, 113, 119, 116, 112, - 73, 0, 76, 464, 0, 85, 54, 55, 56, 58, - 0, 0, 59, 57, 52, 464, 53, 415, 162, 164, - 183, 0, 0, 0, 0, 198, 0, 196, 185, 50, - 49, 0, 190, 51, 90, 86, 0, 80, 83, 0, - 0, 0, 0, 0, 106, 0, 104, 108, 0, 109, - 0, 107, 63, 0, 0, 0, 0, 0, 0, 0, - 0, 38, 0, 0, 39, 94, 0, 464, 0, 261, - 0, 0, 97, 0, 99, 75, 96, 92, 63, 0, - 0, 0, 0, 0, 0, 464, 0, 261, 0, 0, - 111, 79, 89, 87, 81, 84, 63, 0, 72, 65, - 0, 63, 66, 0, 0, 0, 67, 0, 0, 0, - 0, 69, 70, 0, 71, 68, 33, 43, 464, 0, - 0, 60, 177, 0, 0, 46, 47, 0, 48, 8, - 0, 0, 9, 0, 11, 0, 10, 1, 25, 18, - 14, 0, 17, 13, 12, 27, 0, 35, 7, 34, - 19, 0, 21, 0, 0, 24, 0, 20, 22, 0, - 0, 23, 619 + 144, 0, 160, 0, 0, 552, 153, 298, 290, 361, + 0, 0, 154, 145, 285, 307, 287, 286, 0, 303, + 304, 302, 301, 306, 537, 0, 531, 0, 467, 528, + 418, 0, 416, 467, 414, 530, 364, 0, 382, 336, + 344, 340, 396, 394, 356, 360, 395, 402, 391, 332, + 392, 0, 145, 393, 410, 399, 285, 348, 352, 323, + 397, 312, 411, 0, 0, 0, 467, 0, 0, 0, + 0, 386, 466, 0, 0, 0, 422, 0, 0, 553, + 400, 401, 0, 0, 390, 398, 362, 537, 0, 532, + 0, 467, 0, 534, 529, 0, 334, 0, 327, 329, + 328, 330, 325, 0, 321, 319, 317, 0, 320, 318, + 316, 314, 0, 0, 0, 310, 311, 309, 322, 0, + 342, 0, 338, 0, 0, 0, 0, 358, 354, 0, + 350, 0, 346, 468, 15, 0, 16, 384, 467, 0, + 500, 501, 0, 0, 502, 512, 0, 135, 520, 525, + 143, 244, 521, 522, 0, 0, 446, 177, 0, 142, + 244, 103, 0, 0, 139, 141, 140, 0, 0, 0, + 266, 258, 200, 201, 202, 203, 204, 236, 230, 205, + 232, 206, 207, 208, 209, 210, 238, 237, 211, 212, + 213, 214, 215, 239, 216, 217, 231, 218, 219, 233, + 220, 234, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 235, 0, 254, 259, 0, 0, 255, 0, 0, + 257, 0, 253, 0, 0, 276, 277, 0, 279, 0, + 278, 281, 0, 282, 261, 280, 256, 0, 136, 0, + 0, 138, 137, 460, 246, 0, 242, 461, 523, 526, + 524, 143, 0, 467, 0, 513, 462, 463, 244, 452, + 447, 194, 195, 135, 193, 0, 0, 0, 199, 197, + 457, 448, 453, 444, 0, 244, 244, 458, 459, 0, + 240, 0, 450, 454, 178, 464, 175, 445, 177, 455, + 464, 456, 465, 451, 176, 449, 0, 378, 371, 0, + 376, 377, 375, 374, 380, 373, 372, 369, 370, 379, + 368, 366, 0, 487, 488, 0, 485, 486, 511, 0, + 0, 0, 0, 0, 0, 472, 471, 385, 387, 0, + 0, 285, 0, 0, 421, 420, 0, 0, 0, 383, + 386, 0, 388, 386, 0, 467, 474, 0, 477, 478, + 0, 467, 480, 0, 0, 0, 367, 0, 467, 479, + 365, 143, 423, 483, 428, 481, 437, 0, 143, 0, + 432, 243, 245, 436, 0, 241, 440, 441, 386, 0, + 386, 0, 467, 476, 143, 484, 430, 425, 482, 438, + 442, 0, 143, 0, 434, 243, 386, 0, 386, 0, + 467, 475, 412, 389, 467, 0, 413, 404, 0, 406, + 0, 407, 403, 0, 405, 0, 545, 417, 0, 520, + 543, 0, 0, 467, 551, 0, 546, 544, 143, 424, + 0, 429, 244, 0, 433, 566, 0, 0, 568, 563, + 0, 570, 569, 0, 572, 0, 126, 574, 127, 0, + 565, 558, 564, 571, 573, 520, 519, 0, 143, 0, + 467, 0, 538, 0, 0, 143, 0, 467, 0, 540, + 0, 0, 527, 542, 0, 143, 0, 467, 0, 541, + 0, 520, 0, 143, 0, 467, 0, 539, 567, 0, + 0, 467, 470, 467, 469, 0, 489, 0, 0, 0, + 491, 496, 494, 497, 0, 0, 495, 496, 0, 492, + 0, 493, 467, 499, 0, 467, 498, 0, 503, 0, + 504, 505, 0, 0, 506, 0, 509, 510, 0, 0, + 507, 508, 0, 0, 467, 473, 0, 0, 467, 490, + 557, 0, 555, 143, 0, 426, 431, 244, 439, 443, + 0, 435, 427, 533, 0, 415, 0, 333, 0, 326, + 0, 315, 0, 341, 0, 337, 0, 0, 276, 0, + 265, 274, 0, 272, 0, 270, 275, 0, 276, 0, + 273, 0, 271, 0, 0, 0, 0, 357, 353, 0, + 349, 0, 345, 276, 0, 0, 267, 276, 0, 268, + 276, 0, 269, 566, 0, 0, 568, 0, 559, 568, + 0, 561, 291, 290, 0, 520, 520, 0, 143, 0, + 467, 0, 517, 0, 143, 0, 467, 0, 518, 0, + 520, 520, 0, 0, 467, 0, 549, 0, 0, 467, + 0, 550, 188, 187, 192, 184, 0, 0, 180, 189, + 0, 181, 186, 182, 0, 191, 170, 0, 178, 0, + 177, 168, 0, 173, 174, 0, 169, 179, 171, 172, + 167, 0, 0, 156, 157, 464, 155, 0, 158, 295, + 289, 263, 264, 297, 294, 288, 0, 0, 248, 250, + 0, 249, 296, 293, 292, 556, 0, 554, 0, 299, + 0, 0, 6, 581, 578, 582, 467, 586, 0, 0, + 585, 584, 583, 611, 609, 606, 0, 0, 610, 608, + 0, 599, 604, 0, 614, 0, 562, 613, 0, 515, + 408, 0, 547, 409, 612, 566, 520, 0, 143, 0, + 467, 0, 516, 520, 0, 0, 467, 0, 548, 0, + 568, 0, 560, 618, 0, 620, 615, 0, 616, 619, + 617, 0, 621, 607, 605, 0, 594, 589, 588, 590, + 591, 0, 0, 587, 0, 592, 593, 0, 600, 602, + 0, 596, 0, 603, 0, 597, 601, 598, 0, 595, + 5, 576, 467, 2, 0, 101, 100, 0, 133, 0, + 0, 512, 545, 122, 124, 132, 123, 4, 32, 0, + 45, 44, 98, 74, 77, 95, 91, 0, 88, 102, + 0, 520, 0, 143, 0, 467, 0, 514, 28, 31, + 0, 0, 0, 30, 29, 40, 36, 0, 41, 37, + 0, 0, 105, 0, 42, 0, 0, 82, 78, 93, + 63, 62, 61, 0, 0, 63, 0, 0, 0, 64, + 0, 120, 117, 115, 110, 118, 114, 111, 113, 119, + 116, 112, 73, 0, 76, 467, 0, 85, 54, 55, + 56, 58, 0, 0, 59, 57, 52, 467, 53, 418, + 162, 164, 183, 0, 0, 0, 0, 198, 0, 196, + 185, 50, 49, 0, 190, 51, 90, 86, 0, 80, + 83, 0, 0, 0, 0, 0, 106, 0, 104, 108, + 0, 109, 0, 107, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 39, 94, 0, 467, + 0, 263, 0, 0, 97, 0, 99, 75, 96, 92, + 63, 0, 0, 0, 0, 0, 0, 467, 0, 263, + 0, 0, 111, 79, 89, 87, 81, 84, 63, 0, + 72, 65, 0, 63, 66, 0, 0, 0, 67, 0, + 0, 0, 0, 69, 70, 0, 71, 68, 33, 43, + 467, 0, 0, 60, 177, 0, 0, 46, 47, 0, + 48, 8, 0, 0, 9, 0, 11, 0, 10, 1, + 25, 18, 14, 0, 17, 13, 12, 27, 0, 35, + 7, 34, 19, 0, 21, 0, 0, 24, 0, 20, + 22, 0, 0, 23, 622 }; const short QmlJSGrammar::goto_default [] = { - 7, 1077, 113, 24, 875, 858, 770, 1073, 1088, 1069, - 1072, 1076, 1074, 1081, 28, 942, 1078, 33, 1075, 1093, - 1028, 1085, 898, 897, 912, 876, 877, 878, 905, 1000, - 911, 879, 111, 956, 961, 945, 131, 480, 129, 134, - 167, 143, 162, 979, 1043, 1042, 881, 882, 974, 886, - 884, 883, 880, 864, 863, 166, 983, 27, 13, 275, - 204, 318, 319, 39, 30, 9, 38, 25, 18, 26, - 40, 86, 21, 132, 311, 373, 727, 725, 119, 362, - 737, 12, 714, 960, 713, 710, 322, 962, 523, 522, - 342, 339, 340, 211, 450, 467, 444, 757, 43, 37, - 34, 263, 36, 17, 262, 137, 89, 88, 23, 35, - 99, 8, 142, 140, 41, 185, 163, 87, 130, 22, - 179, 14, 120, 16, 122, 15, 121, 31, 138, 32, - 139, 19, 125, 20, 126, 90, 168, 10, 117, 431, - 407, 573, 481, 124, 127, 123, 141, 136, 161, 128, - 486, 490, 485, 492, 487, 802, 798, 801, 135, 116, - 114, 115, 491, 164, 411, 440, 507, 415, 465, 165, - 623, 442, 464, 624, 448, 310, 343, 359, 338, 360, - 337, 361, 308, 425, 408, 578, 582, 585, 581, 580, - 299, 598, 599, 606, 862, 534, 109, 502, 631, 535, - 312, 551, 118, 106, 698, 503, 504, 552, 488, 672, - 516, 518, 529, 795, 521, 520, 519, 859, 772, 771, - 774, 773, 769, 768, 833, 787, 836, 835, 837, 838, - 847, 848, 846, 791, 782, 822, 821, 0 + 7, 1089, 112, 24, 887, 870, 782, 1085, 1100, 1081, + 1084, 1088, 1086, 1093, 28, 954, 1090, 33, 1087, 1105, + 1040, 1097, 910, 909, 924, 888, 889, 890, 917, 1012, + 923, 891, 110, 968, 973, 957, 130, 482, 128, 133, + 165, 142, 161, 991, 1055, 1054, 893, 894, 986, 898, + 896, 895, 892, 876, 875, 164, 995, 27, 13, 319, + 245, 239, 240, 39, 30, 9, 38, 25, 18, 26, + 40, 86, 21, 131, 232, 375, 739, 737, 118, 364, + 749, 12, 726, 972, 725, 722, 324, 974, 525, 524, + 344, 341, 342, 253, 452, 469, 446, 769, 43, 37, + 34, 307, 36, 17, 306, 136, 88, 87, 23, 35, + 98, 8, 141, 139, 41, 183, 129, 22, 177, 14, + 119, 16, 121, 15, 120, 31, 137, 32, 138, 19, + 124, 20, 125, 89, 166, 10, 116, 433, 409, 575, + 483, 123, 126, 122, 140, 135, 160, 127, 488, 492, + 487, 494, 489, 814, 810, 813, 134, 115, 113, 114, + 493, 162, 413, 442, 509, 417, 467, 163, 625, 444, + 466, 626, 450, 231, 345, 361, 340, 362, 339, 363, + 229, 427, 410, 580, 584, 587, 583, 582, 220, 600, + 601, 608, 874, 536, 108, 504, 633, 537, 233, 553, + 117, 105, 710, 505, 506, 554, 490, 684, 518, 520, + 531, 807, 523, 522, 521, 871, 784, 783, 786, 785, + 781, 780, 845, 799, 848, 847, 849, 850, 859, 860, + 858, 803, 794, 834, 833, 0 }; const short QmlJSGrammar::action_index [] = { - 413, 2929, 356, 2, -134, 2435, 195, 17, 211, -134, - -134, -77, -134, -134, 21, -26, -59, 479, -134, 198, - -134, -71, 446, -134, 18, -134, -134, -68, -134, 1114, - -134, 30, -18, 601, -134, 392, -134, -134, -134, -134, - -134, 538, 482, 409, -134, 1032, -134, 2806, -134, -134, - -134, -134, 903, 874, -134, -134, 6073, 3796, 4534, 2806, - 2806, -134, 2189, 2806, -134, -134, -134, -134, -134, 2806, - 2806, -134, -134, -134, -134, -134, -134, -134, -134, 2929, - -134, 2806, -134, 2806, 2806, 3919, -134, -134, -134, 0, - -134, 2806, 2806, -134, -134, 303, 338, -134, -134, 2806, - -134, -134, -134, -134, 348, -134, 3298, -134, 51, -134, - -134, 6463, 42, -134, 360, -134, -134, -134, -12, -134, - 85, 46, 13, -134, -134, 232, -134, -134, -134, -134, - 457, -134, 364, 243, -134, -134, -134, 1371, 91, 54, - 545, -134, 482, -134, 1259, 1186, 192, -134, 60, 66, - 444, 65, 3052, -134, 67, 3052, 73, -134, 72, 74, - 3670, -134, -134, -134, 1136, 217, -134, -134, -134, -134, - 4288, -134, 81, -134, 78, -134, -134, 2806, 440, 2806, - -134, -134, -134, -134, 560, 2806, 1945, -134, -134, 2806, - -134, -134, -134, 482, 2806, 2806, 2806, 193, 188, 299, - 456, 207, 2311, -134, -134, 129, 1554, 3052, -134, -134, - -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - 215, 3052, -134, -134, 5033, 3052, -134, 225, -134, 492, - 138, 3421, 134, 131, -134, 3052, 3175, -134, 3052, -134, - -134, -134, -134, 1945, -134, 305, 1945, -134, -134, 345, - 2806, 136, 2806, 142, 3052, 2806, 146, 3052, -134, 144, - 2806, 148, 2806, 151, -134, -134, -134, -134, 6723, -134, - -134, 150, 749, -134, -134, 153, -134, 1579, -134, 165, - 167, -134, 172, 174, 1136, 5683, 177, 1945, -134, 175, - -134, -134, -134, 3052, -134, -134, 1579, -134, -134, 179, - 183, -134, 247, -134, -134, -134, 184, -134, 194, -134, - -134, 202, -134, 191, 201, 3052, -134, -134, -134, 5683, - -134, -134, 1240, 190, 189, -134, -134, 185, -134, 182, - 187, -134, 181, 1579, -134, -134, 180, -134, 1579, -134, - -134, -134, -134, -134, 3052, -134, -134, 3052, -134, -134, - -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - 227, -134, -134, 233, -134, -134, -134, 6333, 168, 166, - 3052, 249, 346, -134, -134, 4657, 163, 155, 273, 1483, - 1136, 149, -134, -134, 1136, 147, 2929, -134, 3052, 141, - 140, 3052, 137, -134, -134, 3052, -134, -134, 257, -134, - -134, 2929, 3052, 2929, -134, 216, -134, -134, -134, 130, - 125, 123, -134, 439, -134, 1357, 116, 108, -134, 105, - -134, -134, 2929, -134, -134, -134, 3052, 92, 3052, 70, - -134, -134, 103, 88, -134, 93, 435, -134, -134, 1240, - 87, 71, -134, 64, 3052, 19, 3052, 11, -134, -134, - -134, -134, -134, 7, -134, -134, 281, -134, 928, -134, - -134, 1136, -134, 818, -134, -134, 38, 1373, -134, -3, - 43, -134, -134, 1, -134, -134, 47, 45, 35, -134, - 34, 1136, -134, -55, 9, 1823, 5943, -134, -19, -134, - 5943, 5813, -134, -6, 5683, -134, 5683, 5683, -16, -134, - -134, -134, -134, 1579, -134, -46, 8, 43, -134, -48, - -134, -30, -58, -4, 43, -134, -57, -134, -36, 1240, - -134, -134, -56, -2, 43, -134, -49, -134, -27, 1579, - -50, 6, 43, -134, -43, -134, -134, 3052, 212, -134, - 4, -134, -134, 208, -134, 3052, 220, -7, -134, 24, - -134, 25, 228, 3052, -134, 31, 28, -134, -20, -134, - -134, -134, 224, -134, -134, 370, -134, 287, 29, -134, - 10, 16, -134, 1007, -134, -134, -5, 22, -134, -134, - 3052, 300, -134, -134, 3052, 320, -134, -134, -134, 3052, - -134, 56, 48, 59, -134, 52, -134, -134, 1129, -134, - -134, -134, 6463, -134, 2806, 459, 2806, 523, 2806, 1945, - 482, -134, 2806, 15, 2806, 89, 5033, 3052, 3421, -134, - -134, 236, -134, 57, -134, 3052, 2806, 96, 2929, -134, - 61, 2806, 106, 2806, 63, 3421, 68, -134, 3421, 69, - -134, 75, 83, 90, 5943, 77, -134, 5943, 94, -134, - -134, -134, 99, 1579, 1579, 98, 113, 104, -134, 101, - -134, 102, 114, 107, -134, 109, -134, 115, 1412, 1579, - 117, 120, -134, 118, -134, 121, 127, -134, 124, -134, - -134, 425, -134, -134, 245, 374, -134, -134, 6203, -134, - -134, -134, 3052, -134, -134, 335, 3547, 284, 161, -134, - 4411, -134, -134, 2929, -134, -134, -134, -134, -134, 154, - 295, -134, -134, 4042, -134, 159, -134, -134, -134, 485, - -134, -134, -134, -134, 384, 2929, -134, -134, 406, -134, - -134, -134, -134, -134, 2929, -134, 2806, -134, 206, 203, - -134, -134, -134, -134, 375, -134, 577, 1475, -134, -134, - -134, -134, 186, -134, 5423, 178, -134, -134, 176, -134, - -134, 4165, -134, 377, -134, -134, 978, -134, -134, 957, - -134, -134, -134, 1032, 1579, 173, 169, 171, -134, 247, - -134, 1579, 164, 160, -134, 158, -134, 157, 5943, 156, - -134, -134, 304, 152, -134, 5163, -134, -134, -134, 5033, - -134, -134, -134, 145, -134, 162, -134, -134, -134, 5553, - 143, -134, 314, -134, -134, 12, -134, -134, 312, -134, - 928, -134, 5293, -134, -134, -134, 928, -134, -134, -134, - 139, -134, 698, -134, -134, 135, 133, 209, 132, 238, - 221, 389, 128, 599, 126, -134, -134, 2435, -134, -134, - -134, -134, -134, -134, -134, 411, -134, -134, 122, 1579, - 112, 119, 110, -134, 100, -134, -134, -134, 196, 97, - 2559, -134, -134, -134, -134, 2683, -134, -134, 111, 1701, - -134, 95, -134, 390, 79, -134, -134, -134, 76, -134, - -134, 824, 405, -134, 222, 86, 705, -134, 223, -134, - -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, 391, -134, -134, 4780, 237, -134, -134, -134, -134, - 58, 3052, -134, -134, -134, -134, -134, 6593, 84, 82, - -134, 298, 80, 332, 260, -134, 262, -134, -134, -134, - -134, 3052, -134, -134, -134, -134, 329, -134, -134, 625, - 270, 49, 50, 339, 62, 44, -134, 55, 20, -134, - 14, -134, 40, 642, 323, 326, 705, 359, 41, 1701, - 330, -134, 1701, 272, -134, -134, 342, -134, 4780, 515, - 37, 268, -134, 333, -134, -134, -134, -134, 32, 824, - 337, 302, 705, 367, 53, -134, 4780, 508, 258, -15, - 347, -134, -134, -134, -134, -134, 23, 331, -134, 755, - 170, 39, 36, -17, 824, 357, 27, 799, 33, 824, - 361, 26, -134, 235, -134, -134, -134, -134, -134, 1701, - 4903, -134, 3796, 5, 231, -134, -134, -1, -134, -134, - 1701, 928, 200, 2067, -134, 410, -134, -134, -134, 448, - -134, 213, -134, -134, -134, -134, 2067, -134, -134, -134, - -134, 574, 3, 322, 199, -134, -39, -134, -134, 556, - 197, -134, -134, + 416, 2893, 346, 19, -135, 2271, 250, 35, 291, -135, + -135, -54, -135, -135, 40, -3, -34, 510, -135, 260, + -135, -31, 477, -135, 58, -135, -135, -21, -135, 1303, + -135, 75, 39, 539, -135, 443, -135, -135, -135, -135, + -135, 631, 461, 438, -135, 863, -135, 2645, -135, -135, + -135, -135, 1037, 986, -135, -135, 6331, 3643, 4387, 2645, + 2645, -135, 2023, 2645, -135, -135, -135, -135, -135, 2645, + 2645, -135, -135, -135, -135, -135, -135, -135, -135, 2893, + -135, 2645, -135, 2645, 2645, 3268, -135, -135, 119, -135, + 2645, 2645, -135, -135, 200, 391, -135, -135, 2645, -135, + -135, -135, -135, 369, -135, 3516, -135, 176, -135, -135, + 6724, 174, -135, 390, -135, -135, -135, 175, -135, 201, + 179, 180, -135, -135, 208, -135, -135, -135, -135, 485, + -135, 359, 233, -135, -135, -135, 1059, 162, 127, 577, + -135, 351, -135, 1095, 1146, 231, -135, 108, 104, 497, + 61, 2769, -135, 42, 2769, 29, -135, 20, 16, 4139, + -135, -135, 1171, 278, -135, -135, -135, -135, 3891, -135, + -1, -135, -23, -135, -135, 2645, 487, 2645, -135, -135, + -135, -135, 592, 2645, -135, -135, -135, 2645, -135, -135, + -135, 365, 2645, 2645, 2645, 227, 240, 244, 418, 2645, + -56, 2645, 8, 2769, 2645, 55, 2769, -135, 22, 2645, + 84, 2645, 97, -135, -135, 2769, -135, -135, -135, 6855, + -135, -135, 142, 961, -135, -135, 169, -135, 1408, -135, + 185, 186, -135, 209, 136, 1164, 5938, 141, 1777, -135, + -16, 483, 338, 2146, -135, -135, -10, 4890, 2769, 5152, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, 325, -135, -135, 2769, 318, -135, 4890, 2769, + -135, 296, -135, 521, 65, 3144, 139, 118, -135, 2769, + 3767, -135, 2769, -135, -135, -135, -135, 1777, -135, 236, + 1777, -135, -135, -135, -135, 2769, -135, -135, 1408, -135, + -135, 163, 154, -135, 151, -135, -135, -135, 167, -135, + 166, -135, -135, 217, -135, 170, 197, 2769, -135, -135, + -135, 5938, -135, -135, 1171, 204, 202, -135, -135, 181, + -135, 177, 207, -135, 205, 1277, -135, -135, 199, -135, + 1408, -135, -135, -135, -135, -135, 2769, -135, -135, 2769, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, 196, -135, -135, 206, -135, -135, -135, 6593, + 173, 172, 2769, 214, 347, -135, -135, 4511, 165, 157, + 193, 1404, 1171, 153, -135, -135, 1171, 148, 2893, -135, + 2769, 138, 158, 2769, 137, -135, -135, 2769, -135, -135, + 234, -135, -135, 2893, 2769, 2893, -135, 257, -135, -135, + -135, 147, 144, 131, -135, 388, -135, 1171, 133, 113, + -135, 111, -135, -135, 2893, -135, -135, -135, 2769, 74, + 2769, 69, -135, -135, 107, 87, -135, 95, 423, -135, + -135, 1171, 89, 82, -135, 80, 2769, 37, 2769, 21, + -135, -135, -135, -135, -135, 25, -135, -135, 251, -135, + 961, -135, -135, 1171, -135, 756, -135, -135, 36, 1408, + -135, 7, 30, -135, -135, 3, -135, -135, 52, 168, + 38, -135, 33, 1171, -135, -59, 13, 1654, 6200, -135, + -13, -135, 6200, 6069, -135, 0, 5938, -135, 5938, 5938, + -14, -135, -135, -135, -135, 1408, -135, -40, 11, -17, + -135, -42, -135, -27, -55, -4, -32, -135, -57, -135, + 41, 1171, -135, -135, -58, -2, -28, -135, -49, -135, + -26, 1408, -50, 6, -20, -135, -41, -135, -135, 2769, + 335, -135, 5, -135, -135, 288, -135, 2769, 330, -5, + -135, 26, -135, 27, 317, 2769, -135, 31, 32, -135, + -19, -135, -135, -135, 314, -135, -135, 520, -135, 319, + 28, -135, 17, 18, -135, 1171, -135, -135, -6, 24, + -135, -135, 2769, 299, -135, -135, 2769, 298, -135, -135, + -135, 2769, -135, 60, 53, 64, -135, 59, -135, -135, + 1171, -135, -135, -135, 6724, -135, 2645, 464, 2645, 631, + 2645, 441, 2645, 44, 2645, 88, 4890, 2769, 3144, 5807, + -135, -135, 282, -135, 46, -135, -135, 2769, 3144, 270, + -135, 62, -135, 2769, 2645, 105, 2893, -135, 66, 2645, + 114, 2645, 68, 3144, 5676, 67, -135, 3144, 70, -135, + 3144, 73, -135, 51, 91, 92, 6200, 96, -135, 6200, + 99, -135, -135, -135, 106, 1408, 1408, 100, 132, 116, + -135, 101, -135, 109, 134, 117, -135, 120, -135, 122, + 1408, 1408, 121, 123, -135, 124, -135, 125, 126, -135, + 129, -135, -135, 361, -135, -135, 230, 229, -135, -135, + 6462, -135, -135, -135, 2769, -135, -135, 224, 3020, 191, + 160, -135, 4263, -135, -135, 2893, -135, -135, -135, -135, + -135, 164, 221, -135, -135, 4015, -135, 171, -135, -135, + -135, 536, -135, -135, -135, -135, 380, 2893, -135, -135, + 378, -135, -135, -135, -135, -135, 2893, -135, 2645, -135, + 184, 182, -135, -135, -135, -135, 370, -135, 617, 1295, + -135, -135, -135, -135, 149, -135, 5283, 149, -135, -135, + 145, -135, -135, 3392, -135, 340, -135, -135, 881, -135, + -135, 932, -135, -135, -135, 1066, 1408, 72, 112, 81, + -135, 48, -135, 1408, 45, 50, -135, 23, -135, 34, + 6200, 4, -135, -135, 312, -74, -135, 5021, -135, -135, + -135, 4890, -135, -135, -135, -83, -135, 12, -135, -135, + -135, 5545, -11, -135, 243, -135, -135, 76, -135, -135, + 215, -135, 761, -135, 5414, -135, -135, -135, 961, -135, + -135, -135, 161, -135, 961, -135, -135, 93, 90, 216, + 71, 247, 255, 415, 43, 660, 57, -135, -135, 2271, + -135, -135, -135, -135, -135, -135, -135, 348, -135, -135, + 14, 1408, 9, 78, 56, -135, 85, -135, -135, -135, + 219, 273, 2521, -135, -135, -135, -135, 2396, -135, -135, + 190, 1531, -135, 178, -135, 341, 130, -135, -135, -135, + -12, -135, -135, 856, 315, -135, 322, 10, 663, -135, + 267, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, 349, -135, -135, 4635, 225, -135, -135, + -135, -135, 135, 2769, -135, -135, -135, -135, -135, 6986, + 188, 189, -135, 210, 198, 332, 187, -135, 194, -135, + -135, -135, -135, 2769, -135, -135, -135, -135, 345, -135, + -135, 856, 211, 156, 159, 222, 155, 152, -135, 150, + 146, -135, 143, -135, 140, 731, 357, 237, 605, 395, + 128, 1531, 265, -135, 1531, 235, -135, -135, 399, -135, + 4635, 555, 110, 238, -135, 385, -135, -135, -135, -135, + 98, 856, 386, 393, 736, 407, 115, -135, 4635, 562, + 246, 63, 389, -135, -135, -135, -135, -135, 83, 362, + -135, 830, 103, 102, 94, 49, 856, 405, 79, 812, + 86, 856, 409, 77, -135, 249, -135, -135, -135, -135, + -135, 1531, 4759, -135, 3643, 54, 292, -135, -135, 47, + -135, -135, 1531, 961, 220, 1900, -135, 449, -135, -135, + -135, 439, -135, 254, -135, -135, -135, -135, 1900, -135, + -135, -135, -135, 680, 15, 321, 285, -135, -25, -135, + -135, 608, 295, -135, -135, - -238, 224, 247, 241, 286, 805, -238, -238, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -46, -238, -238, - -238, -238, -82, -238, -238, -238, -238, -238, -238, -238, - -238, -238, -238, -30, -238, -238, -238, -238, -238, -238, - -238, -70, -238, -238, -238, 250, -238, 699, -238, -238, - -238, -238, 248, 240, -238, -238, 267, 222, 220, 660, - 641, -238, 659, 601, -238, -238, -238, -238, -238, 598, - 584, -238, -238, -238, -238, -238, -238, -238, -238, 509, - -238, 556, -238, 538, 574, 500, -238, -238, -238, -238, - -238, 520, 688, -238, -238, -238, -238, -238, -238, 499, - -238, -238, -238, -238, -238, -238, 470, -238, -238, -113, - -238, 48, -238, -238, 221, -238, -238, -238, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, -238, 115, -238, -238, -238, -238, -1, -238, -238, - -238, -238, -238, -238, 219, 213, 133, 217, -238, -238, - 167, -238, 93, -238, -238, 96, 139, -238, -238, -238, - 102, -238, -238, -238, 335, 175, -238, -238, -238, -4, - 82, -238, -32, -39, -45, -238, -238, 416, -238, 452, - -238, -238, -238, -238, -238, 468, 909, -238, -238, 486, - -238, -238, -238, -238, 498, 515, 497, -238, -238, -238, - -23, -238, 392, -238, -238, -238, 238, -42, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, 56, -238, -238, 255, -63, -238, -238, -238, -60, - -238, -55, -238, -238, -238, -54, -51, -238, -49, -238, - -238, -238, -238, 812, -238, -238, 759, -238, -238, -238, - 350, -238, 356, -238, -31, 362, -238, -27, -238, -238, - 363, -238, 463, -238, -238, -238, -238, 270, 8, -238, - -238, 120, 210, -238, -238, -238, -238, 300, -238, -238, - 4, -238, -238, -238, 314, 316, 41, 723, -238, 25, - -238, -238, -238, 54, -238, -238, 442, -238, -238, 71, - -57, -56, -53, -238, -238, -238, 46, -238, -238, -238, - -238, -238, -238, -238, -238, 76, -238, -238, -238, 413, - -238, -238, 331, 65, 66, -238, -238, -238, -238, -238, - -238, -238, -238, 385, -238, -238, 145, -238, 591, -238, - -238, -238, -238, -238, 85, -238, -238, 90, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - 159, -238, -238, 160, -238, -238, -238, 126, -238, -238, - 114, -238, 179, -238, -238, 718, -238, -238, -238, 13, - 340, -238, -238, -238, 342, -238, 324, -238, 130, -238, - -238, 134, -238, 195, -238, 122, -238, -238, -238, 204, - -238, 325, -73, 336, -238, -238, 206, -238, -238, 124, - -238, 98, -238, -238, -238, 338, 119, 88, -238, 84, - -238, -238, 346, -238, -238, -238, 141, -238, 142, -238, - 211, -238, 109, 73, -238, -238, -238, -238, -238, 374, - 95, 73, -238, -238, 143, -238, 144, -238, 216, -238, - -238, -238, 0, -238, -238, -238, 140, -238, 166, -238, - -238, 366, -238, 168, -238, -238, -48, 328, -238, -238, - -50, -238, -238, -238, -238, -238, 78, -238, 57, -238, - -238, 425, -238, -65, -238, 297, 79, -238, -238, -238, - 187, 197, -238, -238, 256, -238, 193, 199, -238, -238, - -238, -238, -238, 194, -238, -238, 63, -68, -66, -69, - -238, -238, -238, 61, -72, -75, -79, -238, -238, 302, - -238, -238, -238, 52, -81, -84, -86, -238, -94, 263, - -238, 49, -87, -98, -100, -238, -238, 30, -238, 257, - -238, 259, -238, 86, -238, 26, -238, -238, -238, -238, - -238, -93, -238, 21, -238, -95, -238, -238, -238, -238, - -71, -238, -238, -76, -238, 67, -238, -238, -111, -238, - -238, 43, -238, 291, -238, -238, -238, 39, -238, -238, - 2, -238, 260, -238, -2, -238, 264, -238, -238, -11, - -238, 6, -22, -238, -238, -33, -238, -238, 526, -238, - -238, -238, 5, -238, 581, -59, 638, -61, 473, 784, - -238, -238, 667, -238, 679, -238, 223, -29, 231, -238, - -238, -238, -238, -238, -238, -36, 669, -238, 364, -238, - -238, 665, -238, 657, -238, 232, -238, -238, 233, -238, - -238, -172, -174, -175, 242, -184, -238, 246, -186, -238, - -238, -238, -238, 284, 282, -238, -40, -177, -176, -178, - -238, -238, -44, -179, -181, -183, -238, -190, 280, 265, - -238, -188, -198, -200, -238, -238, -191, -202, -204, -238, - -238, -85, -238, -238, -238, -238, -238, -238, 475, -238, - -238, -238, -74, -238, -238, -238, 87, -238, -67, -238, - 239, -238, -238, 334, -238, -238, -238, -238, -238, -238, - -238, -238, -238, 253, -238, -238, -238, -238, -238, -41, - -238, -238, -238, -238, -238, 360, -238, -238, -58, -238, - -238, -238, -238, -238, 417, -238, 439, -238, 34, 35, - -238, -238, -238, -238, 507, -238, 521, 288, -238, -238, - -238, -238, -238, -238, 212, -159, -238, -238, -157, -238, - -238, -6, -238, 480, -238, -238, 207, -238, -238, 293, - -238, -238, -238, 295, 308, -238, 24, -107, -112, -108, - -238, 310, -238, -103, -110, -109, -238, -106, 200, -114, - -238, -238, -238, -238, -238, 278, -238, -238, -238, 198, - -238, -238, -238, -105, -238, -238, -238, -238, -238, 318, - -238, -238, 11, -238, -238, -238, -238, -238, -238, -238, - 320, -238, 450, -238, -238, -238, 322, -238, -238, -238, - 201, -238, 189, -238, -238, -238, -238, 337, -238, 184, - 174, 108, 435, 183, -238, -238, -238, 862, -238, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, 333, - -238, 110, -26, -24, -21, -238, -238, -238, 154, -238, - 833, -238, -238, -238, -238, 834, -238, -238, -238, 620, - -238, -238, -238, 150, 163, -238, -238, -238, -238, -238, - -238, 182, 161, -238, -238, -238, 178, -238, 177, -238, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, -238, -238, 117, 771, 132, -238, -238, -238, -238, - 100, 99, -238, -238, -238, 205, -238, 59, -238, -238, - -238, -238, -238, -5, 62, -238, 55, -238, -238, -238, - -238, -20, -238, -238, -238, -238, -238, -238, -238, 12, - -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, - -238, -238, -238, 23, 3, -238, 32, 40, -238, 637, - -238, -238, 670, 58, -238, -238, -238, 70, 912, 37, - 301, 112, -238, 107, -238, -238, -238, -238, -238, 180, - 162, -238, 181, 176, -238, 156, 905, 118, 170, 165, - -238, -238, -238, -238, -238, -238, -238, 137, -238, 202, - -238, -238, -238, -238, 106, 75, -238, 215, -238, 72, - 44, -238, -238, 64, -238, -238, -238, -238, 228, 666, - 1130, -238, 606, 50, -238, -238, -238, 36, -238, -238, - 544, 45, 266, 798, -238, 42, -238, -238, -238, -15, - -238, 38, -238, -238, -238, -238, 761, -238, -238, -238, - -238, 20, -238, 19, 18, -238, -238, -238, -238, -7, - -3, -238, -238 + -236, 270, 185, 187, 214, 797, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -52, -236, -236, + -236, -236, -94, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -46, -236, -236, -236, -236, -236, -236, + -236, -87, -236, -236, -236, 192, -236, 700, -236, -236, + -236, -236, 194, 196, -236, -236, 315, 183, 198, 624, + 620, -236, 589, 599, -236, -236, -236, -236, -236, 592, + 547, -236, -236, -236, -236, -236, -236, -236, -236, 511, + -236, 608, -236, 602, 645, 495, -236, -236, -236, -236, + 526, 508, -236, -236, -236, -236, -236, -236, 503, -236, + -236, -236, -236, -236, -236, 444, -236, -236, -153, -236, + -12, -236, -236, 250, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, 35, -236, -236, -236, -236, -85, -236, -236, -236, + -236, -236, -236, 266, 232, 38, 241, -236, -236, 178, + -236, -17, -236, -236, -16, 24, -236, -236, -236, -19, + -236, -236, 369, 57, -236, -236, -236, -120, 6, -236, + -109, -108, -106, -236, -236, 379, -236, 385, -236, -236, + -236, -236, -236, 405, -236, -236, -236, 419, -236, -236, + -236, -236, 436, 450, 466, -236, -236, -236, -236, 448, + -236, 461, -236, 55, 482, -236, 56, -236, -236, 529, + -236, 542, -236, -236, -236, 60, -236, -236, 286, 78, + -236, -236, 139, 252, -236, -236, -236, -236, 293, -236, + -236, 44, -236, -236, -236, 298, 305, 61, 612, -236, + 46, 70, -236, 552, -236, -236, -236, 237, 72, 236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, 74, -236, -236, 228, 80, + -236, -236, -236, 84, -236, 76, -236, -236, -236, 85, + 88, -236, 90, -236, -236, -236, -236, 813, -236, -236, + 781, -236, -236, -236, -236, 91, -236, -236, 411, -236, + -236, 100, -30, -25, -21, -236, -236, -236, 92, -236, + -236, -236, -236, -236, -236, -236, -236, 104, -236, -236, + -236, 395, -236, -236, 343, 95, 96, -236, -236, -236, + -236, -236, -236, -236, -236, 387, -236, -236, 146, -236, + 679, -236, -236, -236, -236, -236, 107, -236, -236, 112, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, 179, -236, -236, 180, -236, -236, -236, 140, + -236, -236, 127, -236, 186, -236, -236, 732, -236, -236, + -236, 26, 309, -236, -236, -236, 367, -236, 351, -236, + 137, -236, -236, 138, -236, 212, -236, 125, -236, -236, + -236, 213, -236, 326, 113, 362, -236, -236, 216, -236, + -236, 122, -236, 97, -236, -236, -236, 348, 118, 93, + -236, 94, -236, -236, 384, -236, -236, -236, 157, -236, + 164, -236, 231, -236, 110, 79, -236, -236, -236, -236, + -236, 445, 109, 79, -236, -236, 168, -236, 169, -236, + 234, -236, -236, -236, 10, -236, -236, -236, 143, -236, + 202, -236, -236, 506, -236, 222, -236, -236, -50, 311, + -236, -236, -43, -236, -236, -236, -236, -236, 87, -236, + 62, -236, -236, 521, -236, -61, -236, 269, 82, -236, + -236, -236, 233, 244, -236, -236, 248, -236, 254, 264, + -236, -236, -236, -236, -236, 281, -236, -236, 67, -64, + -63, -65, -236, -236, -236, 64, -67, -72, -75, -236, + -236, 301, -236, -236, -236, 58, -76, -2, -79, -236, + -83, 303, -236, 49, -84, -88, -92, -236, -236, 41, + -236, 225, -236, 224, -236, 89, -236, 29, -236, -236, + -236, -236, -236, -90, -236, 25, -236, -93, -236, -236, + -236, -236, -68, -236, -236, -69, -236, 71, -236, -236, + -107, -236, -236, 45, -236, 363, -236, -236, -236, 43, + -236, -236, 5, -236, 207, -236, 2, -236, 206, -236, + -236, -5, -236, 7, -18, -236, -236, -29, -236, -236, + 372, -236, -236, -236, 8, -236, 531, -58, 683, -57, + 382, -236, 688, -236, 691, -236, 240, -24, 205, 243, + -236, -236, -236, -236, -236, -236, -236, -27, 239, -236, + -236, -236, -236, -35, 675, -236, 432, -236, -236, 661, + -236, 555, -236, 256, 245, -236, -236, 128, -236, -236, + 177, -236, -236, -174, -176, -177, 175, -183, -236, 171, + -184, -236, -236, -236, -236, 337, 341, -236, -40, -173, + -175, -178, -236, -236, -45, -179, -182, -185, -236, -192, + 359, 365, -236, -188, -198, -200, -236, -236, -191, -201, + -203, -236, -236, -86, -236, -236, -236, -236, -236, -236, + 371, -236, -236, -236, -70, -236, -236, -236, -66, -236, + -62, -236, 145, -236, -236, 368, -236, -236, -236, -236, + -236, -236, -236, -236, -236, 312, -236, -236, -236, -236, + -236, -36, -236, -236, -236, -236, -236, 485, -236, -236, + -53, -236, -236, -236, -236, -236, 394, -236, 407, -236, + 39, 40, -236, -236, -236, -236, 282, -236, 380, 361, + -236, -236, -236, -236, -236, -236, 148, -152, -236, -236, + -150, -236, -236, -1, -236, 572, -236, -236, 163, -236, + -236, 357, -236, -236, -236, 535, 355, -236, 30, -101, + -100, -102, -236, 353, -236, -95, -103, -99, -236, -105, + 167, -104, -236, -236, -236, -236, -236, 316, -236, -236, + -236, 227, -236, -236, -236, -98, -236, -236, -236, -236, + -236, 296, -236, -236, 120, -236, -236, -236, -236, -236, + -236, -236, 291, -236, 538, -236, -236, -236, 307, -236, + -236, -236, 238, -236, 229, -236, -236, -236, -236, 331, + -236, 217, 210, 114, 725, 218, -236, -236, -236, 869, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, 334, -236, 115, -15, -14, -20, -236, -236, -236, + 154, -236, 809, -236, -236, -236, -236, 825, -236, -236, + -236, 717, -236, -236, -236, 156, 166, -236, -236, -236, + -236, -236, -236, 184, 160, -236, -236, -236, 182, -236, + 181, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, 142, 783, 150, -236, -236, + -236, -236, 124, 123, -236, -236, -236, 226, -236, 103, + -236, -236, -236, -236, -236, 73, 356, -236, 129, -236, + -236, -236, -236, 65, -236, -236, -236, -236, -236, -236, + -236, 116, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, 108, 81, -236, 102, 101, + -236, 722, -236, -236, 944, 98, -236, -236, -236, 77, + 874, 37, 83, 86, -236, 53, -236, -236, -236, -236, + -236, 59, 33, -236, 50, 51, -236, 32, 904, -8, + 47, 188, -236, -236, -236, -236, -236, -236, -236, 36, + -236, 249, -236, -236, -236, -236, 28, 4, -236, 284, + -236, 21, -3, -236, -236, 23, -236, -236, -236, -236, + 280, 671, 889, -236, 641, 15, -236, -236, -236, 13, + -236, -236, 565, 22, 287, 791, -236, 19, -236, -236, + -236, -41, -236, 14, -236, -236, -236, -236, 774, -236, + -236, -236, -236, 3, -236, 1, -6, -236, -236, -236, + -236, -13, 135, -236, -236 }; const short QmlJSGrammar::action_info [] = { - 176, 549, -572, 317, 543, 317, 553, 542, 176, 176, - 498, 1097, 561, 317, 505, 317, 536, 1102, 1096, 105, - 571, -129, 634, 642, 644, -533, 416, 579, -135, 583, - 583, 533, 663, 900, 661, 590, 583, 589, 530, 900, - 1050, 925, 925, 517, 1047, 1053, -110, 603, 515, 601, - 482, 323, 323, 511, 317, 976, 482, 607, 505, 500, - 1025, 922, 991, 317, 484, 323, 766, 628, 989, 323, - 1020, 900, 988, 478, 987, 498, 999, 110, 994, 990, - 984, 452, 476, 982, 169, 110, 177, 971, 452, -196, - 634, -198, 955, 292, 317, 280, 282, 405, 644, 176, - 482, 469, 567, 658, 575, 452, 290, 482, 663, 610, - 317, 614, 642, 661, 922, 110, 927, 517, 909, 654, - 317, 317, 452, 317, 517, 452, 317, 902, 850, 900, - 667, 670, 460, 445, 530, 176, 684, 317, 110, -574, - 323, 110, 266, 177, 110, 0, 0, 0, 251, 976, - 292, 530, 498, 287, 110, 458, 1037, 176, 176, 889, - 686, 110, 981, 908, 692, 896, 176, 273, 272, 364, - 842, 416, 317, 304, 891, 505, 317, 1045, 515, 701, - 326, 505, 0, 706, 323, 364, 317, 0, 364, 372, - 307, 517, 323, 270, 110, 366, 290, 0, 1013, 423, - 280, 323, 349, 400, 421, 110, 323, 323, 352, -200, - 474, 899, 456, 530, 0, 505, 742, 110, 418, 282, - 251, 746, 254, 251, 251, 0, 813, 0, 251, 91, - 900, 593, 251, 251, 91, 806, 329, 925, 586, 1002, - 365, 92, 255, 358, 251, 790, 92, 926, 351, 399, - 297, 788, 91, 718, 655, 296, 295, 251, 498, 856, - 296, 295, 296, 295, 92, 251, 296, 295, 829, 296, - 295, 296, 295, 252, 569, 683, 296, 295, 436, 913, - 296, 295, 577, 258, 788, 587, 296, 295, 284, 1065, - 296, 295, 788, 600, 652, 656, 296, 295, 296, 295, - 296, 295, 719, 743, 176, 426, 963, 601, 251, 1070, - 1071, 402, 825, 276, 1070, 1071, 914, 925, -200, 429, - 852, 296, 295, 296, 295, 296, 295, 1022, 251, 285, - 277, 296, 295, 296, 295, 296, 295, 44, 1002, -135, - 91, 925, 738, 728, 296, 295, 97, 985, 839, 1007, - 100, 996, 92, 923, 44, 964, -577, 744, 98, 918, - 100, 826, 612, 1018, 0, -416, 998, 923, 1039, 853, - -416, 194, 251, 195, 998, -576, 0, 1036, 251, 840, - 965, 722, 616, 733, 196, 296, 295, 923, 1003, 966, - 427, 923, 416, 729, 296, 295, 986, 101, 943, 494, - 304, 967, 920, 102, 100, 296, 295, 101, 920, 296, - 295, 533, 920, 102, 416, 919, 920, -416, 1058, 992, - 918, 919, 296, 295, 254, 919, 920, 296, 295, 919, - 296, 295, -200, 296, 295, 923, 920, 0, 1099, 919, - 920, 404, 323, -243, 255, 900, 668, -244, 0, 919, - 0, 101, 452, 919, 296, 295, 323, 102, 180, 181, - 1092, 776, -200, 206, 180, 181, 494, 304, 920, 920, - 777, 206, 0, 296, 295, 180, 181, 180, 181, 803, - 776, 919, 919, 207, 920, 0, 182, 183, 0, 777, - 0, 207, 182, 183, 646, 755, 756, 919, -243, 0, - 206, 0, -244, 182, 183, 182, 183, 206, 194, 0, - 195, 0, 0, 0, 647, 0, 648, 755, 756, 0, - 207, 196, 261, 206, 0, 0, 1091, 207, 0, 261, - 206, 0, 412, 413, 6, 5, 4, 1, 3, 2, - 0, 1059, -103, 207, 0, 665, 493, 187, 188, -103, - 207, 0, 665, 0, 0, 0, 190, 64, 79, 191, - 0, 192, 187, 188, 0, 64, 79, 0, 0, 187, - 188, 190, 0, 0, 191, 0, 192, 189, 190, 0, - 0, 191, 0, 192, 187, 188, 932, 783, 64, 79, - 0, 0, 189, 190, 64, 79, 191, 0, 192, 494, - 304, 64, 79, 0, 932, 0, 0, 0, 0, 1029, - 0, 784, 0, 0, 0, 0, 206, 64, 79, 0, - 0, 0, 0, 0, 64, 79, 935, 939, 936, 932, - 0, 0, 0, 0, 0, 0, 207, 0, 665, 639, - 925, 0, 785, 0, 935, 939, 936, 0, 0, 0, - 0, 0, 0, 0, 639, 932, 157, 925, 0, 0, - 0, 186, 930, 937, 929, 412, 413, 0, 0, 1030, - 939, 936, 932, 933, 931, 938, 186, 0, 0, 493, - 930, 937, 929, 0, 0, 0, 934, 0, 0, 0, - 0, 933, 931, 938, 0, 935, 939, 936, 0, 0, - 0, 0, 0, 0, 934, 930, 937, 929, 0, 0, - 64, 79, 935, 939, 936, 0, 933, 931, 938, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, - 0, 930, 937, 929, 0, 932, 0, 0, 0, 0, - 0, 0, 933, 931, 938, 0, 0, 0, 930, 937, - 929, 0, 0, 0, 0, 934, 0, 0, 0, 933, - 931, 938, 0, 0, 0, 0, 0, 0, 71, 75, - 72, 0, 934, 0, 0, 935, 939, 936, 0, 55, - 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 0, 51, 73, 46, 0, 0, 0, - 0, 930, 937, 929, 44, 67, 54, 74, 0, 71, - 75, 72, 933, 931, 938, 935, 939, 936, 68, 1041, - 0, 0, 0, 0, 920, 934, 0, 0, 0, 925, - 0, 0, 0, 0, 0, 0, 0, 919, 55, 0, - 0, 0, 0, 76, 932, 51, 73, 46, 0, 0, - 0, 930, 937, 929, 0, 44, 67, 54, 74, 935, - 939, 936, 933, 931, 938, 0, 0, 0, 920, 68, - 0, 0, 0, 0, 0, 934, 0, 0, 71, 75, - 72, 919, 0, 0, 935, 939, 936, 0, 0, 0, - 0, 0, 0, 0, 55, 930, 937, 929, 0, 0, - 0, 498, 0, 0, 0, 0, 933, 931, 938, 0, - 0, 0, 76, 0, 51, 73, 46, 0, 0, 934, - 930, 937, 929, 55, 44, 67, 54, 74, 0, 0, - 683, 933, 931, 938, 71, 75, 72, 0, 68, 0, - 0, 0, 0, 0, 934, 0, 0, 0, 55, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 0, 0, 76, 0, - 51, 73, 46, 0, 0, 0, 0, 55, 0, 0, - 44, 67, 54, 74, 498, 0, 0, 0, 71, 75, - 72, 0, 0, 0, 68, 0, 0, 76, 55, 51, - 73, 46, 0, 0, 0, 804, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 71, 75, 72, - 0, 0, 76, 68, 51, 73, 46, 55, 0, 0, - 0, 315, 316, 0, 44, 67, 54, 74, 71, 75, - 72, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 76, 55, 51, 73, 46, 0, 0, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 71, 75, 72, - 0, 0, 76, 0, 51, 73, 46, 68, 0, 0, + 174, 325, 109, 238, 555, 238, 109, 545, 174, 175, + 544, 500, 563, 238, 109, 174, 507, 109, 238, -575, + 854, 573, 538, -129, 800, 1109, 934, 201, 317, 581, + 1108, 585, 585, 109, 174, 1114, 585, 535, 591, 592, + 939, 636, 104, 841, 532, 517, 642, 519, 603, 644, + 325, 901, 484, 616, 605, 325, 609, 612, 484, 238, + 507, 532, 206, 484, 109, -536, 418, 238, 519, 502, + 325, 903, 630, 500, 209, -135, 325, 671, 551, 577, + 507, 912, 486, 480, 109, 238, 211, 1049, 912, 636, + 109, 669, 937, 1062, 937, 316, 238, 454, 569, 454, + 478, 993, 1059, 471, 454, 174, 868, 825, 655, -110, + 1057, 1065, 666, 1025, 238, 109, 671, 642, 669, 238, + 920, 934, 1037, 908, 662, 519, 519, 644, 454, 676, + 454, 462, 679, 988, 818, 682, 1032, 460, 484, 238, + 238, 238, 174, 696, 912, 407, 199, 310, 325, 366, + 109, 109, 447, 532, 238, 517, 532, 109, 174, 500, + 109, -577, 698, 1011, 211, 225, 215, 1000, 366, 967, + 238, 704, 1002, 418, 351, 0, 513, 174, 1006, 209, + 314, 507, 999, 713, 325, 778, 507, 718, 109, 996, + 994, 1003, 238, 862, 1001, -198, -196, 921, 331, 425, + 988, 423, 175, 325, 354, 983, 228, 366, 174, 402, + 109, 476, 912, 374, 802, 368, 458, 328, 975, 325, + 420, 325, 215, 864, -200, 428, 754, 353, 199, 755, + 997, 174, 740, 758, 911, 367, 734, 0, 730, 360, + 218, 0, 215, 96, 320, 216, 214, 216, 214, 750, + 216, 214, 937, 912, 401, 97, 800, 216, 214, 216, + 214, 321, 1008, 201, 203, 215, 535, 976, 90, 216, + 214, 167, 865, 1014, 216, 214, 404, 851, 215, 998, + 91, 90, 741, 756, 695, 90, 925, 731, 216, 214, + 215, 745, 500, 91, 216, 214, 431, 91, 216, 214, + 1014, 216, 214, 914, 215, 204, 215, 215, 852, 216, + 214, 429, 216, 214, 216, 214, 663, 216, 214, 438, + 837, 595, 215, 1015, 926, 602, 215, 588, 660, -135, + 216, 214, 90, 215, -200, 1082, 1083, 937, 215, 603, + 653, 216, 214, 215, 91, 935, -580, 938, 216, 214, + 1077, 216, 214, 298, 302, 1070, 955, 664, 216, 214, + 618, 614, 496, 225, 44, 1082, 1083, 215, -200, 838, + -579, 930, 44, 299, 589, 930, 297, 192, 325, 193, + 977, 99, 912, 293, 216, 214, 418, 935, 418, 978, + 194, 192, 579, 193, 932, -419, -244, 571, -200, 1051, + -419, 979, 1010, 99, 194, 325, 1019, 931, 937, 0, + 216, 214, 216, 214, 1010, 1030, 935, 0, 1034, 1048, + 932, 0, 216, 214, 932, 216, 214, 0, 100, 0, + 0, -243, 0, 931, 101, 935, 932, 931, 1111, 935, + 454, 0, 406, 815, 192, 1004, 193, -419, 0, 931, + 100, -244, 788, 298, 247, 99, 101, 194, 216, 214, + 0, 789, 216, 214, 932, 932, 0, 192, 932, 193, + 216, 214, 0, 299, 248, 680, 788, 931, 931, 1071, + 194, 931, 178, 179, 932, 789, -243, 192, 932, 193, + 767, 768, 767, 768, 932, 178, 179, 931, 247, 1104, + 194, 931, 100, 178, 179, 178, 179, 931, 101, 0, + 180, 181, 216, 214, 0, 0, 0, 0, 248, 496, + 225, 0, 0, 180, 181, 646, 0, 0, 215, 0, + 0, 180, 181, 180, 181, 0, 247, 249, 6, 5, + 4, 1, 3, 2, 0, 647, 0, 648, 0, 64, + 79, 247, 0, 0, 247, 0, 248, 0, 305, 0, + 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, + 247, 248, 0, 305, 248, 0, 673, 247, 0, 0, + 0, 249, 0, 216, 214, 414, 415, 0, 0, -103, + 248, 0, 673, 64, 79, 0, -103, 248, 0, 673, + 495, 185, 186, 0, 0, 0, 0, 0, 649, 187, + 188, 0, 0, 189, 0, 190, 185, 186, 0, 249, + 64, 79, 0, 0, 187, 188, 0, 795, 189, 0, + 190, 64, 79, 0, 249, 944, 0, 674, 944, 496, + 225, 0, 0, 0, 0, 0, 64, 79, 0, 64, + 79, 796, 0, 674, 0, 185, 186, 0, 0, 0, + 674, 0, 0, 0, 188, 64, 79, 189, 0, 190, + 1041, 0, 64, 79, 0, 947, 951, 948, 947, 951, + 948, 0, 797, 0, 0, 0, 0, 0, 0, 0, + 944, 0, 0, 944, 184, 0, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 414, 415, 0, 0, 184, + 944, 0, 942, 949, 941, 942, 949, 941, 0, 0, + 495, 0, 0, 945, 943, 950, 945, 943, 950, 0, + 1042, 951, 948, 947, 951, 948, 946, 0, 0, 946, + 0, 0, 0, 0, 0, 0, 937, 0, 184, 0, + 947, 951, 948, 0, 0, 0, 0, 0, 0, 0, + 0, 944, 0, 0, 0, 0, 944, 942, 949, 941, + 942, 949, 941, 0, 0, 0, 0, 0, 945, 943, + 950, 945, 943, 950, 0, 0, 55, 942, 949, 941, + 0, 55, 0, 0, 946, 0, 0, 0, 945, 943, + 950, 947, 951, 948, 0, 0, 947, 951, 948, 0, + 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 75, 72, 0, + 0, 71, 75, 72, 0, 0, 0, 0, 942, 949, + 941, 0, 1053, 942, 949, 941, 0, 0, 0, 945, + 943, 950, 0, 0, 945, 943, 950, 0, 0, 0, + 1053, 76, 946, 51, 73, 46, 76, 946, 51, 73, + 46, 937, 0, 44, 67, 54, 74, 0, 44, 67, + 54, 74, 947, 951, 948, 0, 944, 68, 0, 0, + 0, 932, 68, 55, 0, 0, 0, 0, 0, 0, + 947, 951, 948, 0, 931, 0, 0, 0, 0, 932, + 0, 55, 0, 0, 0, 0, 0, 0, 816, 942, + 949, 941, 931, 0, 0, 0, 947, 951, 948, 0, + 945, 943, 950, 71, 75, 72, 0, 942, 949, 941, + 0, 0, 0, 946, 0, 0, 0, 0, 945, 943, + 950, 71, 75, 72, 0, 0, 0, 0, 0, 0, + 0, 946, 55, 942, 949, 941, 0, 517, 76, 500, + 51, 73, 46, 0, 945, 943, 950, 0, 0, 0, + 44, 67, 54, 74, 0, 0, 76, 946, 51, 73, + 46, 55, 0, 0, 68, 0, 0, 0, 44, 67, + 54, 74, 71, 75, 72, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 55, 0, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, + 0, 71, 75, 72, 0, 0, 0, 76, 0, 51, + 73, 46, 0, 0, 0, 0, 0, 0, 0, 44, + 67, 54, 74, 0, 0, 0, 71, 75, 72, 0, + 0, 0, 377, 68, 0, 0, 76, 55, 51, 73, + 46, 0, 378, 0, 695, 0, 379, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 380, 0, 381, 0, + 0, 76, 68, 51, 73, 46, 55, 0, 0, 382, + 0, 383, 96, 44, 67, 54, 74, 71, 75, 72, + 384, 0, 0, 385, 97, 0, 0, 68, 0, 386, + 0, 0, 0, 0, 0, 55, 388, 387, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 75, 72, 0, + 0, 0, 76, 389, 51, 73, 46, 0, 0, 0, + 0, 0, 0, 0, 44, 67, 54, 74, 216, 214, + 0, 0, 0, 0, 0, 71, 75, 72, 68, 0, + 517, 76, 0, 51, 73, 46, 55, 0, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 68, 236, 237, + 76, 55, 51, 73, 46, 236, 237, 0, 0, 216, + 214, 0, 44, 67, 54, 74, 71, 75, 72, 0, + 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 71, 75, 72, 0, 0, 0, + 0, 71, 75, 72, 0, 0, 0, 0, 0, 0, + 0, 76, 0, 51, 73, 46, 0, 0, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 76, + 0, 51, 73, 46, 0, 0, 76, 68, 51, 73, + 46, 44, 67, 54, 74, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 68, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 377, 55, 0, 0, + 0, 236, 237, 0, 0, 0, 378, 0, 0, 0, + 435, 0, 0, 0, 0, 55, 0, 0, 0, 851, + 380, 0, 381, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 382, 0, 383, 96, 71, 75, 72, + 0, 0, 0, 0, 384, 0, 0, 385, 97, 0, + 852, 0, 0, 386, 802, 71, 75, 72, 0, 0, + 388, 387, 0, 0, 0, 0, 0, 235, 0, 0, + 0, 0, 76, 0, 51, 73, 46, 389, 0, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 71, 75, 72, 0, 0, 0, 68, 0, - 0, 76, 0, 51, 73, 46, 0, 375, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 376, 0, 0, - 0, 433, 0, 0, 0, 515, 76, 68, 51, 73, - 46, 378, 0, 379, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 380, 0, 381, 97, 0, 55, - 0, 0, 68, 315, 316, 382, 55, 0, 383, 98, - 315, 316, 0, 0, 384, 0, 0, 0, 0, 0, - 0, 386, 385, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 387, 71, - 75, 72, 0, 0, 0, 0, 71, 75, 72, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 76, 0, 51, 73, 46, 0, 0, 377, 68, 0, + 0, 0, 44, 67, 54, 74, 0, 378, 0, 0, + 0, 435, 0, 0, 0, 0, 68, 0, 0, 0, + 0, 380, 0, 381, 0, 0, 428, 0, 55, 0, + 0, 0, 236, 237, 382, 0, 383, 96, 0, 0, + 0, 0, 0, 0, 0, 384, 0, 0, 385, 97, + 0, 0, 0, 0, 386, 0, 0, 0, 0, 0, + 0, 388, 387, 0, 0, 0, 0, 0, 71, 75, + 72, 0, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 76, 0, 51, 73, 46, 0, 0, - 76, 0, 51, 73, 46, 44, 67, 54, 74, 296, - 295, 0, 44, 67, 54, 74, 71, 75, 72, 68, - 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 55, 0, 0, 0, 315, 316, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 76, 0, 51, 73, 46, 0, 0, 0, 0, 0, - 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 71, 75, 72, 0, 0, 0, 68, 0, 0, 0, - 0, 0, 296, 295, 0, 0, 0, 0, 0, 71, - 75, 72, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 0, 51, 73, 46, 0, - 0, 0, 0, 0, 0, 0, 44, 67, 54, 74, - 0, 0, 0, 76, 0, 51, 73, 46, 0, 0, - 68, 0, 0, 0, 375, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 376, 0, 0, 55, 377, 68, - 0, 315, 316, 0, 0, 0, 0, 0, 378, 0, - 379, 0, 0, 55, 0, 0, 0, 315, 316, 0, - 0, 380, 0, 381, 97, 0, 0, 0, 0, 0, - 0, 0, 382, 0, 0, 383, 98, 71, 75, 72, - 0, 384, 0, 0, 0, 0, 0, 0, 386, 385, - 0, 0, 55, 71, 75, 72, 315, 316, 0, 0, - 0, 0, 0, 0, 0, 387, 0, 0, 0, 0, - 0, 76, 0, 51, 73, 46, 0, 0, 0, 0, - 0, 0, 314, 44, 67, 54, 74, 76, 0, 51, - 73, 46, 71, 75, 72, 0, 375, 68, 0, 44, - 67, 54, 74, 0, 0, 0, 376, 0, 0, 0, - 433, 0, 0, 68, 0, 55, 0, 0, 0, 839, - 378, 314, 379, 0, 0, 426, 76, 0, 51, 73, - 46, 0, 0, 380, 0, 381, 97, 0, 44, 67, - 54, 74, 0, 0, 382, 0, 0, 383, 98, 0, - 840, 0, 68, 384, 790, 71, 75, 72, 0, 0, - 386, 385, 0, 0, 0, 0, 0, 0, 212, 213, - 214, 0, 0, 217, 219, 220, 0, 387, 221, 0, - 222, 0, 0, 0, 227, 228, 0, 229, 0, 76, - 0, 51, 73, 46, 55, 230, 232, 233, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 235, 0, - 427, 0, 0, 0, 0, 68, 0, 0, 0, 55, - 0, 0, 0, 315, 316, 238, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 75, 72, 240, 241, 242, - 0, 244, 245, 246, 247, 248, 249, 0, 0, 236, - 243, 226, 216, 234, 0, 218, 237, 0, 0, 71, - 75, 72, 223, 0, 0, 239, 215, 225, 76, 224, - 51, 73, 46, 0, 0, 0, 0, 0, 231, 0, - 44, 67, 54, 74, 0, 0, 0, 0, 314, 0, - 0, 0, 0, 76, 68, 51, 73, 46, 0, 0, - 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, + 0, 0, 429, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 0, 0, 0, 202, 0, 0, 0, 66, + 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, - 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 0, 0, 0, 62, 0, 0, - 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, - 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, - 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 0, 0, 0, 202, - 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, + 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, + 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 48, 49, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, + 0, 58, 0, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 82, 50, 0, 0, 0, 0, 203, 61, 0, + 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, @@ -913,85 +890,98 @@ const short QmlJSGrammar::action_info [] = { 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 0, 0, - 0, 202, 0, 0, 0, 66, 0, 0, 0, 0, + 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 82, 50, 0, 0, 865, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 0, 78, 45, - 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, - 0, 48, 49, 0, 260, 0, 0, 0, 0, 0, - 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, - 75, 72, 0, 80, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, - 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, - 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 48, 49, 0, 260, 0, 0, 0, - 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 0, 0, 0, 202, 0, 0, 0, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 65, 82, 50, 0, 0, 0, 0, 244, + 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, + 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, + 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, + 0, 0, 0, 0, 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 71, 75, 72, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 71, 75, 72, 0, 80, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, + 877, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 867, 0, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 870, 869, 0, - 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 0, 0, 0, 202, - 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 871, 874, 872, 0, 80, - 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, - 65, 82, 50, 0, 0, 865, 0, 0, 61, 0, - 0, 0, 0, 868, 0, 0, 78, 45, 0, 76, - 0, 51, 873, 866, 64, 79, 0, 0, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 867, - 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 870, 869, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, - 0, 0, 0, 202, 0, 0, 0, 66, 0, 0, - 0, 0, 0, 0, 0, 0, 903, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 871, - 874, 872, 0, 80, 0, 0, 0, 0, 157, 0, - 0, 0, 0, 0, 65, 82, 50, 0, 0, 865, - 0, 0, 61, 0, 0, 0, 0, 868, 0, 0, - 78, 45, 0, 76, 0, 51, 873, 866, 64, 79, - 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 867, 0, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 870, 869, 0, 0, 0, + 0, 68, 0, 0, 0, 48, 49, 0, 304, 0, + 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 0, 0, 0, 202, 0, 0, + 58, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 871, 874, 872, 0, 80, 0, 0, - 0, 0, 157, 0, 0, 0, 0, 0, 65, 82, - 50, 0, 0, 865, 0, 0, 61, 0, 0, 0, - 0, 868, 0, 0, 78, 45, 0, 76, 0, 51, - 873, 866, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 47, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 71, 75, 72, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, + 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, + 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, + 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 48, 49, + 0, 304, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, - 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, - 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, + 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, - 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, + 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 879, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 882, 881, 0, 0, 0, 0, 0, + 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, + 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 883, 886, 884, 0, 80, 0, 0, 0, 0, + 156, 0, 0, 0, 0, 0, 65, 82, 50, 0, + 0, 877, 0, 0, 61, 0, 0, 0, 0, 0, + 880, 0, 0, 78, 45, 0, 76, 0, 51, 885, + 878, 64, 79, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 879, 0, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 882, 881, + 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 0, 0, 0, + 243, 0, 0, 0, 66, 0, 0, 0, 0, 0, + 0, 0, 0, 918, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 883, 886, 884, 0, + 80, 0, 0, 0, 0, 156, 0, 0, 0, 0, + 0, 65, 82, 50, 0, 0, 877, 0, 0, 61, + 0, 0, 0, 0, 0, 880, 0, 0, 78, 45, + 0, 76, 0, 51, 885, 878, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 879, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 882, 881, 0, 0, 0, 0, 0, + 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, + 0, 0, 0, 0, 0, 243, 0, 0, 0, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 915, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 883, 886, 884, 0, 80, 0, 0, 0, 0, + 156, 0, 0, 0, 0, 0, 65, 82, 50, 0, + 0, 877, 0, 0, 61, 0, 0, 0, 0, 0, + 880, 0, 0, 78, 45, 0, 76, 0, 51, 885, + 878, 64, 79, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, + 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, + 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, + 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, + 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, + 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, + 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, @@ -1004,106 +994,57 @@ const short QmlJSGrammar::action_info [] = { 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 85, - 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, - 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, - 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, - 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, + 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, + 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, + 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, - 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, - 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, - 0, 0, 160, 78, 45, 0, 76, 0, 51, 73, - 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, - 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, - 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, - 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, - 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, - 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, - 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 268, 160, 78, 45, 0, 76, - 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, - 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, - 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, - 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, - 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, - 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, - 0, 61, 0, 0, 0, 0, 0, 0, 85, 78, - 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 68, 0, - 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, - 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, + 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, + 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, + 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, + 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, - 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 265, 160, 78, 45, 0, 76, 0, 51, 73, 46, - 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 372, 0, 0, 47, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, - 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, - 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, - 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, - 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, - 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 160, 78, 45, - 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, + 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, + 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 85, 78, 45, 0, 76, 0, + 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, + 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 374, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 619, 0, 0, 0, 77, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 160, 78, 45, 0, 76, 0, 51, 73, 46, 64, - 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, + 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, + 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, + 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, + 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, + 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 364, 0, 0, 47, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, - 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, - 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, - 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, - 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, - 0, 0, 0, 0, 0, 0, 160, 78, 45, 0, - 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, - 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, - 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, - 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 764, 0, 0, 0, 77, 71, - 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, - 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 85, + 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, + 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, + 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, + 0, 0, 0, 0, 309, 159, 78, 45, 0, 76, + 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, + 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, + 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, + 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 776, 0, 0, 0, 77, 71, 75, + 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, + 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 85, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, @@ -1116,10 +1057,60 @@ const short QmlJSGrammar::action_info [] = { 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, - 0, 314, 160, 78, 45, 0, 76, 0, 51, 73, + 0, 0, 0, 159, 78, 45, 0, 76, 0, 51, + 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, + 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, + 805, 0, 0, 68, 0, 0, 0, 47, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, + 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, + 62, 63, 0, 0, 66, 0, 0, 0, 0, 69, + 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 71, 75, 72, 0, + 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, + 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, + 0, 0, 0, 0, 0, 0, 0, 85, 78, 45, + 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 0, 68, 0, 0, + 0, 366, 0, 0, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, + 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, + 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, + 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, + 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, + 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, + 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, + 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, + 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, + 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, + 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, + 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, + 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, + 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, + 61, 0, 0, 0, 0, 0, 0, 312, 159, 78, + 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, + 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, + 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, + 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, + 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, + 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, + 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, + 170, 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, @@ -1128,44 +1119,32 @@ const short QmlJSGrammar::action_info [] = { 0, 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 160, 78, 45, 0, 76, - 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, - 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, - 0, 0, 793, 0, 0, 68, 0, 0, 0, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 52, 0, 0, 0, 0, 0, 0, 55, 0, - 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, - 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, - 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 77, 71, 75, - 72, 0, 80, 0, 81, 0, 83, 0, 84, 0, - 0, 0, 0, 65, 82, 50, 0, 0, 0, 0, - 0, 61, 0, 0, 0, 0, 0, 0, 160, 78, - 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, - 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, - 0, 0, 0, 0, 0, 0, 172, 0, 68, 0, - 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, - 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, - 0, 0, 0, 0, 69, 0, 70, 0, 0, 734, + 0, 0, 0, 0, 0, 235, 159, 78, 45, 0, + 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, + 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, + 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, + 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, + 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 621, 0, 0, 0, 77, 71, + 75, 72, 0, 80, 0, 81, 0, 83, 0, 84, + 0, 0, 0, 0, 65, 82, 50, 0, 0, 0, + 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, + 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, + 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, - 0, 84, 0, 0, 0, 0, 65, 82, 50, 0, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 733, 160, 78, 45, 0, 76, 0, 51, 73, 46, - 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 68, 0, 0, 0, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, - 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, - 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, - 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, - 0, 0, 0, 77, 71, 75, 72, 0, 80, 0, - 81, 0, 83, 0, 84, 0, 0, 0, 0, 65, - 82, 50, 0, 0, 0, 0, 0, 61, 0, 0, - 0, 0, 0, 314, 160, 78, 45, 0, 76, 0, + 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, + 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, + 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, + 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, + 0, 746, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 71, 75, 72, 0, 80, 0, 81, + 0, 83, 0, 84, 0, 0, 0, 0, 65, 82, + 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 745, 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 47, 48, @@ -1173,346 +1152,381 @@ const short QmlJSGrammar::action_info [] = { 52, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, 0, 0, - 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 70, 0, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 77, 71, 75, 72, - 0, 80, 0, 81, 0, 83, 157, 84, 0, 0, - 0, 0, 65, 82, 50, 412, 413, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 85, 78, 45, - 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, - 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, - 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 53, 52, 0, 0, 0, 0, 0, 0, - 55, 151, 0, 0, 56, 57, 0, 58, 0, 0, - 0, 59, 0, 60, 62, 63, 0, 0, 66, 0, - 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 153, 0, 0, 0, 0, 0, 77, - 71, 75, 72, 154, 80, 0, 81, 156, 83, 0, - 84, 0, 159, 0, 0, 65, 82, 50, 0, 0, - 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 160, 78, 45, 0, 76, 0, 51, 73, 46, 64, - 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, - 0, 0, 0, 0, 0, 0, 0, 951, 950, 0, - 68, 0, 0, 0, 47, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 151, 0, 0, 56, 1062, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 154, 80, 0, 81, - 156, 83, 0, 84, 0, 159, 0, 0, 65, 82, - 50, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 160, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 951, 950, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 238, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 828, 0, 0, 0, 238, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, + 0, 80, 0, 81, 0, 83, 0, 84, 0, 0, + 0, 0, 65, 82, 50, 0, 0, 0, 0, 0, + 61, 0, 0, 0, 0, 0, 0, 235, 159, 78, + 45, 0, 76, 0, 51, 73, 46, 64, 79, 0, + 0, 0, 0, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 53, 52, 0, 0, 0, 0, 0, + 0, 55, 0, 0, 0, 56, 57, 0, 58, 0, + 0, 0, 59, 0, 60, 62, 63, 0, 0, 66, + 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 855, 0, 0, 0, 238, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, + 77, 71, 75, 72, 0, 80, 0, 81, 0, 83, + 156, 84, 0, 0, 0, 0, 65, 82, 50, 414, + 415, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 85, 78, 45, 0, 76, 0, 51, 73, + 46, 64, 79, 0, 0, 0, 0, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, + 0, 0, 0, 0, 0, 55, 150, 0, 0, 56, + 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, + 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, + 70, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 0, 0, 0, 77, 71, 75, 72, 153, 80, + 0, 81, 155, 83, 0, 84, 0, 158, 0, 0, + 65, 82, 50, 0, 0, 0, 0, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, + 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, + 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 963, 962, 0, 68, 0, 0, 0, + 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 52, 0, 0, 0, 0, 0, 0, 55, + 150, 0, 0, 56, 1074, 0, 58, 0, 0, 0, + 59, 0, 60, 62, 63, 0, 0, 66, 0, 0, + 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 152, 0, 0, 0, 0, 0, 77, 71, + 75, 72, 153, 80, 0, 81, 155, 83, 0, 84, + 0, 158, 0, 0, 65, 82, 50, 0, 0, 0, + 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, + 159, 78, 45, 0, 76, 0, 51, 73, 46, 64, + 79, 0, 0, 0, 0, 0, 44, 67, 54, 74, + 0, 0, 0, 0, 0, 0, 0, 963, 962, 0, + 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, + 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, + 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, + 55, 272, 274, 275, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 824, 0, 0, 0, 238, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, + 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, + 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 281, 257, 267, 76, 266, 51, 73, 46, + 0, 0, 0, 0, 0, 273, 0, 44, 67, 54, + 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, + 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, + 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, + 0, 55, 272, 274, 275, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 71, 75, 72, 282, 283, 284, 0, 286, 287, + 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, + 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, + 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, + 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, + 54, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, + 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, + 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, + 0, 0, 55, 272, 274, 275, 0, 295, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 849, 0, 0, 0, 238, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 345, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 238, 0, 0, 0, 0, 0, - 0, 0, 347, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 345, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 238, 0, 0, 0, 527, 0, - 0, 0, 347, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 524, 526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 345, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 238, 0, 525, 0, 527, 0, - 0, 0, 347, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 528, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 524, 526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 345, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, - 716, 0, 0, 0, 238, 0, 0, 0, 527, 0, - 0, 0, 347, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 524, 526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 212, 213, 214, - 0, 0, 217, 219, 220, 0, 0, 221, 0, 222, - 0, 0, 0, 227, 228, 0, 229, 0, 0, 0, - 0, 0, 0, 55, 230, 232, 233, 0, 345, 0, - 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, - 721, 0, 0, 0, 238, 0, 0, 0, 527, 0, - 0, 0, 347, 71, 75, 72, 240, 241, 242, 0, - 244, 245, 246, 247, 248, 249, 0, 0, 236, 243, - 226, 216, 234, 0, 218, 237, 0, 0, 0, 0, - 0, 223, 0, 0, 239, 215, 225, 76, 224, 51, - 73, 46, 0, 0, 0, 0, 0, 231, 0, 44, - 67, 524, 526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 144, 0, 0, - 0, 0, 145, 0, 47, 48, 49, 147, 0, 0, - 0, 0, 0, 0, 148, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 151, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 152, 0, 153, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 154, 80, 155, 81, - 156, 83, 157, 84, 158, 159, 0, 0, 65, 82, - 50, 0, 0, 0, 146, 0, 61, 0, 0, 0, - 0, 0, 0, 160, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 0, 149, 0, 68, 0, 0, 0, 144, 0, 0, - 0, 0, 145, 0, 47, 48, 49, 147, 0, 0, - 0, 0, 0, 0, 148, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 151, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 152, 0, 153, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 154, 80, 155, 81, - 156, 83, 157, 84, 158, 159, 0, 0, 65, 82, - 50, 0, 0, 0, 146, 0, 61, 0, 0, 0, - 0, 0, 0, 160, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 150, 149, 0, 68, 0, 0, 0, 144, 0, 0, - 0, 0, 145, 0, 47, 48, 49, 147, 0, 0, - 0, 0, 0, 0, 148, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 151, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 958, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 152, 0, 153, 0, 0, 0, - 0, 0, 959, 71, 75, 72, 154, 80, 155, 81, - 156, 83, 157, 84, 158, 159, 0, 0, 65, 82, - 50, 0, 0, 0, 146, 0, 61, 0, 0, 0, - 0, 0, 0, 160, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 75, 72, 282, 283, 284, 0, 286, + 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, + 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, + 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, + 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 150, 149, 0, 68, 0, 0, 0, 144, 0, 0, - 0, 0, 145, 0, 47, 48, 49, 147, 0, 0, - 0, 0, 0, 0, 148, 53, 52, 0, 0, 0, - 0, 0, 0, 55, 151, 0, 0, 56, 57, 0, - 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, - 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, - 0, 0, 0, 0, 152, 0, 153, 0, 0, 0, - 0, 0, 77, 71, 75, 72, 154, 80, 155, 81, - 156, 83, 157, 84, 158, 159, 0, 0, 65, 82, - 50, 0, 0, 0, 146, 0, 61, 0, 0, 0, - 0, 0, 0, 160, 78, 45, 0, 76, 0, 51, - 73, 46, 64, 79, 0, 0, 0, 0, 0, 44, - 67, 54, 74, 0, 0, 0, 0, 0, 0, 0, - 301, 149, 0, 68, 0, 0, 0, - - 435, 717, 709, 708, 723, 707, 704, 703, 702, 730, - 257, 208, 1101, 1100, 699, 696, 695, 694, 693, 688, - 690, 689, 687, 264, 271, 649, 679, 267, 676, 269, - 208, 250, 980, 1095, 1098, 674, 677, 673, 636, 759, - 1094, 208, 657, 1006, 651, 638, 995, 286, 208, 778, - 779, 288, 997, 1082, 638, 940, 208, 1090, 972, 1080, - 1068, 636, 133, 626, 627, 133, 831, 620, 625, 789, - 969, 615, 792, 1005, 1066, 611, 608, 970, 968, 1054, - 609, 602, 596, 594, 112, 809, 807, 1051, 591, 808, - 810, 588, 1052, 814, 592, 815, 584, 816, 820, 576, - 325, 574, 1008, 568, 818, 133, 565, 564, 208, 563, - 559, 562, 557, 556, 554, 555, 133, 363, 1046, 547, - 841, 321, 546, 544, 545, 537, 1055, 1012, 538, 540, - 294, 539, 324, 330, 253, 973, 210, 954, 374, 331, - 510, 332, 348, 455, 514, 333, 501, 975, 396, 944, - 1019, 993, 1038, 175, 357, 495, 497, 473, 174, 483, - 171, 355, 356, 388, 173, 736, 420, 468, 389, 595, - 893, 466, 892, 894, 392, 395, 597, 895, 901, 451, - 618, 449, 454, 133, 455, 1033, 443, 401, 1026, 208, - 630, 940, 940, 921, 403, 428, 432, 424, 928, 170, - 1024, 1023, 941, 420, 924, 1021, 430, 420, 437, 977, - 978, 1034, 1035, 461, 420, 420, 420, 420, 479, 398, - 489, 368, 1040, 306, 496, 306, 513, 397, 394, 1031, - 1032, 306, 697, 632, 391, 1048, 397, 957, 397, 843, - 844, 306, 682, 397, 210, 1044, 306, 888, 397, 397, - 210, 306, 309, 632, 210, 210, 210, 210, 1049, 570, - 1060, 572, 613, 1061, 306, 305, 617, 306, 305, 210, - 393, 419, 300, 632, 303, 422, 390, 1084, 1083, 632, - 210, 548, 457, 459, 475, 477, 532, 558, 861, 397, - 830, 397, 397, 740, 739, 210, 397, 306, 697, 210, - 724, 726, 298, 210, 823, 306, 682, 306, 671, 264, - 264, 264, 210, 210, 302, 650, 0, 731, 397, 732, - 306, 309, 306, 309, 711, 1011, 367, 370, 745, 29, - 209, 253, 653, 666, 669, 210, 42, 306, 309, 306, - 309, 306, 309, 0, 541, 306, 832, 256, 306, 604, - 306, 496, 306, 513, 94, 715, 712, 306, 309, 306, - 309, 302, 633, 758, 483, 306, 309, 306, 309, 93, - 823, 306, 334, 341, 336, 341, 832, 306, 832, 306, - 832, 0, 633, 915, 916, 306, 309, 917, 306, 353, - 306, 309, 306, 621, 0, 306, 446, 306, 439, 306, - 462, 860, 566, 531, 344, 417, 434, 94, 775, 259, - 845, 819, 0, 94, 0, 735, 0, 438, 0, 94, - 94, 0, 93, 306, 506, 0, 11, 453, 93, 29, - 29, 306, 470, 0, 93, 93, 42, 42, 0, 29, - 0, 29, 306, 309, 0, 659, 42, 0, 42, 94, - 0, 29, 0, 675, 0, 95, 0, 678, 42, 370, - 700, 95, 560, 0, 93, 29, 605, 95, 95, 29, - 341, 336, 42, 94, 281, 705, 42, 685, 283, 691, - 0, 1015, 306, 506, 550, 1017, 1016, 1014, 93, 335, - 201, 291, 289, 0, 0, 313, 94, 811, 765, 306, - 309, 344, 0, 805, 817, 812, 354, 341, 832, 94, - 622, 93, 754, 447, 827, 441, 328, 463, 834, 0, - 94, 95, 29, 499, 93, 94, 11, 11, 890, 42, - 94, 0, 711, 800, 178, 93, 11, 509, 11, 632, - 93, 508, 845, 94, 95, 93, 472, 767, 11, 471, - 851, 107, 857, 0, 94, 94, 94, 95, 93, 720, - 0, 1079, 11, 715, 712, 184, 11, 369, 95, 93, - 93, 93, 94, 95, 489, 29, 786, 94, 95, 0, - 193, 763, 42, 306, 621, 640, 0, 93, 0, 293, - 0, 95, 93, 350, 0, 94, 512, 0, 279, 0, - 508, 94, 95, 95, 95, 29, 0, 103, 199, 197, - 93, 0, 42, 94, 29, 0, 93, 0, 0, 11, - 95, 42, 0, 1009, 327, 95, 198, 0, 93, 96, - 0, 94, 794, 1001, 797, 1064, 0, 200, 94, 0, - 0, 94, 201, 95, 681, 761, 93, 910, 306, 309, - 0, 0, 0, 93, 200, 94, 93, 0, 94, 0, - 0, 95, 681, 760, 1001, 370, 371, 0, 775, 0, - 93, 781, 11, 93, 796, 0, 749, 94, 0, 95, - 681, 762, 854, 200, 724, 726, 95, 200, 799, 95, - 681, 753, 93, 42, 94, 94, 1067, 1004, 94, 629, - 635, 622, 11, 95, 681, 752, 95, 681, 751, 93, - 93, 11, 0, 93, 94, 302, 94, 94, 201, 0, - 0, 406, 94, 94, 94, 0, 94, 94, 780, 93, - 0, 93, 93, 0, 0, 201, 94, 93, 93, 93, - 200, 93, 93, 95, 0, 94, 95, 681, 748, 0, - 42, 93, 637, 205, 0, 0, 94, 201, 0, 0, - 93, 750, 95, 0, 201, 95, 681, 747, 201, 42, - 95, 93, 95, 369, 95, 0, 200, 42, 200, 42, - 94, 42, 664, 320, 95, 0, 1056, 0, 1089, 205, - 643, 42, 662, 95, 0, 93, 0, 104, 660, 0, - 645, 200, 0, 0, 95, 681, 680, 947, 0, 946, - 948, 953, 949, 952, 205, 200, 94, 0, 94, 278, - 0, 201, 200, 409, 1086, 1087, 0, 0, 0, 200, - 42, 93, 0, 93, 0, 885, 0, 904, 907, 0, - 0, 94, 205, 0, 641, 0, 0, 0, 0, 0, - 200, 200, 0, 0, 0, 94, 93, 201, 0, 201, - 887, 0, 94, 885, 885, 0, 0, 0, 0, 94, - 93, 0, 274, 0, 0, 0, 0, 93, 0, 200, - 410, 414, 201, 0, 93, 0, 0, 1056, 887, 887, - 94, 94, 885, 1057, 0, 0, 201, 0, 0, 0, - 0, 0, 0, 201, 0, 93, 93, 0, 0, 0, - 201, 0, 0, 0, 0, 0, 0, 887, 0, 94, - 11, 0, 1027, 0, 0, 0, 200, 0, 0, 1009, - 0, 201, 201, 0, 93, 1010, 0, 0, 0, 205, - 0, 947, 1010, 946, 948, 953, 949, 952, 947, 0, - 946, 948, 953, 949, 952, 0, 0, 0, 0, 0, - 201, 0, 0, 0, 0, 0, 94, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 0, 254, 255, 256, + 0, 0, 259, 261, 262, 0, 0, 263, 0, 264, + 0, 0, 0, 269, 270, 0, 271, 0, 0, 0, + 0, 0, 0, 55, 272, 274, 275, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 836, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 75, 72, 282, 283, 284, 0, + 286, 287, 288, 289, 290, 291, 0, 0, 278, 285, + 268, 258, 276, 0, 260, 279, 0, 0, 0, 0, + 0, 0, 265, 0, 0, 281, 257, 267, 76, 266, + 51, 73, 46, 0, 0, 0, 0, 0, 273, 0, + 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 254, 255, + 256, 0, 0, 259, 261, 262, 0, 0, 263, 0, + 264, 0, 0, 0, 269, 270, 0, 271, 0, 0, + 0, 0, 0, 0, 55, 272, 274, 275, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 867, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 75, 72, 282, 283, 284, + 0, 286, 287, 288, 289, 290, 291, 0, 0, 278, + 285, 268, 258, 276, 0, 260, 279, 0, 0, 0, + 0, 0, 0, 265, 0, 0, 281, 257, 267, 76, + 266, 51, 73, 46, 0, 0, 0, 0, 0, 273, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 0, 254, + 255, 256, 0, 0, 259, 261, 262, 0, 0, 263, + 0, 264, 0, 0, 0, 269, 270, 0, 271, 0, + 0, 0, 0, 0, 0, 55, 272, 274, 275, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 861, 0, 0, 0, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 75, 72, 282, 283, + 284, 0, 286, 287, 288, 289, 290, 291, 0, 0, + 278, 285, 268, 258, 276, 0, 260, 279, 0, 0, + 0, 0, 0, 0, 265, 0, 0, 281, 257, 267, + 76, 266, 51, 73, 46, 0, 0, 0, 0, 0, + 273, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, + 254, 255, 256, 0, 0, 259, 261, 262, 0, 0, + 263, 0, 264, 0, 0, 0, 269, 270, 0, 271, + 0, 0, 0, 0, 0, 0, 55, 272, 274, 275, + 0, 295, 0, 677, 0, 0, 0, 0, 0, 0, + 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 75, 72, 282, + 283, 284, 0, 286, 287, 288, 289, 290, 291, 0, + 0, 278, 285, 268, 258, 276, 0, 260, 279, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 281, 257, + 267, 76, 266, 51, 73, 46, 0, 0, 0, 0, + 0, 273, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 254, 255, 256, 0, 0, 259, 261, 262, 0, + 0, 263, 0, 264, 0, 0, 0, 269, 270, 0, + 271, 0, 0, 0, 0, 0, 0, 55, 272, 274, + 275, 0, 657, 0, 658, 0, 0, 0, 0, 0, + 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 71, 75, 72, + 282, 283, 284, 0, 286, 287, 288, 289, 290, 291, + 0, 0, 278, 285, 268, 258, 276, 0, 260, 279, + 0, 0, 0, 0, 0, 0, 265, 0, 0, 281, + 257, 267, 76, 266, 51, 73, 46, 0, 0, 0, + 0, 0, 273, 0, 44, 67, 54, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 254, 255, 256, 0, 0, 259, 261, 262, + 0, 0, 263, 0, 264, 0, 0, 0, 269, 270, + 0, 271, 0, 0, 0, 0, 0, 0, 55, 272, + 274, 275, 0, 347, 0, 0, 0, 0, 0, 0, + 0, 0, 277, 0, 0, 0, 348, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 349, 71, 75, + 72, 282, 283, 284, 0, 286, 287, 288, 289, 290, + 291, 0, 0, 278, 285, 268, 258, 276, 0, 260, + 279, 0, 0, 0, 0, 0, 0, 265, 0, 0, + 281, 257, 267, 76, 266, 51, 73, 46, 0, 0, + 0, 0, 0, 273, 0, 44, 67, 54, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 254, 255, 256, 0, 0, 259, 261, + 262, 0, 0, 263, 0, 264, 0, 0, 0, 269, + 270, 0, 271, 0, 0, 0, 0, 0, 0, 55, + 272, 274, 275, 0, 347, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1027, 0, 0, + 280, 0, 0, 0, 529, 0, 0, 0, 349, 71, + 75, 72, 282, 283, 284, 0, 286, 287, 288, 289, + 290, 291, 0, 0, 278, 285, 268, 258, 276, 0, + 260, 279, 0, 0, 0, 0, 0, 0, 265, 0, + 0, 281, 257, 267, 76, 266, 51, 73, 46, 0, + 0, 0, 0, 0, 273, 0, 44, 67, 526, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1063, 0, 0, 0, 0, 0, 947, 0, 946, 948, - 953, 949, 952, 0, 0, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 254, 255, 256, 0, 0, 259, + 261, 262, 0, 0, 263, 0, 264, 0, 0, 0, + 269, 270, 0, 271, 0, 0, 0, 0, 0, 0, + 55, 272, 274, 275, 0, 347, 0, 0, 0, 0, + 0, 0, 0, 0, 277, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 527, 0, 529, 0, 0, 0, 349, + 71, 75, 72, 282, 283, 284, 0, 286, 287, 288, + 289, 290, 291, 0, 0, 278, 285, 268, 258, 276, + 0, 260, 279, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 281, 257, 267, 530, 266, 51, 73, 46, + 0, 0, 0, 0, 0, 273, 0, 44, 67, 526, + 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 254, 255, 256, 0, 0, + 259, 261, 262, 0, 0, 263, 0, 264, 0, 0, + 0, 269, 270, 0, 271, 0, 0, 0, 0, 0, + 0, 55, 272, 274, 275, 0, 347, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 0, 0, 0, 348, + 0, 0, 0, 0, 0, 0, 0, 0, 728, 0, + 0, 0, 280, 0, 0, 0, 529, 0, 0, 0, + 349, 71, 75, 72, 282, 283, 284, 0, 286, 287, + 288, 289, 290, 291, 0, 0, 278, 285, 268, 258, + 276, 0, 260, 279, 0, 0, 0, 0, 0, 0, + 265, 0, 0, 281, 257, 267, 76, 266, 51, 73, + 46, 0, 0, 0, 0, 0, 273, 0, 44, 67, + 526, 528, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 254, 255, 256, 0, + 0, 259, 261, 262, 0, 0, 263, 0, 264, 0, + 0, 0, 269, 270, 0, 271, 0, 0, 0, 0, + 0, 0, 55, 272, 274, 275, 0, 347, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, + 348, 0, 0, 0, 0, 0, 0, 0, 0, 733, + 0, 0, 0, 280, 0, 0, 0, 529, 0, 0, + 0, 349, 71, 75, 72, 282, 283, 284, 0, 286, + 287, 288, 289, 290, 291, 0, 0, 278, 285, 268, + 258, 276, 0, 260, 279, 0, 0, 0, 0, 0, + 0, 265, 0, 0, 281, 257, 267, 76, 266, 51, + 73, 46, 0, 0, 0, 0, 0, 273, 0, 44, + 67, 526, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 0, 143, 0, 0, + 0, 0, 144, 0, 47, 48, 49, 146, 0, 0, + 0, 0, 0, 0, 147, 53, 52, 0, 0, 0, + 0, 0, 0, 55, 150, 0, 0, 56, 57, 0, + 58, 0, 0, 0, 59, 0, 60, 62, 63, 0, + 0, 66, 0, 0, 0, 0, 69, 0, 70, 0, + 0, 0, 0, 0, 151, 0, 152, 0, 0, 0, + 0, 0, 77, 71, 75, 72, 153, 80, 154, 81, + 155, 83, 156, 84, 157, 158, 0, 0, 65, 82, + 50, 0, 0, 0, 145, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 159, 78, 45, 0, 76, 0, + 51, 73, 46, 64, 79, 0, 0, 0, 0, 0, + 44, 67, 54, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 148, 0, 68, 0, 0, 0, 143, 0, + 0, 0, 0, 144, 0, 47, 48, 49, 146, 0, + 0, 0, 0, 0, 0, 147, 53, 52, 0, 0, + 0, 0, 0, 0, 55, 150, 0, 0, 56, 57, + 0, 58, 0, 0, 0, 59, 0, 60, 62, 63, + 0, 0, 66, 0, 0, 0, 0, 69, 0, 70, + 0, 0, 0, 0, 0, 151, 0, 152, 0, 0, + 0, 0, 0, 77, 71, 75, 72, 153, 80, 154, + 81, 155, 83, 156, 84, 157, 158, 0, 0, 65, + 82, 50, 0, 0, 0, 145, 0, 61, 0, 0, + 0, 0, 0, 0, 0, 159, 78, 45, 0, 76, + 0, 51, 73, 46, 64, 79, 0, 0, 0, 0, + 0, 44, 67, 54, 74, 0, 0, 0, 0, 0, + 0, 0, 149, 148, 0, 68, 0, 0, 0, 143, + 0, 0, 0, 0, 144, 0, 47, 48, 49, 146, + 0, 0, 0, 0, 0, 0, 147, 53, 52, 0, + 0, 0, 0, 0, 0, 55, 150, 0, 0, 56, + 57, 0, 58, 0, 0, 0, 59, 0, 60, 62, + 63, 0, 0, 66, 0, 0, 0, 0, 69, 0, + 70, 0, 0, 0, 0, 0, 151, 0, 152, 0, + 0, 0, 0, 0, 77, 71, 75, 72, 153, 80, + 154, 81, 155, 83, 156, 84, 157, 158, 0, 0, + 65, 82, 50, 0, 0, 0, 145, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 159, 78, 45, 0, + 76, 0, 51, 73, 46, 64, 79, 0, 0, 0, + 0, 0, 44, 67, 54, 74, 0, 0, 0, 0, + 0, 0, 0, 222, 148, 0, 68, 0, 0, 0, + 143, 0, 0, 0, 0, 144, 0, 47, 48, 49, + 146, 0, 0, 0, 0, 0, 0, 147, 53, 52, + 0, 0, 0, 0, 0, 0, 55, 150, 0, 0, + 56, 57, 0, 58, 0, 0, 0, 59, 0, 60, + 62, 63, 0, 0, 970, 0, 0, 0, 0, 69, + 0, 70, 0, 0, 0, 0, 0, 151, 0, 152, + 0, 0, 0, 0, 0, 971, 71, 75, 72, 153, + 80, 154, 81, 155, 83, 156, 84, 157, 158, 0, + 0, 65, 82, 50, 0, 0, 0, 145, 0, 61, + 0, 0, 0, 0, 0, 0, 0, 159, 78, 45, + 0, 76, 0, 51, 73, 46, 64, 79, 0, 0, + 0, 0, 0, 44, 67, 54, 74, 0, 0, 0, + 0, 0, 0, 0, 149, 148, 0, 68, 0, 0, + 0, + + 729, 721, 720, 719, 716, 715, 714, 1112, 735, 1107, + 711, 708, 748, 707, 742, 706, 1110, 705, 702, 650, + 701, 700, 699, 1106, 638, 250, 691, 688, 640, 1094, + 250, 686, 689, 685, 1102, 250, 1092, 1080, 1066, 1078, + 1063, 1064, 111, 665, 771, 132, 659, 1058, 1067, 652, + 213, 1050, 376, 398, 790, 791, 422, 597, 640, 620, + 638, 599, 1045, 250, 1038, 132, 952, 628, 629, 627, + 1035, 843, 632, 622, 801, 617, 1033, 804, 613, 1036, + 610, 168, 611, 604, 169, 171, 598, 172, 596, 593, + 173, 590, 819, 820, 822, 821, 1031, 586, 594, 826, + 827, 1024, 578, 830, 576, 828, 832, 1023, 250, 1020, + 565, 564, 567, 1017, 570, 566, 952, 559, 557, 561, + 556, 549, 1009, 548, 1007, 853, 546, 547, 1018, 539, + 540, 542, 541, 205, 207, 132, 992, 365, 217, 252, + 327, 250, 323, 984, 981, 292, 516, 296, 457, 512, + 1113, 503, 499, 301, 308, 250, 980, 1005, 497, 985, + 132, 966, 332, 315, 333, 987, 311, 485, 313, 326, + 334, 475, 468, 470, 956, 335, 907, 904, 913, 905, + 451, 906, 359, 457, 445, 390, 437, 456, 350, 453, + 391, 357, 358, 558, 394, 397, 952, 132, 430, 933, + 403, 405, 940, 936, 953, 252, 308, 434, 619, 615, + 422, 422, 989, 990, 426, 432, 873, 634, 439, 634, + 227, 226, 370, 743, 252, 744, 574, 572, 252, 678, + 422, 491, 252, 463, 1046, 1047, 481, 422, 399, 399, + 835, 422, 422, 400, 399, 399, 399, 396, 399, 227, + 683, 227, 694, 227, 709, 308, 399, 399, 969, 227, + 498, 736, 738, 399, 1043, 1044, 399, 227, 709, 1052, + 634, 752, 751, 399, 227, 694, 421, 424, 681, 227, + 515, 393, 634, 308, 252, 252, 227, 900, 221, 395, + 252, 224, 1056, 252, 252, 0, 459, 252, 1096, 1095, + 252, 252, 252, 461, 1060, 252, 654, 477, 479, 227, + 226, 252, 1072, 0, 634, 1073, 0, 308, 219, 842, + 300, 252, 0, 392, 0, 369, 93, 1061, 294, 251, + 0, 223, 651, 534, 308, 656, 543, 294, 227, 230, + 661, 92, 550, 0, 787, 872, 855, 856, 227, 844, + 227, 230, 560, 343, 844, 227, 336, 675, 227, 230, + 227, 230, 343, 338, 227, 844, 227, 441, 227, 230, + 223, 982, 723, 252, 568, 29, 831, 927, 928, 0, + 690, 929, 42, 485, 687, 0, 372, 757, 857, 0, + 217, 227, 230, 346, 227, 230, 0, 635, 227, 230, + 227, 355, 0, 727, 724, 227, 448, 436, 835, 635, + 227, 230, 227, 230, 227, 498, 227, 230, 227, 844, + 227, 606, 227, 230, 227, 464, 227, 623, 723, 227, + 623, 29, 419, 491, 0, 798, 93, 0, 42, 93, + 0, 787, 93, 440, 227, 230, 0, 533, 0, 747, + 0, 92, 343, 338, 92, 732, 29, 92, 0, 727, + 724, 372, 93, 42, 93, 455, 0, 29, 227, 230, + 11, 337, 0, 29, 42, 777, 93, 92, 0, 92, + 42, 552, 443, 346, 94, 330, 234, 94, 770, 29, + 94, 92, 0, 93, 641, 176, 42, 0, 182, 29, + 562, 792, 227, 472, 501, 93, 42, 93, 92, 0, + 94, 0, 94, 667, 766, 779, 356, 191, 93, 863, + 92, 449, 92, 93, 94, 106, 11, 902, 793, 0, + 703, 198, 0, 92, 697, 869, 607, 29, 92, 93, + 465, 94, 624, 631, 42, 624, 824, 195, 817, 29, + 839, 11, 717, 94, 92, 94, 42, 0, 712, 823, + 93, 196, 11, 227, 508, 93, 94, 371, 11, 303, + 200, 94, 223, 352, 0, 92, 775, 197, 227, 508, + 92, 202, 1091, 93, 11, 0, 93, 94, 93, 846, + 29, 329, 227, 515, 11, 343, 844, 42, 92, 93, + 29, 92, 0, 92, 93, 0, 761, 42, 94, 93, + 208, 102, 93, 94, 92, 474, 29, 103, 473, 92, + 0, 0, 93, 42, 92, 812, 0, 92, 0, 241, + 857, 94, 11, 0, 94, 95, 94, 92, 0, 0, + 0, 0, 246, 42, 11, 0, 93, 94, 637, 93, + 242, 0, 94, 693, 765, 210, 93, 0, 1021, 93, + 94, 92, 0, 242, 92, 93, 212, 42, 1013, 93, + 1076, 92, 0, 0, 92, 511, 0, 93, 672, 510, + 92, 93, 0, 0, 92, 11, 0, 242, 241, 0, + 514, 762, 92, 0, 510, 11, 92, 94, 693, 764, + 0, 1079, 93, 0, 94, 693, 763, 94, 693, 773, + 242, 11, 0, 94, 693, 772, 0, 92, 93, 736, + 738, 0, 806, 0, 809, 94, 693, 760, 93, 94, + 693, 759, 93, 92, 241, 408, 227, 230, 0, 241, + 93, 0, 829, 92, 922, 93, 0, 92, 93, 1013, + 94, 693, 774, 372, 373, 92, 0, 93, 0, 0, + 92, 0, 0, 92, 808, 0, 94, 0, 866, 242, + 0, 1027, 92, 42, 93, 1029, 1028, 1026, 811, 93, + 94, 0, 0, 0, 0, 0, 670, 42, 94, 92, + 0, 241, 0, 94, 92, 42, 94, 639, 241, 1068, + 42, 1101, 668, 42, 0, 94, 693, 692, 241, 643, + 645, 246, 0, 916, 241, 242, 0, 1098, 1099, 959, + 242, 958, 960, 965, 961, 964, 241, 897, 0, 919, + 241, 93, 0, 0, 0, 0, 0, 411, 93, 897, + 0, 322, 241, 246, 42, 0, 92, 0, 93, 0, + 0, 0, 899, 92, 93, 897, 0, 0, 0, 371, + 0, 0, 0, 92, 899, 0, 93, 0, 0, 92, + 93, 0, 242, 318, 0, 0, 0, 0, 0, 242, + 899, 92, 93, 0, 0, 92, 241, 0, 0, 242, + 0, 1021, 412, 416, 1068, 242, 0, 92, 0, 897, + 1069, 0, 0, 0, 1022, 0, 1039, 242, 0, 0, + 959, 242, 958, 960, 965, 961, 964, 0, 0, 1075, + 0, 1039, 0, 242, 899, 959, 93, 958, 960, 965, + 961, 964, 11, 0, 1022, 0, 0, 0, 0, 0, + 959, 92, 958, 960, 965, 961, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 242, 0, 0, + 0, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1525,181 +1539,164 @@ const short QmlJSGrammar::action_info [] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; const short QmlJSGrammar::action_check [] = { - 57, 37, 0, 7, 62, 7, 62, 37, 57, 57, - 37, 50, 62, 7, 57, 7, 62, 0, 15, 96, - 16, 37, 1, 49, 83, 96, 8, 34, 96, 5, - 5, 37, 2, 34, 52, 7, 5, 57, 57, 34, - 7, 15, 15, 34, 8, 62, 7, 37, 103, 20, - 34, 17, 17, 8, 7, 70, 34, 62, 57, 62, - 7, 38, 48, 7, 57, 17, 66, 8, 48, 17, - 38, 34, 17, 62, 30, 37, 35, 34, 38, 17, - 30, 17, 63, 34, 96, 34, 1, 7, 17, 7, - 1, 7, 34, 2, 7, 49, 83, 37, 83, 57, - 34, 8, 37, 7, 37, 17, 52, 34, 2, 37, - 7, 37, 49, 52, 38, 34, 30, 34, 7, 62, - 7, 7, 17, 7, 34, 17, 7, 30, 116, 34, - 62, 62, 62, 8, 57, 57, 37, 7, 34, 0, - 17, 34, 8, 1, 34, -1, -1, -1, 8, 70, - 2, 57, 37, 7, 34, 63, 30, 57, 57, 37, - 62, 34, 30, 30, 62, 30, 57, 38, 30, 8, - 8, 8, 7, 23, 62, 57, 7, 7, 103, 62, - 8, 57, -1, 62, 17, 8, 7, -1, 8, 8, - 37, 34, 17, 62, 34, 8, 52, -1, 70, 62, - 49, 17, 8, 37, 63, 34, 17, 17, 7, 7, - 63, 15, 63, 57, -1, 57, 62, 34, 63, 83, - 8, 62, 15, 8, 8, -1, 62, -1, 8, 41, - 34, 7, 8, 8, 41, 62, 62, 15, 10, 8, - 58, 53, 35, 58, 8, 69, 53, 25, 57, 81, - 7, 106, 41, 8, 56, 63, 64, 8, 37, 116, - 63, 64, 63, 64, 53, 8, 63, 64, 116, 63, - 64, 63, 64, 58, 62, 37, 63, 64, 62, 70, - 63, 64, 62, 58, 106, 57, 63, 64, 56, 58, - 63, 64, 106, 6, 58, 97, 63, 64, 63, 64, - 63, 64, 57, 8, 57, 32, 8, 20, 8, 114, - 115, 62, 8, 8, 114, 115, 107, 15, 116, 62, - 8, 63, 64, 63, 64, 63, 64, 25, 8, 97, - 25, 63, 64, 63, 64, 63, 64, 116, 8, 96, - 41, 15, 58, 8, 63, 64, 43, 8, 34, 7, - 12, 25, 53, 30, 116, 57, 0, 62, 55, 30, - 12, 57, 62, 30, -1, 5, 7, 30, 37, 57, - 10, 26, 8, 28, 7, 0, -1, 30, 8, 65, - 48, 7, 62, 99, 39, 63, 64, 30, 58, 57, - 117, 30, 8, 58, 63, 64, 57, 59, 7, 22, - 23, 69, 79, 65, 12, 63, 64, 59, 79, 63, - 64, 37, 79, 65, 8, 92, 79, 57, 7, 30, - 30, 92, 63, 64, 15, 92, 79, 63, 64, 92, - 63, 64, 7, 63, 64, 30, 79, -1, 116, 92, - 79, 95, 17, 8, 35, 34, 37, 8, -1, 92, - -1, 59, 17, 92, 63, 64, 17, 65, 18, 19, - 50, 105, 37, 15, 18, 19, 22, 23, 79, 79, - 114, 15, -1, 63, 64, 18, 19, 18, 19, 102, - 105, 92, 92, 35, 79, -1, 46, 47, -1, 114, - -1, 35, 46, 47, 15, 111, 112, 92, 63, -1, - 15, -1, 63, 46, 47, 46, 47, 15, 26, -1, - 28, -1, -1, -1, 35, -1, 37, 111, 112, -1, - 35, 39, 37, 15, -1, -1, 116, 35, -1, 37, - 15, -1, 88, 89, 121, 122, 123, 124, 125, 126, - -1, 130, 34, 35, -1, 37, 102, 24, 25, 34, - 35, -1, 37, -1, -1, -1, 33, 109, 110, 36, - -1, 38, 24, 25, -1, 109, 110, -1, -1, 24, - 25, 33, -1, -1, 36, -1, 38, 32, 33, -1, - -1, 36, -1, 38, 24, 25, 30, 10, 109, 110, - -1, -1, 32, 33, 109, 110, 36, -1, 38, 22, - 23, 109, 110, -1, 30, -1, -1, -1, -1, 10, - -1, 34, -1, -1, -1, -1, 15, 109, 110, -1, - -1, -1, -1, -1, 109, 110, 70, 71, 72, 30, - -1, -1, -1, -1, -1, -1, 35, -1, 37, 116, - 15, -1, 65, -1, 70, 71, 72, -1, -1, -1, - -1, -1, -1, -1, 116, 30, 79, 15, -1, -1, - -1, 116, 106, 107, 108, 88, 89, -1, -1, 70, - 71, 72, 30, 117, 118, 119, 116, -1, -1, 102, - 106, 107, 108, -1, -1, -1, 130, -1, -1, -1, - -1, 117, 118, 119, -1, 70, 71, 72, -1, -1, - -1, -1, -1, -1, 130, 106, 107, 108, -1, -1, - 109, 110, 70, 71, 72, -1, 117, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, - -1, 106, 107, 108, -1, 30, -1, -1, -1, -1, - -1, -1, 117, 118, 119, -1, -1, -1, 106, 107, - 108, -1, -1, -1, -1, 130, -1, -1, -1, 117, - 118, 119, -1, -1, -1, -1, -1, -1, 70, 71, - 72, -1, 130, -1, -1, 70, 71, 72, -1, 30, - -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 104, -1, 106, 107, 108, -1, -1, -1, - -1, 106, 107, 108, 116, 117, 118, 119, -1, 70, - 71, 72, 117, 118, 119, 70, 71, 72, 130, 30, - -1, -1, -1, -1, 79, 130, -1, -1, -1, 15, - -1, -1, -1, -1, -1, -1, -1, 92, 30, -1, - -1, -1, -1, 104, 30, 106, 107, 108, -1, -1, - -1, 106, 107, 108, -1, 116, 117, 118, 119, 70, - 71, 72, 117, 118, 119, -1, -1, -1, 79, 130, - -1, -1, -1, -1, -1, 130, -1, -1, 70, 71, - 72, 92, -1, -1, 70, 71, 72, -1, -1, -1, - -1, -1, -1, -1, 30, 106, 107, 108, -1, -1, - -1, 37, -1, -1, -1, -1, 117, 118, 119, -1, - -1, -1, 104, -1, 106, 107, 108, -1, -1, 130, - 106, 107, 108, 30, 116, 117, 118, 119, -1, -1, - 37, 117, 118, 119, 70, 71, 72, -1, 130, -1, - -1, -1, -1, -1, 130, -1, -1, -1, 30, -1, + 57, 17, 34, 7, 62, 7, 34, 62, 57, 1, + 37, 37, 62, 7, 34, 57, 57, 34, 7, 0, + 8, 16, 62, 37, 107, 50, 38, 83, 38, 34, + 15, 5, 5, 34, 57, 0, 5, 37, 57, 7, + 30, 1, 96, 117, 57, 104, 49, 34, 20, 83, + 17, 37, 34, 37, 37, 17, 62, 37, 34, 7, + 57, 57, 7, 34, 34, 96, 8, 7, 34, 62, + 17, 62, 8, 37, 52, 96, 17, 2, 37, 37, + 57, 34, 57, 62, 34, 7, 2, 30, 34, 1, + 34, 52, 15, 7, 15, 30, 7, 17, 37, 17, + 63, 30, 8, 8, 17, 57, 117, 62, 62, 7, + 7, 62, 7, 70, 7, 34, 2, 49, 52, 7, + 30, 38, 7, 30, 62, 34, 34, 83, 17, 62, + 17, 62, 62, 70, 62, 62, 38, 63, 34, 7, + 7, 7, 57, 37, 34, 37, 49, 8, 17, 8, + 34, 34, 8, 57, 7, 104, 57, 34, 57, 37, + 34, 0, 62, 35, 2, 23, 8, 17, 8, 34, + 7, 62, 17, 8, 8, -1, 8, 57, 38, 52, + 62, 57, 30, 62, 17, 66, 57, 62, 34, 30, + 34, 48, 7, 117, 48, 7, 7, 7, 62, 62, + 70, 63, 1, 17, 7, 7, 37, 8, 57, 37, + 34, 63, 34, 8, 69, 8, 63, 8, 8, 17, + 63, 17, 8, 8, 7, 32, 62, 57, 49, 8, + 8, 57, 8, 62, 15, 58, 7, -1, 8, 58, + 7, -1, 8, 43, 8, 63, 64, 63, 64, 58, + 63, 64, 15, 34, 81, 55, 107, 63, 64, 63, + 64, 25, 25, 83, 56, 8, 37, 57, 41, 63, + 64, 96, 57, 8, 63, 64, 62, 34, 8, 57, + 53, 41, 58, 62, 37, 41, 70, 57, 63, 64, + 8, 100, 37, 53, 63, 64, 62, 53, 63, 64, + 8, 63, 64, 30, 8, 97, 8, 8, 65, 63, + 64, 118, 63, 64, 63, 64, 56, 63, 64, 62, + 8, 7, 8, 58, 108, 6, 8, 10, 58, 96, + 63, 64, 41, 8, 117, 115, 116, 15, 8, 20, + 58, 63, 64, 8, 53, 30, 0, 25, 63, 64, + 58, 63, 64, 15, 58, 7, 7, 97, 63, 64, + 62, 62, 22, 23, 117, 115, 116, 8, 7, 57, + 0, 30, 117, 35, 57, 30, 58, 26, 17, 28, + 48, 12, 34, 58, 63, 64, 8, 30, 8, 57, + 39, 26, 62, 28, 79, 5, 8, 62, 37, 37, + 10, 69, 7, 12, 39, 17, 7, 92, 15, -1, + 63, 64, 63, 64, 7, 30, 30, -1, 25, 30, + 79, -1, 63, 64, 79, 63, 64, -1, 59, -1, + -1, 8, -1, 92, 65, 30, 79, 92, 117, 30, + 17, -1, 95, 103, 26, 30, 28, 57, -1, 92, + 59, 63, 106, 15, 15, 12, 65, 39, 63, 64, + -1, 115, 63, 64, 79, 79, -1, 26, 79, 28, + 63, 64, -1, 35, 35, 37, 106, 92, 92, 131, + 39, 92, 18, 19, 79, 115, 63, 26, 79, 28, + 112, 113, 112, 113, 79, 18, 19, 92, 15, 50, + 39, 92, 59, 18, 19, 18, 19, 92, 65, -1, + 46, 47, 63, 64, -1, -1, -1, -1, 35, 22, + 23, -1, -1, 46, 47, 15, -1, -1, 8, -1, + -1, 46, 47, 46, 47, -1, 15, 98, 122, 123, + 124, 125, 126, 127, -1, 35, -1, 37, -1, 110, + 111, 15, -1, -1, 15, -1, 35, -1, 37, -1, + -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, + 15, 35, -1, 37, 35, -1, 37, 15, -1, -1, + -1, 98, -1, 63, 64, 88, 89, -1, -1, 34, + 35, -1, 37, 110, 111, -1, 34, 35, -1, 37, + 103, 24, 25, -1, -1, -1, -1, -1, 98, 32, + 33, -1, -1, 36, -1, 38, 24, 25, -1, 98, + 110, 111, -1, -1, 32, 33, -1, 10, 36, -1, + 38, 110, 111, -1, 98, 30, -1, 98, 30, 22, + 23, -1, -1, -1, -1, -1, 110, 111, -1, 110, + 111, 34, -1, 98, -1, 24, 25, -1, -1, -1, + 98, -1, -1, -1, 33, 110, 111, 36, -1, 38, + 10, -1, 110, 111, -1, 70, 71, 72, 70, 71, + 72, -1, 65, -1, -1, -1, -1, -1, -1, -1, + 30, -1, -1, 30, 117, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, -1, -1, 117, + 30, -1, 107, 108, 109, 107, 108, 109, -1, -1, + 103, -1, -1, 118, 119, 120, 118, 119, 120, -1, + 70, 71, 72, 70, 71, 72, 131, -1, -1, 131, + -1, -1, -1, -1, -1, -1, 15, -1, 117, -1, + 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, + -1, 30, -1, -1, -1, -1, 30, 107, 108, 109, + 107, 108, 109, -1, -1, -1, -1, -1, 118, 119, + 120, 118, 119, 120, -1, -1, 30, 107, 108, 109, + -1, 30, -1, -1, 131, -1, -1, -1, 118, 119, + 120, 70, 71, 72, -1, -1, 70, 71, 72, -1, + -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, 72, -1, + -1, 70, 71, 72, -1, -1, -1, -1, 107, 108, + 109, -1, 30, 107, 108, 109, -1, -1, -1, 118, + 119, 120, -1, -1, 118, 119, 120, -1, -1, -1, + 30, 105, 131, 107, 108, 109, 105, 131, 107, 108, + 109, 15, -1, 117, 118, 119, 120, -1, 117, 118, + 119, 120, 70, 71, 72, -1, 30, 131, -1, -1, + -1, 79, 131, 30, -1, -1, -1, -1, -1, -1, + 70, 71, 72, -1, 92, -1, -1, -1, -1, 79, + -1, 30, -1, -1, -1, -1, -1, -1, 37, 107, + 108, 109, 92, -1, -1, -1, 70, 71, 72, -1, + 118, 119, 120, 70, 71, 72, -1, 107, 108, 109, + -1, -1, -1, 131, -1, -1, -1, -1, 118, 119, + 120, 70, 71, 72, -1, -1, -1, -1, -1, -1, + -1, 131, 30, 107, 108, 109, -1, 104, 105, 37, + 107, 108, 109, -1, 118, 119, 120, -1, -1, -1, + 117, 118, 119, 120, -1, -1, 105, 131, 107, 108, + 109, 30, -1, -1, 131, -1, -1, -1, 117, 118, + 119, 120, 70, 71, 72, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 30, -1, -1, -1, + -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, + -1, 70, 71, 72, -1, -1, -1, 105, -1, 107, + 108, 109, -1, -1, -1, -1, -1, -1, -1, 117, + 118, 119, 120, -1, -1, -1, 70, 71, 72, -1, + -1, -1, 3, 131, -1, -1, 105, 30, 107, 108, + 109, -1, 13, -1, 37, -1, 17, -1, 117, 118, + 119, 120, -1, -1, -1, -1, 27, -1, 29, -1, + -1, 105, 131, 107, 108, 109, 30, -1, -1, 40, + -1, 42, 43, 117, 118, 119, 120, 70, 71, 72, + 51, -1, -1, 54, 55, -1, -1, 131, -1, 60, + -1, -1, -1, -1, -1, 30, 67, 68, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, 72, -1, + -1, -1, 105, 84, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, 117, 118, 119, 120, 63, 64, + -1, -1, -1, -1, -1, 70, 71, 72, 131, -1, + 104, 105, -1, 107, 108, 109, 30, -1, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, 30, -1, -1, 131, 34, 35, + 105, 30, 107, 108, 109, 34, 35, -1, -1, 63, + 64, -1, 117, 118, 119, 120, 70, 71, 72, -1, + -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, + -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, + -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, + -1, 105, -1, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, 105, + -1, 107, 108, 109, -1, -1, 105, 131, 107, 108, + 109, 117, 118, 119, 120, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, 131, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 3, 30, -1, -1, + -1, 34, 35, -1, -1, -1, 13, -1, -1, -1, + 17, -1, -1, -1, -1, 30, -1, -1, -1, 34, + 27, -1, 29, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 40, -1, 42, 43, 70, 71, 72, + -1, -1, -1, -1, 51, -1, -1, 54, 55, -1, + 65, -1, -1, 60, 69, 70, 71, 72, -1, -1, + 67, 68, -1, -1, -1, -1, -1, 100, -1, -1, + -1, -1, 105, -1, 107, 108, 109, 84, -1, -1, + -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, + 105, -1, 107, 108, 109, -1, -1, 3, 131, -1, + -1, -1, 117, 118, 119, 120, -1, 13, -1, -1, + -1, 17, -1, -1, -1, -1, 131, -1, -1, -1, + -1, 27, -1, 29, -1, -1, 32, -1, 30, -1, + -1, -1, 34, 35, 40, -1, 42, 43, -1, -1, + -1, -1, -1, -1, -1, 51, -1, -1, 54, 55, + -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, + -1, 67, 68, -1, -1, -1, -1, -1, 70, 71, + 72, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, -1, -1, 104, -1, - 106, 107, 108, -1, -1, -1, -1, 30, -1, -1, - 116, 117, 118, 119, 37, -1, -1, -1, 70, 71, - 72, -1, -1, -1, 130, -1, -1, 104, 30, 106, - 107, 108, -1, -1, -1, 37, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, 70, 71, 72, - -1, -1, 104, 130, 106, 107, 108, 30, -1, -1, - -1, 34, 35, -1, 116, 117, 118, 119, 70, 71, - 72, -1, -1, -1, -1, -1, -1, -1, 130, -1, - -1, 104, 30, 106, 107, 108, -1, -1, -1, -1, - -1, -1, -1, 116, 117, 118, 119, 70, 71, 72, - -1, -1, 104, -1, 106, 107, 108, 130, -1, -1, - -1, -1, -1, -1, 116, 117, 118, 119, -1, -1, - -1, -1, 70, 71, 72, -1, -1, -1, 130, -1, - -1, 104, -1, 106, 107, 108, -1, 3, -1, -1, - -1, -1, -1, 116, 117, 118, 119, 13, -1, -1, - -1, 17, -1, -1, -1, 103, 104, 130, 106, 107, - 108, 27, -1, 29, -1, -1, -1, -1, 116, 117, - 118, 119, -1, -1, 40, -1, 42, 43, -1, 30, - -1, -1, 130, 34, 35, 51, 30, -1, 54, 55, - 34, 35, -1, -1, 60, -1, -1, -1, -1, -1, - -1, 67, 68, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 84, 70, - 71, 72, -1, -1, -1, -1, 70, 71, 72, -1, - -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 104, -1, 106, 107, 108, -1, -1, - 104, -1, 106, 107, 108, 116, 117, 118, 119, 63, - 64, -1, 116, 117, 118, 119, 70, 71, 72, 130, - -1, -1, -1, -1, -1, -1, 130, -1, -1, -1, - 30, -1, -1, -1, 34, 35, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, - 104, -1, 106, 107, 108, -1, -1, -1, -1, -1, - -1, -1, 116, 117, 118, 119, -1, -1, -1, -1, - 70, 71, 72, -1, -1, -1, 130, -1, -1, -1, - -1, -1, 63, 64, -1, -1, -1, -1, -1, 70, - 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 104, -1, 106, 107, 108, -1, - -1, -1, -1, -1, -1, -1, 116, 117, 118, 119, - -1, -1, -1, 104, -1, 106, 107, 108, -1, -1, - 130, -1, -1, -1, 3, 116, 117, 118, 119, -1, - -1, -1, -1, -1, 13, -1, -1, 30, 17, 130, - -1, 34, 35, -1, -1, -1, -1, -1, 27, -1, - 29, -1, -1, 30, -1, -1, -1, 34, 35, -1, - -1, 40, -1, 42, 43, -1, -1, -1, -1, -1, - -1, -1, 51, -1, -1, 54, 55, 70, 71, 72, - -1, 60, -1, -1, -1, -1, -1, -1, 67, 68, - -1, -1, 30, 70, 71, 72, 34, 35, -1, -1, - -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, - -1, 104, -1, 106, 107, 108, -1, -1, -1, -1, - -1, -1, 99, 116, 117, 118, 119, 104, -1, 106, - 107, 108, 70, 71, 72, -1, 3, 130, -1, 116, - 117, 118, 119, -1, -1, -1, 13, -1, -1, -1, - 17, -1, -1, 130, -1, 30, -1, -1, -1, 34, - 27, 99, 29, -1, -1, 32, 104, -1, 106, 107, - 108, -1, -1, 40, -1, 42, 43, -1, 116, 117, - 118, 119, -1, -1, 51, -1, -1, 54, 55, -1, - 65, -1, 130, 60, 69, 70, 71, 72, -1, -1, - 67, 68, -1, -1, -1, -1, -1, -1, 4, 5, - 6, -1, -1, 9, 10, 11, -1, 84, 14, -1, - 16, -1, -1, -1, 20, 21, -1, 23, -1, 104, - -1, 106, 107, 108, 30, 31, 32, 33, -1, -1, - -1, 116, 117, 118, 119, -1, -1, -1, 44, -1, - 117, -1, -1, -1, -1, 130, -1, -1, -1, 30, - -1, -1, -1, 34, 35, 61, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, - 86, 87, 88, 89, -1, 91, 92, -1, -1, 70, - 71, 72, 98, -1, -1, 101, 102, 103, 104, 105, - 106, 107, 108, -1, -1, -1, -1, -1, 114, -1, - 116, 117, 118, 119, -1, -1, -1, -1, 99, -1, - -1, -1, -1, 104, 130, 106, 107, 108, -1, -1, - -1, -1, -1, -1, -1, 116, 117, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, + -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, + -1, -1, -1, 105, -1, 107, 108, 109, -1, -1, + -1, -1, 118, -1, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, @@ -1709,10 +1706,47 @@ const short QmlJSGrammar::action_check [] = { 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, 101, 102, -1, 104, -1, 106, 107, 108, - 109, 110, -1, -1, -1, -1, -1, 116, 117, 118, - 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 130, -1, -1, -1, 12, 13, -1, -1, -1, + -1, -1, -1, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, + -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, + -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, + -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, + 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, -1, -1, -1, 102, 103, -1, 105, + -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 131, -1, -1, -1, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, + -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, + -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, + -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 85, 86, 87, -1, -1, -1, -1, 92, + 93, -1, -1, -1, -1, -1, -1, -1, -1, 102, + 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, + -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, + 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, + -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, + 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, + 90, -1, -1, 93, -1, -1, -1, -1, -1, -1, + -1, -1, 102, 103, -1, 105, -1, 107, 108, 109, + 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, + 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 131, -1, -1, -1, 12, 13, -1, 15, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, @@ -1721,108 +1755,72 @@ const short QmlJSGrammar::action_check [] = { -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 12, 13, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, - -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, - 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, - -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 12, 13, + -1, 15, -1, -1, -1, -1, -1, -1, 22, 23, + -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, + 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, + 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, + -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, + 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, + -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, + -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, + -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, + -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 85, 86, 87, -1, -1, -1, -1, 92, 93, -1, - -1, -1, -1, -1, -1, -1, 101, 102, -1, 104, - -1, 106, 107, 108, 109, 110, -1, -1, -1, -1, - -1, 116, 117, 118, 119, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 130, -1, -1, -1, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, - -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, - -1, 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, - -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 85, 86, 87, -1, -1, 90, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, 101, 102, - -1, 104, -1, 106, 107, 108, 109, 110, -1, -1, - -1, -1, -1, 116, 117, 118, 119, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 130, -1, -1, - -1, 12, 13, -1, 15, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, - -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, - -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, - 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - 101, 102, -1, 104, -1, 106, 107, 108, 109, 110, - -1, -1, -1, -1, -1, 116, 117, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, - -1, -1, -1, 12, 13, -1, 15, -1, -1, -1, + 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, + 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, + -1, 90, -1, -1, 93, -1, -1, -1, -1, -1, + 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 10, -1, 12, 13, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, + 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, + 44, -1, -1, -1, 48, -1, -1, -1, -1, -1, + -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, + 74, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, 85, 86, 87, -1, -1, 90, -1, -1, 93, + -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, + -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, + -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, 101, 102, -1, 104, -1, 106, 107, 108, - 109, 110, -1, -1, -1, -1, -1, 116, 117, 118, - 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 130, -1, -1, -1, 10, -1, 12, 13, -1, + 79, -1, -1, -1, -1, -1, 85, 86, 87, -1, + -1, 90, -1, -1, 93, -1, -1, -1, -1, -1, + 99, -1, -1, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, - 35, -1, 37, -1, -1, -1, -1, -1, -1, 44, - -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, + 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, + 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, - -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, - 85, 86, 87, -1, -1, 90, -1, -1, 93, -1, - -1, -1, -1, 98, -1, -1, 101, 102, -1, 104, - -1, 106, 107, 108, 109, 110, -1, -1, -1, -1, - -1, 116, 117, 118, 119, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 130, -1, -1, -1, 10, - -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, - -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, - -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, - -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, - 71, 72, -1, 74, -1, -1, -1, -1, 79, -1, - -1, -1, -1, -1, 85, 86, 87, -1, -1, 90, - -1, -1, 93, -1, -1, -1, -1, 98, -1, -1, - 101, 102, -1, 104, -1, 106, 107, 108, 109, 110, - -1, -1, -1, -1, -1, 116, 117, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, - -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, - -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, - 37, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 69, 70, 71, 72, -1, 74, -1, -1, - -1, -1, 79, -1, -1, -1, -1, -1, 85, 86, - 87, -1, -1, 90, -1, -1, 93, -1, -1, -1, - -1, 98, -1, -1, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 11, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, - 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, - 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, - -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, - 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, - -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, - -1, -1, -1, -1, -1, -1, -1, 101, 102, -1, - 104, -1, 106, 107, 108, 109, 110, -1, -1, -1, - -1, -1, 116, 117, 118, 119, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 130, -1, -1, -1, + -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, + 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, 102, 103, -1, + 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, + -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, @@ -1831,109 +1829,60 @@ const short QmlJSGrammar::action_check [] = { -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, 104, -1, 106, 107, 108, 109, 110, - -1, -1, -1, -1, -1, 116, 117, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, - -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, - -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, - -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, - -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, - 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, + -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, + 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, + 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, - 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, - -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, 100, 101, 102, -1, 104, -1, 106, 107, - 108, 109, 110, -1, -1, -1, -1, -1, 116, 117, - 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 130, -1, -1, -1, 11, 12, 13, -1, - -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, - -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, - 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, - 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, - 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, - -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, - 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, 99, 100, 101, 102, -1, 104, - -1, 106, 107, 108, 109, 110, -1, -1, -1, -1, - -1, 116, 117, 118, 119, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 130, -1, -1, -1, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, - -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, - -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, - -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, - 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, - -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, - -1, 93, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, 104, -1, 106, 107, 108, 109, 110, -1, - -1, -1, -1, -1, 116, 117, 118, 119, -1, -1, - -1, -1, -1, -1, -1, -1, 128, -1, 130, -1, - -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, - -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, + 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, + 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, + -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, - -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - 99, 100, 101, 102, -1, 104, -1, 106, 107, 108, - 109, 110, -1, -1, -1, -1, -1, 116, 117, 118, - 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 130, -1, -1, -1, 8, -1, -1, 11, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, - 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, - -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, - 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, - 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, - -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, - -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, 104, -1, 106, 107, 108, 109, 110, -1, -1, - -1, -1, -1, 116, 117, 118, 119, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 130, -1, -1, + -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, + -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, + 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 65, -1, -1, -1, 69, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, 104, -1, 106, 107, 108, 109, - 110, -1, -1, -1, -1, -1, 116, 117, 118, 119, + -1, 101, 102, 103, -1, 105, -1, 107, 108, 109, + 110, 111, -1, -1, -1, -1, -1, 117, 118, 119, + 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, + -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, + -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, + -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 130, -1, -1, -1, 8, -1, -1, 11, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, - -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, - 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, - 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, - -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, - 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, - -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, - -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, - 104, -1, 106, 107, 108, 109, 110, -1, -1, -1, - -1, -1, 116, 117, 118, 119, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 130, -1, -1, -1, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, - -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, - 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, - -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 65, -1, -1, -1, 69, 70, - 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, - -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, 104, -1, 106, 107, 108, 109, 110, - -1, -1, -1, -1, -1, 116, 117, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, + -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, + 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, + 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, -1, 100, 101, 102, 103, -1, 105, + -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, + -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, + -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, + -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 65, -1, -1, -1, 69, 70, 71, + 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, + -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, + -1, 93, -1, -1, -1, -1, -1, -1, -1, 101, + 102, 103, -1, 105, -1, 107, 108, 109, 110, 111, + -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, @@ -1943,10 +1892,60 @@ const short QmlJSGrammar::action_check [] = { -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, 99, 100, 101, 102, -1, 104, -1, 106, 107, - 108, 109, 110, -1, -1, -1, -1, -1, 116, 117, - 118, 119, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 130, -1, -1, -1, 11, 12, 13, -1, + -1, -1, -1, 101, 102, 103, -1, 105, -1, 107, + 108, 109, 110, 111, -1, -1, -1, -1, -1, 117, + 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, + 128, -1, -1, 131, -1, -1, -1, 11, 12, 13, + -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, + -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, + 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, + 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, + -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 69, 70, 71, 72, -1, + 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, + -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, + -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, 129, -1, 131, -1, -1, + -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, + 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, + -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, + -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, + 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, + -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, + 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, + 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, + -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, + -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, + 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, + 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, + -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, + -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, + -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, + -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, + -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, + -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + 129, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, @@ -1955,123 +1954,124 @@ const short QmlJSGrammar::action_check [] = { -1, -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, 100, 101, 102, -1, 104, - -1, 106, 107, 108, 109, 110, -1, -1, -1, -1, - -1, 116, 117, 118, 119, -1, -1, -1, -1, -1, - -1, -1, 127, -1, -1, 130, -1, -1, -1, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, - -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, - -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, - -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, - 72, -1, 74, -1, 76, -1, 78, -1, 80, -1, - -1, -1, -1, 85, 86, 87, -1, -1, -1, -1, - -1, 93, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, 104, -1, 106, 107, 108, 109, 110, -1, - -1, -1, -1, -1, 116, 117, 118, 119, -1, -1, - -1, -1, -1, -1, -1, -1, 128, -1, 130, -1, - -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, - -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, - -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, - -1, -1, -1, -1, 53, -1, 55, -1, -1, 58, + -1, -1, -1, -1, -1, 100, 101, 102, 103, -1, + 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, + -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, + -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, + 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, + -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 65, -1, -1, -1, 69, 70, + 71, 72, -1, 74, -1, 76, -1, 78, -1, 80, + -1, -1, -1, -1, 85, 86, 87, -1, -1, -1, + -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, + 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, + 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, - -1, 80, -1, -1, -1, -1, 85, 86, 87, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - 99, 100, 101, 102, -1, 104, -1, 106, 107, 108, - 109, 110, -1, -1, -1, -1, -1, 116, 117, 118, - 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 130, -1, -1, -1, 11, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, - -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, - -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, - -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, - -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, - -1, -1, -1, 69, 70, 71, 72, -1, 74, -1, - 76, -1, 78, -1, 80, -1, -1, -1, -1, 85, - 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, -1, 99, 100, 101, 102, -1, 104, -1, - 106, 107, 108, 109, 110, -1, -1, -1, -1, -1, - 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 130, -1, -1, -1, 11, 12, + 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, + 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, + -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, + -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 69, 70, 71, 72, -1, 74, -1, 76, + -1, 78, -1, 80, -1, -1, -1, -1, 85, 86, + 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, 100, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, -1, -1, - 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, + 53, -1, 55, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, - -1, 74, -1, 76, -1, 78, 79, 80, -1, -1, - -1, -1, 85, 86, 87, 88, 89, -1, -1, -1, + -1, 74, -1, 76, -1, 78, -1, 80, -1, -1, + -1, -1, 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, 104, -1, 106, 107, 108, 109, 110, -1, -1, - -1, -1, -1, 116, 117, 118, 119, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 130, -1, -1, - -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, 22, 23, -1, -1, -1, -1, -1, -1, - 30, 31, -1, -1, 34, 35, -1, 37, -1, -1, - -1, 41, -1, 43, 44, 45, -1, -1, 48, -1, - -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, - -1, -1, -1, 63, -1, -1, -1, -1, -1, 69, - 70, 71, 72, 73, 74, -1, 76, 77, 78, -1, - 80, -1, 82, -1, -1, 85, 86, 87, -1, -1, - -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, 104, -1, 106, 107, 108, 109, - 110, -1, -1, -1, -1, -1, 116, 117, 118, 119, - -1, -1, -1, -1, -1, -1, -1, 127, 128, -1, - 130, -1, -1, -1, 11, 12, 13, -1, -1, -1, - -1, -1, -1, -1, -1, 22, 23, -1, -1, -1, - -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, - -1, -1, 69, 70, 71, 72, 73, 74, -1, 76, - 77, 78, -1, 80, -1, 82, -1, -1, 85, 86, - 87, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - 127, 128, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, + 103, -1, 105, -1, 107, 108, 109, 110, 111, -1, + -1, -1, -1, -1, 117, 118, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, + -1, -1, -1, 22, 23, -1, -1, -1, -1, -1, + -1, 30, -1, -1, -1, 34, 35, -1, 37, -1, + -1, -1, 41, -1, 43, 44, 45, -1, -1, 48, + -1, -1, -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, + 69, 70, 71, 72, -1, 74, -1, 76, -1, 78, + 79, 80, -1, -1, -1, -1, 85, 86, 87, 88, + 89, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, 101, 102, 103, -1, 105, -1, 107, 108, + 109, 110, 111, -1, -1, -1, -1, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 11, 12, 13, -1, + -1, -1, -1, -1, -1, -1, -1, 22, 23, -1, + -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, + 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, + 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, + 55, -1, -1, -1, -1, -1, -1, -1, 63, -1, + -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, + -1, 76, 77, 78, -1, 80, -1, 82, -1, -1, + 85, 86, 87, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, + 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, + -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, 128, 129, -1, 131, -1, -1, -1, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, 22, 23, -1, -1, -1, -1, -1, -1, 30, + 31, -1, -1, 34, 35, -1, 37, -1, -1, -1, + 41, -1, 43, 44, 45, -1, -1, 48, -1, -1, + -1, -1, 53, -1, 55, -1, -1, -1, -1, -1, + -1, -1, 63, -1, -1, -1, -1, -1, 69, 70, + 71, 72, 73, 74, -1, 76, 77, 78, -1, 80, + -1, 82, -1, -1, 85, 86, 87, -1, -1, -1, + -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, + 101, 102, 103, -1, 105, -1, 107, 108, 109, 110, + 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, + -1, -1, -1, -1, -1, -1, -1, 128, 129, -1, + 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, + 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, + 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, + 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, + 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, + -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, + 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, + 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, + -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, + -1, 30, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, + -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, + 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, + 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, + 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, + -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, + -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, + -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, + -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, + -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, + 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, + 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, + -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, + 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, + 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, @@ -2081,127 +2081,128 @@ const short QmlJSGrammar::action_check [] = { -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, + -1, -1, 99, -1, -1, 102, 103, 104, 105, 106, + 107, 108, 109, -1, -1, -1, -1, -1, 115, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 131, -1, -1, -1, 4, 5, + 6, -1, -1, 9, 10, 11, -1, -1, 14, -1, + 16, -1, -1, -1, 20, 21, -1, 23, -1, -1, + -1, -1, -1, -1, 30, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 61, -1, -1, -1, 65, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 61, -1, 63, -1, 65, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, 61, -1, -1, -1, 65, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, -1, 35, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, - 57, -1, -1, -1, 61, -1, -1, -1, 65, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, -1, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, - -1, 98, -1, -1, 101, 102, 103, 104, 105, 106, - 107, 108, -1, -1, -1, -1, -1, 114, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, -1, -1, -1, 4, -1, -1, - -1, -1, 9, -1, 11, 12, 13, 14, -1, -1, - -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, - -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, -1, -1, -1, 91, -1, 93, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - -1, 128, -1, 130, -1, -1, -1, 4, -1, -1, - -1, -1, 9, -1, 11, 12, 13, 14, -1, -1, - -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, - -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, -1, -1, -1, 91, -1, 93, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - 127, 128, -1, 130, -1, -1, -1, 4, -1, -1, - -1, -1, 9, -1, 11, 12, 13, 14, -1, -1, - -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, - -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, - 37, -1, -1, -1, 41, -1, 43, 44, 45, -1, - -1, 48, -1, -1, -1, -1, 53, -1, 55, -1, - -1, -1, -1, -1, 61, -1, 63, -1, -1, -1, - -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, - 87, -1, -1, -1, 91, -1, 93, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - 127, 128, -1, 130, -1, -1, -1, 4, -1, -1, + -1, 57, -1, -1, -1, 61, -1, -1, -1, -1, + -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, + -1, 77, 78, 79, 80, 81, 82, -1, -1, 85, + 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, + -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, + 106, 107, 108, 109, -1, -1, -1, -1, -1, 115, + -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 131, -1, -1, -1, 4, + 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, + -1, 16, -1, -1, -1, 20, 21, -1, 23, -1, + -1, -1, -1, -1, -1, 30, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 57, -1, -1, -1, 61, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, -1, 77, 78, 79, 80, 81, 82, -1, -1, + 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, + -1, -1, -1, -1, 99, -1, -1, 102, 103, 104, + 105, 106, 107, 108, 109, -1, -1, -1, -1, -1, + 115, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, + 4, 5, 6, -1, -1, 9, 10, 11, -1, -1, + 14, -1, 16, -1, -1, -1, 20, 21, -1, 23, + -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, + -1, 35, -1, 37, -1, -1, -1, -1, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, + 74, 75, -1, 77, 78, 79, 80, 81, 82, -1, + -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, + -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, + 104, 105, 106, 107, 108, 109, -1, -1, -1, -1, + -1, 115, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, + -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, + -1, 14, -1, 16, -1, -1, -1, 20, 21, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, -1, 35, -1, 37, -1, -1, -1, -1, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, -1, 77, 78, 79, 80, 81, 82, + -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, + -1, -1, -1, -1, -1, -1, 99, -1, -1, 102, + 103, 104, 105, 106, 107, 108, 109, -1, -1, -1, + -1, -1, 115, -1, 117, 118, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, + -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, + -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, + -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, + 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, + -1, -1, 44, -1, -1, -1, 48, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + -1, -1, -1, -1, -1, -1, -1, 69, 70, 71, + 72, 73, 74, 75, -1, 77, 78, 79, 80, 81, + 82, -1, -1, 85, 86, 87, 88, 89, -1, 91, + 92, -1, -1, -1, -1, -1, -1, 99, -1, -1, + 102, 103, 104, 105, 106, 107, 108, 109, -1, -1, + -1, -1, -1, 115, -1, 117, 118, 119, 120, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, + -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, + 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, + 21, -1, 23, -1, -1, -1, -1, -1, -1, 30, + 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 61, -1, -1, -1, 65, -1, -1, -1, 69, 70, + 71, 72, 73, 74, 75, -1, 77, 78, 79, 80, + 81, 82, -1, -1, 85, 86, 87, 88, 89, -1, + 91, 92, -1, -1, -1, -1, -1, -1, 99, -1, + -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, + -1, -1, -1, -1, 115, -1, 117, 118, 119, 120, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 131, -1, -1, -1, 4, 5, 6, -1, -1, 9, + 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, + 20, 21, -1, 23, -1, -1, -1, -1, -1, -1, + 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, + -1, -1, -1, -1, 44, -1, -1, -1, 48, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 61, -1, 63, -1, 65, -1, -1, -1, 69, + 70, 71, 72, 73, 74, 75, -1, 77, 78, 79, + 80, 81, 82, -1, -1, 85, 86, 87, 88, 89, + -1, 91, 92, -1, -1, -1, -1, -1, -1, 99, + -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, + -1, -1, -1, -1, -1, 115, -1, 117, 118, 119, + 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 131, -1, -1, -1, 4, 5, 6, -1, -1, + 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, + -1, 20, 21, -1, 23, -1, -1, -1, -1, -1, + -1, 30, 31, 32, 33, -1, 35, -1, -1, -1, + -1, -1, -1, -1, -1, 44, -1, -1, -1, 48, + -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, + -1, -1, 61, -1, -1, -1, 65, -1, -1, -1, + 69, 70, 71, 72, 73, 74, 75, -1, 77, 78, + 79, 80, 81, 82, -1, -1, 85, 86, 87, 88, + 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, + 99, -1, -1, 102, 103, 104, 105, 106, 107, 108, + 109, -1, -1, -1, -1, -1, 115, -1, 117, 118, + 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 131, -1, -1, -1, 4, 5, 6, -1, + -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, + -1, -1, 20, 21, -1, 23, -1, -1, -1, -1, + -1, -1, 30, 31, 32, 33, -1, 35, -1, -1, + -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, + 48, -1, -1, -1, -1, -1, -1, -1, -1, 57, + -1, -1, -1, 61, -1, -1, -1, 65, -1, -1, + -1, 69, 70, 71, 72, 73, 74, 75, -1, 77, + 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, + 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, + -1, 99, -1, -1, 102, 103, 104, 105, 106, 107, + 108, 109, -1, -1, -1, -1, -1, 115, -1, 117, + 118, 119, 120, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 131, -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, 35, -1, @@ -2211,135 +2212,156 @@ const short QmlJSGrammar::action_check [] = { -1, -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, 86, 87, -1, -1, -1, 91, -1, 93, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, 104, -1, 106, - 107, 108, 109, 110, -1, -1, -1, -1, -1, 116, - 117, 118, 119, -1, -1, -1, -1, -1, -1, -1, - 127, 128, -1, 130, -1, -1, -1, + -1, -1, -1, -1, 101, 102, 103, -1, 105, -1, + 107, 108, 109, 110, 111, -1, -1, -1, -1, -1, + 117, 118, 119, 120, -1, -1, -1, -1, -1, -1, + -1, -1, 129, -1, 131, -1, -1, -1, 4, -1, + -1, -1, -1, 9, -1, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, 21, 22, 23, -1, -1, + -1, -1, -1, -1, 30, 31, -1, -1, 34, 35, + -1, 37, -1, -1, -1, 41, -1, 43, 44, 45, + -1, -1, 48, -1, -1, -1, -1, 53, -1, 55, + -1, -1, -1, -1, -1, 61, -1, 63, -1, -1, + -1, -1, -1, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, -1, -1, 85, + 86, 87, -1, -1, -1, 91, -1, 93, -1, -1, + -1, -1, -1, -1, -1, 101, 102, 103, -1, 105, + -1, 107, 108, 109, 110, 111, -1, -1, -1, -1, + -1, 117, 118, 119, 120, -1, -1, -1, -1, -1, + -1, -1, 128, 129, -1, 131, -1, -1, -1, 4, + -1, -1, -1, -1, 9, -1, 11, 12, 13, 14, + -1, -1, -1, -1, -1, -1, 21, 22, 23, -1, + -1, -1, -1, -1, -1, 30, 31, -1, -1, 34, + 35, -1, 37, -1, -1, -1, 41, -1, 43, 44, + 45, -1, -1, 48, -1, -1, -1, -1, 53, -1, + 55, -1, -1, -1, -1, -1, 61, -1, 63, -1, + -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, -1, -1, + 85, 86, 87, -1, -1, -1, 91, -1, 93, -1, + -1, -1, -1, -1, -1, -1, 101, 102, 103, -1, + 105, -1, 107, 108, 109, 110, 111, -1, -1, -1, + -1, -1, 117, 118, 119, 120, -1, -1, -1, -1, + -1, -1, -1, 128, 129, -1, 131, -1, -1, -1, + 4, -1, -1, -1, -1, 9, -1, 11, 12, 13, + 14, -1, -1, -1, -1, -1, -1, 21, 22, 23, + -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, + 34, 35, -1, 37, -1, -1, -1, 41, -1, 43, + 44, 45, -1, -1, 48, -1, -1, -1, -1, 53, + -1, 55, -1, -1, -1, -1, -1, 61, -1, 63, + -1, -1, -1, -1, -1, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, -1, + -1, 85, 86, 87, -1, -1, -1, 91, -1, 93, + -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, + -1, 105, -1, 107, 108, 109, 110, 111, -1, -1, + -1, -1, -1, 117, 118, 119, 120, -1, -1, -1, + -1, -1, -1, -1, 128, 129, -1, 131, -1, -1, + -1, - 73, 86, 206, 205, 78, 196, 206, 205, 196, 76, - 73, 71, 15, 20, 204, 198, 197, 196, 62, 196, - 198, 197, 62, 78, 78, 71, 212, 78, 212, 78, - 71, 73, 20, 15, 15, 210, 210, 209, 120, 97, - 20, 71, 78, 20, 73, 115, 43, 78, 71, 15, - 15, 78, 20, 15, 115, 15, 71, 15, 78, 14, - 24, 120, 57, 96, 86, 57, 225, 78, 62, 226, - 15, 73, 78, 15, 24, 73, 37, 15, 83, 15, - 37, 192, 15, 159, 197, 197, 62, 43, 159, 196, - 198, 186, 20, 196, 73, 205, 189, 206, 212, 73, - 96, 15, 32, 73, 210, 57, 206, 205, 71, 196, - 204, 62, 198, 197, 62, 196, 57, 76, 43, 198, - 225, 96, 197, 62, 196, 62, 20, 15, 196, 198, - 15, 197, 78, 62, 78, 36, 57, 37, 139, 196, - 62, 197, 96, 86, 209, 198, 196, 15, 15, 32, - 43, 43, 15, 198, 78, 15, 204, 62, 197, 159, - 78, 96, 96, 78, 196, 78, 73, 94, 78, 73, - 196, 62, 62, 197, 15, 15, 37, 198, 24, 95, - 78, 62, 94, 57, 86, 15, 62, 73, 32, 71, - 15, 15, 15, 43, 15, 73, 183, 2, 20, 203, - 20, 20, 20, 73, 43, 43, 2, 73, 2, 46, - 47, 46, 47, 2, 73, 73, 73, 73, 2, 2, - 53, 76, 20, 57, 58, 57, 58, 32, 15, 46, - 47, 57, 58, 32, 15, 20, 32, 32, 32, 228, - 229, 57, 58, 32, 57, 43, 57, 58, 32, 32, - 57, 57, 58, 32, 57, 57, 57, 57, 43, 2, - 32, 2, 2, 35, 57, 58, 2, 57, 58, 57, - 57, 141, 2, 32, 154, 141, 57, 11, 12, 32, - 57, 88, 141, 141, 141, 141, 89, 88, 2, 32, - 92, 32, 32, 73, 74, 57, 32, 57, 58, 57, - 78, 79, 32, 57, 92, 57, 58, 57, 58, 78, - 78, 78, 57, 57, 194, 92, -1, 78, 32, 80, - 57, 58, 57, 58, 57, 24, 181, 74, 75, 105, - 92, 78, 101, 101, 101, 57, 112, 57, 58, 57, - 58, 57, 58, -1, 88, 57, 58, 92, 57, 58, - 57, 58, 57, 58, 57, 88, 89, 57, 58, 57, - 58, 194, 161, 3, 159, 57, 58, 57, 58, 72, - 92, 57, 58, 57, 58, 57, 58, 57, 58, 57, - 58, -1, 161, 46, 47, 57, 58, 50, 57, 58, - 57, 58, 57, 58, -1, 57, 58, 57, 58, 57, - 58, 160, 105, 216, 88, 81, 81, 57, 161, 17, - 92, 211, -1, 57, -1, 81, -1, 81, -1, 57, - 57, -1, 72, 57, 58, -1, 202, 81, 72, 105, - 105, 57, 58, -1, 72, 72, 112, 112, -1, 105, - -1, 105, 57, 58, -1, 81, 112, -1, 112, 57, - -1, 105, -1, 211, -1, 105, -1, 211, 112, 74, - 195, 105, 199, -1, 72, 105, 175, 105, 105, 105, - 57, 58, 112, 57, 124, 195, 112, 195, 122, 195, - -1, 46, 57, 58, 182, 50, 51, 52, 72, 175, - 98, 128, 130, -1, -1, 195, 57, 204, 81, 57, - 58, 88, -1, 195, 209, 195, 175, 57, 58, 57, - 175, 72, 3, 175, 236, 175, 74, 175, 230, -1, - 57, 105, 105, 195, 72, 57, 202, 202, 195, 112, - 57, -1, 57, 53, 118, 72, 202, 171, 202, 32, - 72, 175, 92, 57, 105, 72, 172, 108, 202, 175, - 230, 81, 230, -1, 57, 57, 57, 105, 72, 84, - -1, 17, 202, 88, 89, 113, 202, 182, 105, 72, - 72, 72, 57, 105, 53, 105, 55, 57, 105, -1, - 112, 81, 112, 57, 58, 112, -1, 72, -1, 126, - -1, 105, 72, 180, -1, 57, 171, -1, 112, -1, - 175, 57, 105, 105, 105, 105, -1, 108, 111, 111, - 72, -1, 112, 57, 105, -1, 72, -1, -1, 202, - 105, 112, -1, 17, 182, 105, 111, -1, 72, 109, - -1, 57, 152, 27, 154, 29, -1, 17, 57, -1, - -1, 57, 98, 105, 106, 107, 72, 27, 57, 58, - -1, -1, -1, 72, 17, 57, 72, -1, 57, -1, - -1, 105, 106, 107, 27, 74, 75, -1, 161, -1, - 72, 150, 202, 72, 194, -1, 17, 57, -1, 105, - 106, 107, 232, 17, 78, 79, 105, 17, 208, 105, - 106, 107, 72, 112, 57, 57, 30, 27, 57, 173, - 119, 175, 202, 105, 106, 107, 105, 106, 107, 72, - 72, 202, -1, 72, 57, 194, 57, 57, 98, -1, - -1, 3, 57, 57, 57, -1, 57, 57, 221, 72, - -1, 72, 72, -1, -1, 98, 57, 72, 72, 72, - 17, 72, 72, 105, -1, 57, 105, 106, 107, -1, - 112, 72, 114, 30, -1, -1, 57, 98, -1, -1, - 72, 102, 105, -1, 98, 105, 106, 107, 98, 112, - 105, 72, 105, 182, 105, -1, 17, 112, 17, 112, - 57, 112, 125, 60, 105, -1, 25, -1, 27, 30, - 123, 112, 127, 105, -1, 72, -1, 109, 129, -1, - 121, 17, -1, -1, 105, 106, 107, 36, -1, 38, - 39, 40, 41, 42, 30, 17, 57, -1, 57, 60, - -1, 98, 17, 105, 26, 27, -1, -1, -1, 17, - 112, 72, -1, 72, -1, 30, -1, 4, 4, -1, - -1, 57, 30, -1, 60, -1, -1, -1, -1, -1, - 17, 17, -1, -1, -1, 57, 72, 98, -1, 98, - 55, -1, 57, 30, 30, -1, -1, -1, -1, 57, - 72, -1, 60, -1, -1, -1, -1, 72, -1, 17, - 162, 163, 98, -1, 72, -1, -1, 25, 55, 55, - 57, 57, 30, 31, -1, -1, 98, -1, -1, -1, - -1, -1, -1, 98, -1, 72, 72, -1, -1, -1, - 98, -1, -1, -1, -1, -1, -1, 55, -1, 57, - 202, -1, 17, -1, -1, -1, 17, -1, -1, 17, - -1, 98, 98, -1, 72, 30, -1, -1, -1, 30, - -1, 36, 30, 38, 39, 40, 41, 42, 36, -1, - 38, 39, 40, 41, 42, -1, -1, -1, -1, -1, - 98, -1, -1, -1, -1, -1, 57, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 30, -1, -1, -1, -1, -1, 36, -1, 38, 39, - 40, 41, 42, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 86, 204, 203, 194, 204, 203, 194, 20, 78, 15, + 202, 196, 78, 195, 76, 194, 15, 62, 196, 71, + 195, 194, 62, 20, 118, 71, 210, 210, 115, 15, + 71, 208, 208, 207, 15, 71, 14, 24, 15, 24, + 43, 20, 195, 78, 97, 57, 73, 43, 20, 73, + 15, 15, 137, 15, 15, 15, 73, 73, 115, 78, + 118, 37, 15, 71, 32, 57, 15, 96, 86, 62, + 20, 223, 15, 78, 224, 73, 43, 78, 73, 20, + 37, 201, 37, 190, 78, 194, 15, 195, 157, 157, + 196, 184, 62, 194, 196, 195, 43, 187, 73, 194, + 203, 15, 73, 208, 15, 204, 210, 24, 71, 32, + 194, 62, 204, 15, 73, 203, 15, 196, 194, 202, + 62, 196, 20, 195, 43, 223, 62, 194, 20, 62, + 194, 196, 195, 78, 78, 57, 20, 76, 78, 57, + 96, 71, 96, 78, 15, 73, 207, 73, 86, 62, + 15, 194, 202, 73, 78, 71, 83, 43, 15, 36, + 57, 37, 62, 78, 194, 15, 78, 157, 78, 78, + 195, 62, 62, 94, 32, 196, 196, 62, 24, 194, + 62, 195, 78, 86, 62, 78, 73, 94, 96, 95, + 78, 96, 96, 195, 15, 15, 15, 57, 73, 43, + 73, 15, 20, 43, 20, 57, 78, 181, 2, 2, + 73, 73, 46, 47, 2, 2, 2, 32, 2, 32, + 57, 58, 76, 78, 57, 80, 2, 2, 57, 101, + 73, 53, 57, 2, 46, 47, 2, 73, 32, 32, + 92, 73, 73, 2, 32, 32, 32, 15, 32, 57, + 58, 57, 58, 57, 58, 78, 32, 32, 32, 57, + 58, 78, 79, 32, 46, 47, 32, 57, 58, 20, + 32, 73, 74, 32, 57, 58, 139, 139, 101, 57, + 58, 15, 32, 78, 57, 57, 57, 58, 2, 57, + 57, 152, 43, 57, 57, -1, 139, 57, 11, 12, + 57, 57, 57, 139, 20, 57, 101, 139, 139, 57, + 58, 57, 32, -1, 32, 35, -1, 78, 32, 92, + 92, 57, -1, 57, -1, 179, 57, 43, 92, 92, + -1, 192, 92, 89, 78, 92, 88, 92, 57, 58, + 101, 72, 88, -1, 159, 158, 226, 227, 57, 58, + 57, 58, 88, 57, 58, 57, 58, 101, 57, 58, + 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, + 192, 15, 57, 57, 105, 105, 209, 46, 47, -1, + 209, 50, 112, 157, 209, -1, 74, 75, 92, -1, + 78, 57, 58, 88, 57, 58, -1, 159, 57, 58, + 57, 58, -1, 88, 89, 57, 58, 81, 92, 159, + 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, + 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, + 58, 105, 81, 53, -1, 55, 57, -1, 112, 57, + -1, 159, 57, 81, 57, 58, -1, 214, -1, 81, + -1, 72, 57, 58, 72, 84, 105, 72, -1, 88, + 89, 74, 57, 112, 57, 81, -1, 105, 57, 58, + 200, 173, -1, 105, 112, 81, 57, 72, -1, 72, + 112, 180, 173, 88, 105, 74, 193, 105, 3, 105, + 105, 72, -1, 57, 112, 116, 112, -1, 113, 105, + 197, 219, 57, 58, 193, 57, 112, 57, 72, -1, + 105, -1, 105, 81, 3, 108, 173, 112, 57, 228, + 72, 173, 72, 57, 105, 81, 200, 193, 148, -1, + 193, 112, -1, 72, 193, 228, 173, 105, 72, 57, + 173, 105, 173, 171, 112, 173, 193, 111, 193, 105, + 234, 200, 193, 105, 72, 105, 112, -1, 193, 202, + 57, 111, 200, 57, 58, 57, 105, 180, 200, 17, + 122, 105, 192, 178, -1, 72, 81, 111, 57, 58, + 72, 120, 17, 57, 200, -1, 57, 105, 57, 228, + 105, 180, 57, 58, 200, 57, 58, 112, 72, 57, + 105, 72, -1, 72, 57, -1, 17, 112, 105, 57, + 128, 108, 57, 105, 72, 170, 105, 109, 173, 72, + -1, -1, 57, 112, 72, 53, -1, 72, -1, 17, + 92, 105, 200, -1, 105, 109, 105, 72, -1, -1, + -1, -1, 30, 112, 200, -1, 57, 105, 117, 57, + 98, -1, 105, 106, 107, 126, 57, -1, 17, 57, + 105, 72, -1, 98, 72, 57, 124, 112, 27, 57, + 29, 72, -1, -1, 72, 169, -1, 57, 123, 173, + 72, 57, -1, -1, 72, 200, -1, 98, 17, -1, + 169, 102, 72, -1, 173, 200, 72, 105, 106, 107, + -1, 30, 57, -1, 105, 106, 107, 105, 106, 107, + 98, 200, -1, 105, 106, 107, -1, 72, 57, 78, + 79, -1, 150, -1, 152, 105, 106, 107, 57, 105, + 106, 107, 57, 72, 17, 3, 57, 58, -1, 17, + 57, -1, 207, 72, 27, 57, -1, 72, 57, 27, + 105, 106, 107, 74, 75, 72, -1, 57, -1, -1, + 72, -1, -1, 72, 192, -1, 105, -1, 230, 98, + -1, 46, 72, 112, 57, 50, 51, 52, 206, 57, + 105, -1, -1, -1, -1, -1, 125, 112, 105, 72, + -1, 17, -1, 105, 72, 112, 105, 114, 17, 25, + 112, 27, 127, 112, -1, 105, 106, 107, 17, 121, + 119, 30, -1, 4, 17, 98, -1, 26, 27, 36, + 98, 38, 39, 40, 41, 42, 17, 30, -1, 4, + 17, 57, -1, -1, -1, -1, -1, 105, 57, 30, + -1, 60, 17, 30, 112, -1, 72, -1, 57, -1, + -1, -1, 55, 72, 57, 30, -1, -1, -1, 180, + -1, -1, -1, 72, 55, -1, 57, -1, -1, 72, + 57, -1, 98, 60, -1, -1, -1, -1, -1, 98, + 55, 72, 57, -1, -1, 72, 17, -1, -1, 98, + -1, 17, 160, 161, 25, 98, -1, 72, -1, 30, + 31, -1, -1, -1, 30, -1, 17, 98, -1, -1, + 36, 98, 38, 39, 40, 41, 42, -1, -1, 30, + -1, 17, -1, 98, 55, 36, 57, 38, 39, 40, + 41, 42, 200, -1, 30, -1, -1, -1, -1, -1, + 36, 72, 38, 39, 40, 41, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 17, -1, -1, -1, -1, -1, 98, -1, -1, + -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2352,6 +2374,6 @@ const short QmlJSGrammar::action_check [] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; diff --git a/src/libs/qmljs/parser/qmljsgrammar_p.h b/src/libs/qmljs/parser/qmljsgrammar_p.h index d4c9593add..de07ea242f 100644 --- a/src/libs/qmljs/parser/qmljsgrammar_p.h +++ b/src/libs/qmljs/parser/qmljsgrammar_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -32,23 +32,23 @@ class QML_PARSER_EXPORT QmlJSGrammar public: enum VariousConstants { EOF_SYMBOL = 0, - REDUCE_HERE = 131, + REDUCE_HERE = 132, T_AND = 1, T_AND_AND = 2, T_AND_EQ = 3, T_ARROW = 96, - T_AS = 116, + T_AS = 117, T_AT = 90, T_AUTOMATIC_SEMICOLON = 64, T_BREAK = 4, T_CASE = 5, T_CATCH = 6, - T_CLASS = 102, + T_CLASS = 103, T_COLON = 7, T_COMMA = 8, T_COMMENT = 94, T_COMPATIBILITY_SEMICOLON = 95, - T_COMPONENT = 108, + T_COMPONENT = 109, T_CONST = 88, T_CONTINUE = 9, T_DEBUGGER = 91, @@ -58,32 +58,32 @@ public: T_DIVIDE_EQ = 13, T_DO = 14, T_DOT = 15, - T_ELLIPSIS = 99, + T_ELLIPSIS = 100, T_ELSE = 16, - T_ENUM = 98, + T_ENUM = 99, T_EQ = 17, T_EQ_EQ = 18, T_EQ_EQ_EQ = 19, - T_ERROR = 120, - T_EXPORT = 105, - T_EXTENDS = 103, + T_ERROR = 121, + T_EXPORT = 106, + T_EXTENDS = 104, T_FALSE = 87, - T_FEED_JS_EXPRESSION = 124, - T_FEED_JS_MODULE = 126, - T_FEED_JS_SCRIPT = 125, - T_FEED_JS_STATEMENT = 123, - T_FEED_UI_OBJECT_MEMBER = 122, - T_FEED_UI_PROGRAM = 121, + T_FEED_JS_EXPRESSION = 125, + T_FEED_JS_MODULE = 127, + T_FEED_JS_SCRIPT = 126, + T_FEED_JS_STATEMENT = 124, + T_FEED_UI_OBJECT_MEMBER = 123, + T_FEED_UI_PROGRAM = 122, T_FINALLY = 20, T_FOR = 21, - T_FORCE_BLOCK = 128, - T_FORCE_DECLARATION = 127, - T_FOR_LOOKAHEAD_OK = 129, - T_FROM = 106, + T_FORCE_BLOCK = 129, + T_FORCE_DECLARATION = 128, + T_FOR_LOOKAHEAD_OK = 130, + T_FROM = 107, T_FUNCTION = 23, T_FUNCTION_STAR = 22, T_GE = 24, - T_GET = 118, + T_GET = 119, T_GT = 25, T_GT_GT = 26, T_GT_GT_EQ = 27, @@ -91,7 +91,7 @@ public: T_GT_GT_GT_EQ = 29, T_IDENTIFIER = 30, T_IF = 31, - T_IMPORT = 114, + T_IMPORT = 115, T_IN = 32, T_INSTANCEOF = 33, T_LBRACE = 34, @@ -110,46 +110,47 @@ public: T_NOT = 45, T_NOT_EQ = 46, T_NOT_EQ_EQ = 47, - T_NO_SUBSTITUTION_TEMPLATE = 109, + T_NO_SUBSTITUTION_TEMPLATE = 110, T_NULL = 85, T_NUMERIC_LITERAL = 48, - T_OF = 117, - T_ON = 130, + T_OF = 118, + T_ON = 131, T_OR = 49, T_OR_EQ = 51, T_OR_OR = 52, T_PLUS = 53, T_PLUS_EQ = 54, T_PLUS_PLUS = 55, - T_PRAGMA = 115, + T_PRAGMA = 116, T_PROPERTY = 70, - T_PUBLIC = 113, + T_PUBLIC = 114, T_QUESTION = 56, + T_QUESTION_DOT = 98, T_QUESTION_QUESTION = 97, T_RBRACE = 57, T_RBRACKET = 58, T_READONLY = 72, T_REMAINDER = 59, T_REMAINDER_EQ = 60, - T_REQUIRED = 107, + T_REQUIRED = 108, T_RESERVED_WORD = 92, T_RETURN = 61, T_RPAREN = 62, T_SEMICOLON = 63, - T_SET = 119, + T_SET = 120, T_SIGNAL = 71, T_STAR = 65, T_STAR_EQ = 68, T_STAR_STAR = 66, T_STAR_STAR_EQ = 67, - T_STATIC = 104, + T_STATIC = 105, T_STRING_LITERAL = 69, - T_SUPER = 101, + T_SUPER = 102, T_SWITCH = 73, - T_TEMPLATE_HEAD = 110, - T_TEMPLATE_MIDDLE = 111, - T_TEMPLATE_TAIL = 112, - T_THEN = 132, + T_TEMPLATE_HEAD = 111, + T_TEMPLATE_MIDDLE = 112, + T_TEMPLATE_TAIL = 113, + T_THEN = 133, T_THIS = 74, T_THROW = 75, T_TILDE = 76, @@ -161,20 +162,20 @@ public: T_VOID = 80, T_WHILE = 81, T_WITH = 82, - T_WITHOUTAS = 133, + T_WITHOUTAS = 134, T_XOR = 83, T_XOR_EQ = 84, - T_YIELD = 100, + T_YIELD = 101, - ACCEPT_STATE = 1102, - RULE_COUNT = 619, - STATE_COUNT = 1103, - TERMINAL_COUNT = 134, - NON_TERMINAL_COUNT = 238, + ACCEPT_STATE = 1114, + RULE_COUNT = 622, + STATE_COUNT = 1115, + TERMINAL_COUNT = 135, + NON_TERMINAL_COUNT = 236, - GOTO_INDEX_OFFSET = 1103, - GOTO_INFO_OFFSET = 6857, - GOTO_CHECK_OFFSET = 6857 + GOTO_INDEX_OFFSET = 1115, + GOTO_INFO_OFFSET = 7121, + GOTO_CHECK_OFFSET = 7121 }; static const char *const spell[]; @@ -214,4 +215,3 @@ public: #endif // QMLJSGRAMMAR_P_H - diff --git a/src/libs/qmljs/parser/qmljskeywords_p.h b/src/libs/qmljs/parser/qmljskeywords_p.h index 4db12677a8..9511e64b61 100644 --- a/src/libs/qmljs/parser/qmljskeywords_p.h +++ b/src/libs/qmljs/parser/qmljskeywords_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp index b8c594f593..6c4eb70744 100644 --- a/src/libs/qmljs/parser/qmljslexer.cpp +++ b/src/libs/qmljs/parser/qmljslexer.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -43,8 +43,6 @@ Q_CORE_EXPORT double qstrntod(const char *s00, qsizetype len, char const **se, b #endif QT_END_NAMESPACE -QT_QML_BEGIN_NAMESPACE - using namespace QmlJS; static inline int regExpFlagFromChar(const QChar &ch) @@ -79,7 +77,7 @@ Lexer::Lexer(Engine *engine) , _codePtr(nullptr) , _endPtr(nullptr) , _tokenStartPtr(nullptr) - , _char(QLatin1Char('\n')) + , _char(u'\n') , _errorCode(NoError) , _currentLineNumber(0) , _currentColumnNumber(0) @@ -131,7 +129,7 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode) _endPtr = _codePtr + code.length(); _tokenStartPtr = _codePtr; - _char = QLatin1Char('\n'); + _char = u'\n'; _errorCode = NoError; _currentLineNumber = lineno; @@ -160,7 +158,7 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode) void Lexer::scanChar() { if (_skipLinefeed) { - Q_ASSERT(*_codePtr == QLatin1Char('\n')); + Q_ASSERT(*_codePtr == u'\n'); ++_codePtr; _skipLinefeed = false; } @@ -168,16 +166,24 @@ void Lexer::scanChar() ++_currentColumnNumber; if (isLineTerminator()) { - if (_char == QLatin1Char('\r')) { - if (_codePtr < _endPtr && *_codePtr == QLatin1Char('\n')) + if (_char == u'\r') { + if (_codePtr < _endPtr && *_codePtr == u'\n') _skipLinefeed = true; - _char = QLatin1Char('\n'); + _char = u'\n'; } ++_currentLineNumber; _currentColumnNumber = 0; } } +QChar Lexer::peekChar() +{ + auto peekPtr = _codePtr; + if (peekPtr < _endPtr) + return *peekPtr; + return QChar(); +} + namespace { inline bool isBinop(int tok) { @@ -225,19 +231,19 @@ inline bool isBinop(int tok) int hexDigit(QChar c) { - if (c >= QLatin1Char('0') && c <= QLatin1Char('9')) - return c.unicode() - '0'; - if (c >= QLatin1Char('a') && c <= QLatin1Char('f')) - return c.unicode() - 'a' + 10; - if (c >= QLatin1Char('A') && c <= QLatin1Char('F')) - return c.unicode() - 'A' + 10; + if (c >= u'0' && c <= u'9') + return c.unicode() - u'0'; + if (c >= u'a' && c <= u'f') + return c.unicode() - u'a' + 10; + if (c >= u'A' && c <= u'F') + return c.unicode() - u'A' + 10; return -1; } int octalDigit(QChar c) { - if (c >= QLatin1Char('0') && c <= QLatin1Char('7')) - return c.unicode() - '0'; + if (c >= u'0' && c <= u'7') + return c.unicode() - u'0'; return -1; } @@ -248,70 +254,70 @@ int Lexer::lex() const int previousTokenKind = _tokenKind; again: - _tokenSpell = QStringView(); - _rawString = QStringView(); - _tokenKind = scanToken(); - _tokenLength = _codePtr - _tokenStartPtr - 1; - - _delimited = false; - _restrictedKeyword = false; - _followsClosingBrace = (previousTokenKind == T_RBRACE); - - // update the flags - switch (_tokenKind) { - case T_LBRACE: - if (_bracesCount > 0) - ++_bracesCount; - Q_FALLTHROUGH(); - case T_SEMICOLON: - _importState = ImportState::NoQmlImport; - Q_FALLTHROUGH(); - case T_QUESTION: - case T_COLON: - case T_TILDE: - _delimited = true; - break; - case T_AUTOMATIC_SEMICOLON: - case T_AS: - _importState = ImportState::NoQmlImport; - Q_FALLTHROUGH(); - default: - if (isBinop(_tokenKind)) - _delimited = true; - break; - - case T_IMPORT: - if (qmlMode() || (_handlingDirectives && previousTokenKind == T_DOT)) - _importState = ImportState::SawImport; - if (isBinop(_tokenKind)) - _delimited = true; - break; - - case T_IF: - case T_FOR: - case T_WHILE: - case T_WITH: - _parenthesesState = CountParentheses; - _parenthesesCount = 0; - break; - - case T_ELSE: - case T_DO: - _parenthesesState = BalancedParentheses; - break; - - case T_CONTINUE: - case T_BREAK: - case T_RETURN: - case T_YIELD: - case T_THROW: - _restrictedKeyword = true; - break; - case T_RBRACE: - if (_bracesCount > 0) - --_bracesCount; - if (_bracesCount == 0) - goto again; + _tokenSpell = QStringView(); + _rawString = QStringView(); + _tokenKind = scanToken(); + _tokenLength = _codePtr - _tokenStartPtr - 1; + + _delimited = false; + _restrictedKeyword = false; + _followsClosingBrace = (previousTokenKind == T_RBRACE); + + // update the flags + switch (_tokenKind) { + case T_LBRACE: + if (_bracesCount > 0) + ++_bracesCount; + Q_FALLTHROUGH(); + case T_SEMICOLON: + _importState = ImportState::NoQmlImport; + Q_FALLTHROUGH(); + case T_QUESTION: + case T_COLON: + case T_TILDE: + _delimited = true; + break; + case T_AUTOMATIC_SEMICOLON: + case T_AS: + _importState = ImportState::NoQmlImport; + Q_FALLTHROUGH(); + default: + if (isBinop(_tokenKind)) + _delimited = true; + break; + + case T_IMPORT: + if (qmlMode() || (_handlingDirectives && previousTokenKind == T_DOT)) + _importState = ImportState::SawImport; + if (isBinop(_tokenKind)) + _delimited = true; + break; + + case T_IF: + case T_FOR: + case T_WHILE: + case T_WITH: + _parenthesesState = CountParentheses; + _parenthesesCount = 0; + break; + + case T_ELSE: + case T_DO: + _parenthesesState = BalancedParentheses; + break; + + case T_CONTINUE: + case T_BREAK: + case T_RETURN: + case T_YIELD: + case T_THROW: + _restrictedKeyword = true; + break; + case T_RBRACE: + if (_bracesCount > 0) + --_bracesCount; + if (_bracesCount == 0) + goto again; } // switch // update the parentheses state @@ -340,7 +346,7 @@ int Lexer::lex() uint Lexer::decodeUnicodeEscapeCharacter(bool *ok) { - Q_ASSERT(_char == QLatin1Char('u')); + Q_ASSERT(_char == u'u'); scanChar(); // skip u if (_codePtr + 4 <= _endPtr && isHexDigit(_char)) { uint codePoint = 0; @@ -355,7 +361,7 @@ uint Lexer::decodeUnicodeEscapeCharacter(bool *ok) *ok = true; return codePoint; - } else if (_codePtr < _endPtr && _char == QLatin1Char('{')) { + } else if (_codePtr < _endPtr && _char == u'{') { scanChar(); // skip '{' uint codePoint = 0; if (!isHexDigit(_char)) @@ -373,7 +379,7 @@ uint Lexer::decodeUnicodeEscapeCharacter(bool *ok) scanChar(); } - if (_char != QLatin1Char('}')) + if (_char != u'}') goto error; scanChar(); // skip '}' @@ -415,9 +421,9 @@ QChar Lexer::decodeHexEscapeCharacter(bool *ok) static inline bool isIdentifierStart(uint ch) { // fast path for ascii - if ((ch >= 'a' && ch <= 'z') || - (ch >= 'A' && ch <= 'Z') || - ch == '$' || ch == '_') + if ((ch >= u'a' && ch <= u'z') || + (ch >= u'A' && ch <= u'Z') || + ch == u'$' || ch == u'_') return true; switch (QChar::category(ch)) { @@ -437,10 +443,10 @@ static inline bool isIdentifierStart(uint ch) static bool isIdentifierPart(uint ch) { // fast path for ascii - if ((ch >= 'a' && ch <= 'z') || - (ch >= 'A' && ch <= 'Z') || - (ch >= '0' && ch <= '9') || - ch == '$' || ch == '_' || + if ((ch >= u'a' && ch <= u'z') || + (ch >= u'A' && ch <= u'Z') || + (ch >= u'0' && ch <= u'9') || + ch == u'$' || ch == u'_' || ch == 0x200c /* ZWNJ */ || ch == 0x200d /* ZWJ */) return true; @@ -487,12 +493,12 @@ again: // handle comment can be called after a '/' has been read // and returns true if it actually encountered a comment auto handleComment = [this](){ - if (_char == QLatin1Char('*')) { + if (_char == u'*') { scanChar(); while (_codePtr <= _endPtr) { - if (_char == QLatin1Char('*')) { + if (_char == u'*') { scanChar(); - if (_char == QLatin1Char('/')) { + if (_char == u'/') { scanChar(); if (_engine) { @@ -506,7 +512,7 @@ again: scanChar(); } } - } else if (_char == QLatin1Char('/')) { + } else if (_char == u'/') { while (_codePtr <= _endPtr && !isLineTerminator()) { scanChar(); } @@ -548,81 +554,85 @@ again: scanChar(); switch (ch.unicode()) { - case '~': return T_TILDE; - case '}': return T_RBRACE; + case u'~': return T_TILDE; + case u'}': return T_RBRACE; - case '|': - if (_char == QLatin1Char('|')) { + case u'|': + if (_char == u'|') { scanChar(); return T_OR_OR; - } else if (_char == QLatin1Char('=')) { + } else if (_char == u'=') { scanChar(); return T_OR_EQ; } return T_OR; - case '{': return T_LBRACE; + case u'{': return T_LBRACE; - case '^': - if (_char == QLatin1Char('=')) { + case u'^': + if (_char == u'=') { scanChar(); return T_XOR_EQ; } return T_XOR; - case ']': return T_RBRACKET; - case '[': return T_LBRACKET; - case '?': { - if (_char == QLatin1Char('?')) { + case u']': return T_RBRACKET; + case u'[': return T_LBRACKET; + case u'?': { + if (_char == u'?') { scanChar(); return T_QUESTION_QUESTION; } + if (_char == u'.' && !peekChar().isDigit()) { + scanChar(); + return T_QUESTION_DOT; + } return T_QUESTION; } - case '>': - if (_char == QLatin1Char('>')) { + case u'>': + if (_char == u'>') { scanChar(); - if (_char == QLatin1Char('>')) { + if (_char == u'>') { scanChar(); - if (_char == QLatin1Char('=')) { + if (_char == u'=') { scanChar(); return T_GT_GT_GT_EQ; } return T_GT_GT_GT; - } else if (_char == QLatin1Char('=')) { + } else if (_char == u'=') { scanChar(); return T_GT_GT_EQ; } return T_GT_GT; - } else if (_char == QLatin1Char('=')) { + } else if (_char == u'=') { scanChar(); return T_GE; } return T_GT; - case '=': - if (_char == QLatin1Char('=')) { + case u'=': + if (_char == u'=') { scanChar(); - if (_char == QLatin1Char('=')) { + if (_char == u'=') { scanChar(); return T_EQ_EQ_EQ; } return T_EQ_EQ; - } else if (_char == QLatin1Char('>')) { + } else if (_char == u'>') { scanChar(); return T_ARROW; } return T_EQ; - case '<': - if (_char == QLatin1Char('=')) { + case u'<': + if (_char == u'=') { scanChar(); return T_LE; - } else if (_char == QLatin1Char('<')) { + } else if (_char == u'<') { scanChar(); - if (_char == QLatin1Char('=')) { + if (_char == u'=') { scanChar(); return T_LT_LT_EQ; } @@ -630,26 +640,26 @@ again: } return T_LT; - case ';': return T_SEMICOLON; - case ':': return T_COLON; + case u';': return T_SEMICOLON; + case u':': return T_COLON; - case '/': + case u'/': if (handleComment()) goto again; - else if (_char == QLatin1Char('=')) { + else if (_char == u'=') { scanChar(); return T_DIVIDE_EQ; } return T_DIVIDE_; - case '.': + case u'.': if (_importState == ImportState::SawImport) return T_DOT; if (isDecimalDigit(_char.unicode())) return scanNumber(ch); - if (_char == QLatin1Char('.')) { + if (_char == u'.') { scanChar(); - if (_char == QLatin1Char('.')) { + if (_char == u'.') { scanChar(); return T_ELLIPSIS; } else { @@ -660,11 +670,11 @@ again: } return T_DOT; - case '-': - if (_char == QLatin1Char('=')) { + case u'-': + if (_char == u'=') { scanChar(); return T_MINUS_EQ; - } else if (_char == QLatin1Char('-')) { + } else if (_char == u'-') { scanChar(); if (_terminator && !_delimited && !_prohibitAutomaticSemicolon && _tokenKind != T_LPAREN) { @@ -676,13 +686,13 @@ again: } return T_MINUS; - case ',': return T_COMMA; + case u',': return T_COMMA; - case '+': - if (_char == QLatin1Char('=')) { + case u'+': + if (_char == u'=') { scanChar(); return T_PLUS_EQ; - } else if (_char == QLatin1Char('+')) { + } else if (_char == u'+') { scanChar(); if (_terminator && !_delimited && !_prohibitAutomaticSemicolon && _tokenKind != T_LPAREN) { @@ -694,13 +704,13 @@ again: } return T_PLUS; - case '*': - if (_char == QLatin1Char('=')) { + case u'*': + if (_char == u'=') { scanChar(); return T_STAR_EQ; - } else if (_char == QLatin1Char('*')) { + } else if (_char == u'*') { scanChar(); - if (_char == QLatin1Char('=')) { + if (_char == u'=') { scanChar(); return T_STAR_STAR_EQ; } @@ -708,32 +718,32 @@ again: } return T_STAR; - case ')': return T_RPAREN; - case '(': return T_LPAREN; + case u')': return T_RPAREN; + case u'(': return T_LPAREN; - case '@': return T_AT; + case u'@': return T_AT; - case '&': - if (_char == QLatin1Char('=')) { + case u'&': + if (_char == u'=') { scanChar(); return T_AND_EQ; - } else if (_char == QLatin1Char('&')) { + } else if (_char == u'&') { scanChar(); return T_AND_AND; } return T_AND; - case '%': - if (_char == QLatin1Char('=')) { + case u'%': + if (_char == u'=') { scanChar(); return T_REMAINDER_EQ; } return T_REMAINDER; - case '!': - if (_char == QLatin1Char('=')) { + case u'!': + if (_char == u'=') { scanChar(); - if (_char == QLatin1Char('=')) { + if (_char == u'=') { scanChar(); return T_NOT_EQ_EQ; } @@ -741,34 +751,48 @@ again: } return T_NOT; - case '`': + case u'`': _outerTemplateBraceCount.push(_bracesCount); Q_FALLTHROUGH(); - case '\'': - case '"': + case u'\'': + case u'"': return scanString(ScanStringMode(ch.unicode())); - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': + case u'0': + case u'1': + case u'2': + case u'3': + case u'4': + case u'5': + case u'6': + case u'7': + case u'8': + case u'9': if (_importState == ImportState::SawImport) return scanVersionNumber(ch); else return scanNumber(ch); + case '#': + if (_currentLineNumber == 1 && _currentColumnNumber == 2) { + // shebang support + while (_codePtr <= _endPtr && !isLineTerminator()) { + scanChar(); + } + if (_engine) { + _engine->addComment(tokenOffset(), _codePtr - _tokenStartPtr - 1, + tokenStartLine(), tokenStartColumn()); + } + goto again; + } + Q_FALLTHROUGH(); + default: { uint c = ch.unicode(); bool identifierWithEscapeChars = false; if (QChar::isHighSurrogate(c) && QChar::isLowSurrogate(_char.unicode())) { c = QChar::surrogateToUcs4(ushort(c), _char.unicode()); scanChar(); - } else if (c == '\\' && _char == QLatin1Char('u')) { + } else if (c == '\\' && _char == u'u') { identifierWithEscapeChars = true; bool ok = false; c = decodeUnicodeEscapeCharacter(&ok); @@ -791,7 +815,7 @@ again: if (QChar::isHighSurrogate(c) && QChar::isLowSurrogate(_codePtr->unicode())) { scanChar(); c = QChar::surrogateToUcs4(ushort(c), _char.unicode()); - } else if (_char == QLatin1Char('\\') && _codePtr[0] == QLatin1Char('u')) { + } else if (_char == u'\\' && _codePtr[0] == u'u') { if (!identifierWithEscapeChars) { identifierWithEscapeChars = true; _tokenText.resize(0); @@ -808,13 +832,11 @@ again: if (!isIdentifierPart(c)) break; - if (identifierWithEscapeChars) { - if (QChar::requiresSurrogates(c)) { - _tokenText += QChar(QChar::highSurrogate(c)); - _tokenText += QChar(QChar::lowSurrogate(c)); - } else { - _tokenText += QChar(c); - } + if (QChar::requiresSurrogates(c)) { + _tokenText += QChar(QChar::highSurrogate(c)); + _tokenText += QChar(QChar::lowSurrogate(c)); + } else { + _tokenText += QChar(c); } continue; } @@ -844,11 +866,11 @@ again: continue_skipping: while (_codePtr < _endPtr && _char.isSpace()) scanChar(); - if (_char == QLatin1Char('*')) { + if (_char == u'*') { _tokenLength = _codePtr - _tokenStartPtr - 1; kind = T_FUNCTION_STAR; scanChar(); - } else if (_char == QLatin1Char('/')) { + } else if (_char == u'/') { scanChar(); if (handleComment()) goto continue_skipping; @@ -882,27 +904,28 @@ int Lexer::scanString(ScanStringMode mode) // correctly in the loop below and afterwards _skipLinefeed = false; bool first = true; + if (_engine) { while (_codePtr <= _endPtr) { if (isLineTerminator()) { - if ((quote == QLatin1Char('`') || qmlMode())) { + if ((quote == u'`' || qmlMode())) { if (first) - --_currentLineNumber; + --_currentLineNumber; // will be read again in scanChar() break; } _errorCode = IllegalCharacter; _errorMessage = QCoreApplication::translate("QmlParser", "Stray newline in string literal"); return T_ERROR; - } else if (_char == QLatin1Char('\\')) { + } else if (_char == u'\\') { break; - } else if (_char == '$' && quote == QLatin1Char('`')) { + } else if (_char == u'$' && quote == u'`') { break; } else if (_char == quote) { _tokenSpell = _engine->midRef(startCode - _code.unicode(), _codePtr - startCode - 1); _rawString = _tokenSpell; scanChar(); - if (quote == QLatin1Char('`')) + if (quote == u'`') _bracesCount = _outerTemplateBraceCount.pop(); if (mode == TemplateHead) @@ -929,7 +952,7 @@ int Lexer::scanString(ScanStringMode mode) auto setRawString = [&](const QChar *end) { QString raw(startCode, end - startCode - 1); raw.replace(QLatin1String("\r\n"), QLatin1String("\n")); - raw.replace(QLatin1Char('\r'), QLatin1Char('\n')); + raw.replace(u'\r', u'\n'); _rawString = _engine->newStringRef(raw); }; @@ -941,11 +964,11 @@ int Lexer::scanString(ScanStringMode mode) if (_engine) { _tokenSpell = _engine->newStringRef(_tokenText); - if (quote == QLatin1Char('`')) + if (quote == u'`') setRawString(_codePtr - 1); } - if (quote == QLatin1Char('`')) + if (quote == u'`') _bracesCount = _outerTemplateBraceCount.pop(); if (mode == TemplateContinuation) @@ -954,7 +977,7 @@ int Lexer::scanString(ScanStringMode mode) return T_NO_SUBSTITUTION_TEMPLATE; return multilineStringLiteral ? T_MULTILINE_STRING_LITERAL : T_STRING_LITERAL; - } else if (quote == QLatin1Char('`') && _char == QLatin1Char('$') && *_codePtr == '{') { + } else if (quote == u'`' && _char == u'$' && *_codePtr == u'{') { scanChar(); scanChar(); _bracesCount = 1; @@ -964,7 +987,7 @@ int Lexer::scanString(ScanStringMode mode) } return (mode == TemplateHead ? T_TEMPLATE_HEAD : T_TEMPLATE_MIDDLE); - } else if (_char == QLatin1Char('\\')) { + } else if (_char == u'\\') { scanChar(); if (_codePtr > _endPtr) { _errorCode = IllegalEscapeSequence; @@ -976,7 +999,7 @@ int Lexer::scanString(ScanStringMode mode) switch (_char.unicode()) { // unicode escape sequence - case 'u': { + case u'u': { bool ok = false; uint codePoint = decodeUnicodeEscapeCharacter(&ok); if (!ok) @@ -991,7 +1014,7 @@ int Lexer::scanString(ScanStringMode mode) } break; // hex escape sequence - case 'x': { + case u'x': { bool ok = false; u = decodeHexEscapeCharacter(&ok); if (!ok) { @@ -1002,38 +1025,38 @@ int Lexer::scanString(ScanStringMode mode) } break; // single character escape sequence - case '\\': u = QLatin1Char('\\'); scanChar(); break; - case '\'': u = QLatin1Char('\''); scanChar(); break; - case '\"': u = QLatin1Char('\"'); scanChar(); break; - case 'b': u = QLatin1Char('\b'); scanChar(); break; - case 'f': u = QLatin1Char('\f'); scanChar(); break; - case 'n': u = QLatin1Char('\n'); scanChar(); break; - case 'r': u = QLatin1Char('\r'); scanChar(); break; - case 't': u = QLatin1Char('\t'); scanChar(); break; - case 'v': u = QLatin1Char('\v'); scanChar(); break; - - case '0': + case u'\\': u = u'\\'; scanChar(); break; + case u'\'': u = u'\''; scanChar(); break; + case u'\"': u = u'\"'; scanChar(); break; + case u'b': u = u'\b'; scanChar(); break; + case u'f': u = u'\f'; scanChar(); break; + case u'n': u = u'\n'; scanChar(); break; + case u'r': u = u'\r'; scanChar(); break; + case u't': u = u'\t'; scanChar(); break; + case u'v': u = u'\v'; scanChar(); break; + + case u'0': if (! _codePtr->isDigit()) { scanChar(); - u = QLatin1Char('\0'); + u = u'\0'; break; } Q_FALLTHROUGH(); - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': + case u'1': + case u'2': + case u'3': + case u'4': + case u'5': + case u'6': + case u'7': + case u'8': + case u'9': _errorCode = IllegalEscapeSequence; _errorMessage = QCoreApplication::translate("QmlParser", "Octal escape sequences are not allowed"); return T_ERROR; - case '\r': - case '\n': + case u'\r': + case u'\n': case 0x2028u: case 0x2029u: scanChar(); @@ -1059,8 +1082,8 @@ int Lexer::scanString(ScanStringMode mode) int Lexer::scanNumber(QChar ch) { - if (ch == QLatin1Char('0')) { - if (_char == QLatin1Char('x') || _char == QLatin1Char('X')) { + if (ch == u'0') { + if (_char == u'x' || _char == u'X') { ch = _char; // remember the x or X to use it in the error message below. // parse hex integer literal @@ -1084,7 +1107,7 @@ int Lexer::scanNumber(QChar ch) _tokenValue = d; return T_NUMERIC_LITERAL; - } else if (_char == QLatin1Char('o') || _char == QLatin1Char('O')) { + } else if (_char == u'o' || _char == u'O') { ch = _char; // remember the o or O to use it in the error message below. // parse octal integer literal @@ -1108,13 +1131,13 @@ int Lexer::scanNumber(QChar ch) _tokenValue = d; return T_NUMERIC_LITERAL; - } else if (_char == QLatin1Char('b') || _char == QLatin1Char('B')) { + } else if (_char == u'b' || _char == u'B') { ch = _char; // remember the b or B to use it in the error message below. // parse binary integer literal scanChar(); // consume 'b' - if (_char.unicode() != '0' && _char.unicode() != '1') { + if (_char.unicode() != u'0' && _char.unicode() != u'1') { _errorCode = IllegalNumber; _errorMessage = QCoreApplication::translate("QmlParser", "At least one binary digit is required after '0%1'").arg(ch); return T_ERROR; @@ -1123,9 +1146,9 @@ int Lexer::scanNumber(QChar ch) double d = 0.; while (1) { int digit = 0; - if (_char.unicode() == '1') + if (_char.unicode() == u'1') digit = 1; - else if (_char.unicode() != '0') + else if (_char.unicode() != u'0') break; d *= 2; d += digit; @@ -1145,13 +1168,13 @@ int Lexer::scanNumber(QChar ch) QVarLengthArray<char,32> chars; chars.append(ch.unicode()); - if (ch != QLatin1Char('.')) { + if (ch != u'.') { while (_char.isDigit()) { chars.append(_char.unicode()); scanChar(); // consume the digit } - if (_char == QLatin1Char('.')) { + if (_char == u'.') { chars.append(_char.unicode()); scanChar(); // consume `.' } @@ -1162,14 +1185,14 @@ int Lexer::scanNumber(QChar ch) scanChar(); } - if (_char == QLatin1Char('e') || _char == QLatin1Char('E')) { - if (_codePtr[0].isDigit() || ((_codePtr[0] == QLatin1Char('+') || _codePtr[0] == QLatin1Char('-')) && + if (_char == u'e' || _char == u'E') { + if (_codePtr[0].isDigit() || ((_codePtr[0] == u'+' || _codePtr[0] == u'-') && _codePtr[1].isDigit())) { chars.append(_char.unicode()); scanChar(); // consume `e' - if (_char == QLatin1Char('+') || _char == QLatin1Char('-')) { + if (_char == u'+' || _char == u'-') { chars.append(_char.unicode()); scanChar(); // consume the sign } @@ -1198,7 +1221,7 @@ int Lexer::scanNumber(QChar ch) int Lexer::scanVersionNumber(QChar ch) { - if (ch == QLatin1Char('0')) { + if (ch == u'0') { _tokenValue = 0; return T_VERSION_NUMBER; } @@ -1223,11 +1246,11 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) _patternFlags = 0; if (prefix == EqualPrefix) - _tokenText += QLatin1Char('='); + _tokenText += u'='; while (true) { switch (_char.unicode()) { - case '/': + case u'/': scanChar(); // scan the flags @@ -1246,7 +1269,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) _tokenLength = _codePtr - _tokenStartPtr - 1; return true; - case '\\': + case u'\\': // regular expression backslash sequence _tokenText += _char; scanChar(); @@ -1260,15 +1283,15 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) scanChar(); break; - case '[': + case u'[': // regular expression class _tokenText += _char; scanChar(); while (_codePtr <= _endPtr && ! isLineTerminator()) { - if (_char == QLatin1Char(']')) + if (_char == u']') break; - else if (_char == QLatin1Char('\\')) { + else if (_char == u'\\') { // regular expression backslash sequence _tokenText += _char; scanChar(); @@ -1286,7 +1309,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) } } - if (_char != QLatin1Char(']')) { + if (_char != u']') { _errorMessage = QCoreApplication::translate("QmlParser", "Unterminated regular expression class"); return false; } @@ -1339,10 +1362,9 @@ bool Lexer::isIdentLetter(QChar ch) { // ASCII-biased, since all reserved words are ASCII, aand hence the // bulk of content to be parsed. - if ((ch >= QLatin1Char('a') && ch <= QLatin1Char('z')) - || (ch >= QLatin1Char('A') && ch <= QLatin1Char('Z')) - || ch == QLatin1Char('$') - || ch == QLatin1Char('_')) + if ((ch >= u'a' && ch <= u'z') + || (ch >= u'A' && ch <= u'Z') + || ch == u'$' || ch == u'_') return true; if (ch.unicode() < 128) return false; @@ -1351,19 +1373,19 @@ bool Lexer::isIdentLetter(QChar ch) bool Lexer::isDecimalDigit(ushort c) { - return (c >= '0' && c <= '9'); + return (c >= u'0' && c <= u'9'); } bool Lexer::isHexDigit(QChar c) { - return ((c >= QLatin1Char('0') && c <= QLatin1Char('9')) - || (c >= QLatin1Char('a') && c <= QLatin1Char('f')) - || (c >= QLatin1Char('A') && c <= QLatin1Char('F'))); + return ((c >= u'0' && c <= u'9') + || (c >= u'a' && c <= u'f') + || (c >= u'A' && c <= u'F')); } bool Lexer::isOctalDigit(ushort c) { - return (c >= '0' && c <= '7'); + return (c >= u'0' && c <= u'7'); } QString Lexer::tokenText() const @@ -1533,9 +1555,10 @@ bool Lexer::scanDirectives(Directives *directives, DiagnosticMessage *error) setError(QCoreApplication::translate("QmlParser","Imported file must be a script")); return false; } + lex(); } else if (_tokenKind == T_IDENTIFIER) { - // .import T_IDENTIFIER (. T_IDENTIFIER)* T_VERSION_NUMBER . T_VERSION_NUMBER as T_IDENTIFIER + // .import T_IDENTIFIER (. T_IDENTIFIER)* (T_VERSION_NUMBER (. T_VERSION_NUMBER)?)? as T_IDENTIFIER while (true) { if (!isUriToken(_tokenKind)) { setError(QCoreApplication::translate("QmlParser","Invalid module URI")); @@ -1552,7 +1575,7 @@ bool Lexer::scanDirectives(Directives *directives, DiagnosticMessage *error) if (_tokenKind != QmlJSGrammar::T_DOT) break; - pathOrUri.append(QLatin1Char('.')); + pathOrUri.append(u'.'); lex(); if (tokenStartLine() != lineNumber) { @@ -1561,31 +1584,27 @@ bool Lexer::scanDirectives(Directives *directives, DiagnosticMessage *error) } } - if (_tokenKind != T_VERSION_NUMBER) { - setError(QCoreApplication::translate("QmlParser","Module import requires a version")); - return false; // expected the module version number - } - - version = tokenText(); - lex(); - if (_tokenKind != T_DOT) { - setError(QCoreApplication::translate( "QmlParser", "Module import requires a minor version (missing dot)")); - return false; // expected the module version number - } - version += QLatin1Char('.'); - - lex(); - if (_tokenKind != T_VERSION_NUMBER) { - setError(QCoreApplication::translate( "QmlParser", "Module import requires a minor version (missing number)")); - return false; // expected the module version number + if (_tokenKind == T_VERSION_NUMBER) { + version = tokenText(); + lex(); + if (_tokenKind == T_DOT) { + version += u'.'; + lex(); + if (_tokenKind != T_VERSION_NUMBER) { + setError(QCoreApplication::translate( + "QmlParser", "Incomplete version number (dot but no minor)")); + return false; // expected the module version number + } + version += tokenText(); + lex(); + } } - version += tokenText(); } // // recognize the mandatory `as' followed by the module name // - if (! (lex() == T_AS && tokenStartLine() == lineNumber)) { + if (! (_tokenKind == T_AS && tokenStartLine() == lineNumber)) { if (fileImport) setError(QCoreApplication::translate("QmlParser", "File import requires a qualifier")); else @@ -1628,5 +1647,3 @@ bool Lexer::scanDirectives(Directives *directives, DiagnosticMessage *error) return true; } - -QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljslexer_p.h b/src/libs/qmljs/parser/qmljslexer_p.h index feb2055f62..a442748d74 100644 --- a/src/libs/qmljs/parser/qmljslexer_p.h +++ b/src/libs/qmljs/parser/qmljslexer_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -176,6 +176,7 @@ protected: private: inline void scanChar(); + inline QChar peekChar(); int scanToken(); int scanNumber(QChar ch); int scanVersionNumber(QChar ch); diff --git a/src/libs/qmljs/parser/qmljsmemorypool_p.h b/src/libs/qmljs/parser/qmljsmemorypool_p.h index 40902ae63f..6875d415cf 100644 --- a/src/libs/qmljs/parser/qmljsmemorypool_p.h +++ b/src/libs/qmljs/parser/qmljsmemorypool_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -90,8 +90,7 @@ public: template <typename Tp, typename... Ta> Tp *New(Ta... args) { return new (this->allocate(sizeof(Tp))) Tp(args...); } - QStringView newString(const QString &string) - { + QStringView newString(const QString &string) { strings.append(new QString(string)); return QStringView(*strings.last()); } diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp index a73a4dff96..9d6ed072ad 100644 --- a/src/libs/qmljs/parser/qmljsparser.cpp +++ b/src/libs/qmljs/parser/qmljsparser.cpp @@ -1,8 +1,6 @@ - -#line 134 "qmljs.g" /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -36,7 +34,7 @@ #include <string.h> -#line 493 "qmljs.g" +#line 494 "qmljs.g" #include "qmljsparser_p.h" @@ -258,85 +256,85 @@ bool Parser::parse(int startToken) switch (r) { -#line 720 "qmljs.g" +#line 721 "qmljs.g" case 0: { sym(1).Node = sym(2).Node; program = sym(1).Node; } break; -#line 728 "qmljs.g" +#line 729 "qmljs.g" case 1: { sym(1).Node = sym(2).Node; program = sym(1).Node; } break; -#line 736 "qmljs.g" +#line 737 "qmljs.g" case 2: { sym(1).Node = sym(2).Node; program = sym(1).Node; } break; -#line 744 "qmljs.g" +#line 745 "qmljs.g" case 3: { sym(1).Node = sym(2).Node; program = sym(1).Node; } break; -#line 752 "qmljs.g" +#line 753 "qmljs.g" case 4: { sym(1).Node = sym(2).Node; program = sym(1).Node; } break; -#line 760 "qmljs.g" +#line 761 "qmljs.g" case 5: { sym(1).Node = sym(2).Node; program = sym(1).Node; } break; -#line 769 "qmljs.g" +#line 770 "qmljs.g" case 6: { sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiHeaderItemList, sym(2).UiObjectMemberList->finish()); } break; -#line 777 "qmljs.g" +#line 778 "qmljs.g" case 8: { sym(1).Node = sym(1).UiHeaderItemList->finish(); } break; -#line 784 "qmljs.g" +#line 785 "qmljs.g" case 9: { sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiPragma); } break; -#line 791 "qmljs.g" +#line 792 "qmljs.g" case 10: { sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiImport); } break; -#line 798 "qmljs.g" +#line 799 "qmljs.g" case 11: { sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiPragma); } break; -#line 805 "qmljs.g" +#line 806 "qmljs.g" case 12: { sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiImport); } break; -#line 817 "qmljs.g" +#line 818 "qmljs.g" case 16: { AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2)); @@ -345,37 +343,52 @@ bool Parser::parse(int startToken) sym(1).Node = pragma; } break; -#line 829 "qmljs.g" +#line 830 "qmljs.g" case 18: { sym(1).UiImport->semicolonToken = loc(2); } break; -#line 836 "qmljs.g" +#line 837 "qmljs.g" case 19: { - auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval, sym(3).dval); + const int major = sym(1).dval; + const int minor = sym(3).dval; + if (major < 0 || major >= 255 || minor < 0 || minor >= 255) { + diagnostic_messages.append( + compileError(loc(1), + QLatin1String("Invalid version. Version numbers must be >= 0 and < 255."))); + return false; + } + auto version = new (pool) AST::UiVersionSpecifier(major, minor); version->majorToken = loc(1); version->minorToken = loc(3); sym(1).UiVersionSpecifier = version; } break; -#line 847 "qmljs.g" +#line 855 "qmljs.g" case 20: { - auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval, 0); + const int major = sym(1).dval; + if (major < 0 || major >= 255) { + diagnostic_messages.append( + compileError(loc(1), + QLatin1String("Invalid major version. Version numbers must be >= 0 and < 255."))); + return false; + } + auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval); version->majorToken = loc(1); sym(1).UiVersionSpecifier = version; } break; -#line 856 "qmljs.g" +#line 871 "qmljs.g" case 21: { sym(1).UiImport->version = sym(2).UiVersionSpecifier; sym(1).UiImport->semicolonToken = loc(3); } break; -#line 864 "qmljs.g" +#line 879 "qmljs.g" case 22: { sym(1).UiImport->version = sym(2).UiVersionSpecifier; @@ -385,7 +398,7 @@ bool Parser::parse(int startToken) sym(1).UiImport->semicolonToken = loc(5); } break; -#line 875 "qmljs.g" +#line 890 "qmljs.g" case 23: { sym(1).UiImport->asToken = loc(2); @@ -394,7 +407,7 @@ bool Parser::parse(int startToken) sym(1).UiImport->semicolonToken = loc(4); } break; -#line 885 "qmljs.g" +#line 900 "qmljs.g" case 24: { AST::UiImport *node = 0; @@ -419,19 +432,19 @@ bool Parser::parse(int startToken) } } break; -#line 911 "qmljs.g" +#line 926 "qmljs.g" case 25: { sym(1).Node = nullptr; } break; -#line 918 "qmljs.g" +#line 933 "qmljs.g" case 26: { sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember); } break; -#line 925 "qmljs.g" +#line 940 "qmljs.g" case 27: { AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); @@ -439,7 +452,7 @@ bool Parser::parse(int startToken) sym(1).Node = node; } break; -#line 934 "qmljs.g" +#line 949 "qmljs.g" case 28: { AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); @@ -448,7 +461,7 @@ bool Parser::parse(int startToken) sym(1).Node = node; } break; -#line 944 "qmljs.g" +#line 959 "qmljs.g" case 29: { if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) { @@ -465,26 +478,26 @@ bool Parser::parse(int startToken) sym(1).Node = node; } break; -#line 962 "qmljs.g" +#line 977 "qmljs.g" case 30: { sym(1).Node = sym(2).Node; } break; -#line 970 "qmljs.g" +#line 985 "qmljs.g" case 31: { sym(1).Node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotation); } break; -#line 977 "qmljs.g" +#line 992 "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" +#line 1000 "qmljs.g" case 33: { AST::UiObjectDefinition *node = sym(2).UiObjectDefinition; @@ -492,26 +505,26 @@ case 30: { sym(1).Node = node; } break; -#line 996 "qmljs.g" +#line 1011 "qmljs.g" case 35: { sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember); } break; -#line 1003 "qmljs.g" +#line 1018 "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" +#line 1026 "qmljs.g" case 37: { sym(1).Node = new (pool) AST::UiArrayMemberList(sym(1).UiObjectMember); } break; -#line 1018 "qmljs.g" +#line 1033 "qmljs.g" case 38: { AST::UiArrayMemberList *node = new (pool) AST::UiArrayMemberList(sym(1).UiArrayMemberList, sym(3).UiObjectMember); @@ -519,7 +532,7 @@ case 30: { sym(1).Node = node; } break; -#line 1027 "qmljs.g" +#line 1042 "qmljs.g" case 39: { AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer((AST::UiObjectMemberList*)0); @@ -528,7 +541,7 @@ case 30: { sym(1).Node = node; } break; -#line 1037 "qmljs.g" +#line 1052 "qmljs.g" case 40: { AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer(sym(2).UiObjectMemberList->finish()); @@ -537,14 +550,14 @@ case 30: { sym(1).Node = node; } break; -#line 1047 "qmljs.g" +#line 1062 "qmljs.g" case 41: { AST::UiObjectDefinition *node = new (pool) AST::UiObjectDefinition(sym(1).UiQualifiedId, sym(2).UiObjectInitializer); sym(1).Node = node; } break; -#line 1055 "qmljs.g" +#line 1070 "qmljs.g" case 42: { AST::UiObjectMember *node = sym(2).UiObjectMember; @@ -552,7 +565,7 @@ case 30: { sym(1).Node = sym(2).Node; } break; -#line 1068 "qmljs.g" +#line 1083 "qmljs.g" case 45: { AST::UiArrayBinding *node = new (pool) AST::UiArrayBinding(sym(1).UiQualifiedId, sym(5).UiArrayMemberList->finish()); @@ -562,7 +575,7 @@ case 30: { sym(1).Node = node; } break; -#line 1079 "qmljs.g" +#line 1094 "qmljs.g" case 46: { AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding( @@ -571,7 +584,7 @@ case 30: { sym(1).Node = node; } break; -#line 1089 "qmljs.g" +#line 1104 "qmljs.g" case 47: { AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding( @@ -581,7 +594,7 @@ case 30: { sym(1).Node = node; } break; -#line 1101 "qmljs.g" +#line 1116 "qmljs.g" case 48: { AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish()); @@ -592,7 +605,7 @@ case 30: { sym(1).Node = node; } break; -#line 1114 "qmljs.g" +#line 1129 "qmljs.g" case 49: { AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish()); @@ -603,33 +616,33 @@ case 30: { sym(1).Node = node; } break; -#line 1127 "qmljs.g" +#line 1142 "qmljs.g" case 50: Q_FALLTHROUGH(); -#line 1129 "qmljs.g" +#line 1144 "qmljs.g" case 51: Q_FALLTHROUGH(); -#line 1131 "qmljs.g" +#line 1146 "qmljs.g" case 52: { sym(1).Node = sym(3).Node; } break; -#line 1139 "qmljs.g" +#line 1154 "qmljs.g" case 53: Q_FALLTHROUGH(); -#line 1141 "qmljs.g" +#line 1156 "qmljs.g" case 54: Q_FALLTHROUGH(); -#line 1143 "qmljs.g" +#line 1158 "qmljs.g" case 55: Q_FALLTHROUGH(); -#line 1145 "qmljs.g" +#line 1160 "qmljs.g" case 56: Q_FALLTHROUGH(); -#line 1147 "qmljs.g" +#line 1162 "qmljs.g" case 57: Q_FALLTHROUGH(); -#line 1149 "qmljs.g" +#line 1164 "qmljs.g" case 58: { sym(1).Node = sym(2).Node; } break; -#line 1156 "qmljs.g" +#line 1171 "qmljs.g" case 59: { @@ -638,11 +651,11 @@ case 59: sym(1).Node = node; } break; -#line 1166 "qmljs.g" +#line 1181 "qmljs.g" case 60: Q_FALLTHROUGH(); -#line 1168 "qmljs.g" +#line 1183 "qmljs.g" case 61: Q_FALLTHROUGH(); -#line 1170 "qmljs.g" +#line 1185 "qmljs.g" case 62: { AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(stringRef(1)); @@ -650,7 +663,7 @@ case 59: sym(1).Node = node; } break; -#line 1179 "qmljs.g" +#line 1194 "qmljs.g" case 63: { AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(sym(1).UiQualifiedId, stringRef(3)); @@ -658,19 +671,19 @@ case 59: sym(1).Node = node; } break; -#line 1188 "qmljs.g" +#line 1203 "qmljs.g" case 64: { sym(1).Node = nullptr; } break; -#line 1195 "qmljs.g" +#line 1210 "qmljs.g" case 65: { sym(1).Node = sym(1).UiParameterList->finish(); } break; -#line 1202 "qmljs.g" +#line 1217 "qmljs.g" case 66: { AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(3).UiQualifiedId->finish(), stringRef(1)); @@ -680,7 +693,7 @@ case 59: sym(1).Node = node; } break; -#line 1213 "qmljs.g" +#line 1228 "qmljs.g" case 67: { AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiQualifiedId->finish(), stringRef(2)); @@ -689,7 +702,7 @@ case 59: sym(1).Node = node; } break; -#line 1223 "qmljs.g" +#line 1238 "qmljs.g" case 68: { AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, sym(5).UiQualifiedId->finish(), stringRef(3)); @@ -700,7 +713,7 @@ case 59: sym(1).Node = node; } break; -#line 1235 "qmljs.g" +#line 1250 "qmljs.g" case 69: { AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, sym(3).UiQualifiedId->finish(), stringRef(4)); @@ -710,7 +723,7 @@ case 59: sym(1).Node = node; } break; -#line 1246 "qmljs.g" +#line 1261 "qmljs.g" case 70: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); @@ -723,7 +736,7 @@ case 59: sym(1).Node = node; } break; -#line 1260 "qmljs.g" +#line 1275 "qmljs.g" case 71: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2)); @@ -735,7 +748,7 @@ case 59: sym(1).Node = node; } break; -#line 1273 "qmljs.g" +#line 1288 "qmljs.g" case 72: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); @@ -748,7 +761,7 @@ case 59: sym(1).Node = node; } break; -#line 1289 "qmljs.g" +#line 1304 "qmljs.g" case 74: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -757,7 +770,7 @@ case 59: sym(1).Node = node; } break; -#line 1299 "qmljs.g" +#line 1314 "qmljs.g" case 75: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); @@ -768,7 +781,7 @@ case 59: sym(1).Node = node; } break; -#line 1314 "qmljs.g" +#line 1329 "qmljs.g" case 77: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -777,7 +790,7 @@ case 59: sym(1).Node = node; } break; -#line 1324 "qmljs.g" +#line 1340 "qmljs.g" case 78: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -786,7 +799,7 @@ case 59: sym(1).Node = node; } break; -#line 1334 "qmljs.g" +#line 1350 "qmljs.g" case 79: { AST::UiPublicMember *node = sym(3).UiPublicMember; @@ -797,7 +810,7 @@ case 59: sym(1).Node = node; } break; -#line 1346 "qmljs.g" +#line 1362 "qmljs.g" case 80: { AST::UiPublicMember *node = sym(3).UiPublicMember; @@ -808,7 +821,7 @@ case 59: sym(1).Node = node; } break; -#line 1358 "qmljs.g" +#line 1374 "qmljs.g" case 81: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -817,7 +830,7 @@ case 59: sym(1).Node = node; } break; -#line 1368 "qmljs.g" +#line 1384 "qmljs.g" case 82: { AST::UiPublicMember *node = sym(3).UiPublicMember; @@ -828,7 +841,7 @@ case 59: sym(1).Node = node; } break; -#line 1381 "qmljs.g" +#line 1397 "qmljs.g" case 83: { AST::UiPublicMember *node = sym(3).UiPublicMember; @@ -839,12 +852,12 @@ case 59: sym(1).Node = node; } break; -#line 1393 "qmljs.g" +#line 1409 "qmljs.g" /* we need OptionalSemicolon because UiScriptStatement might already parse the last semicolon and then we would miss a semicolon (see tests/auto/quick/qquickvisualdatamodel/data/objectlist.qml)*/ -#line 1399 "qmljs.g" +#line 1415 "qmljs.g" case 86: { AST::UiRequired *node = new (pool) AST::UiRequired(stringRef(2)); @@ -853,7 +866,7 @@ case 59: sym(1).Node = node; } break; -#line 1411 "qmljs.g" +#line 1427 "qmljs.g" case 88: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -862,7 +875,7 @@ case 59: sym(1).Node = node; } break; -#line 1421 "qmljs.g" +#line 1437 "qmljs.g" case 89: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3), sym(5).Statement); @@ -873,7 +886,7 @@ case 59: sym(1).Node = node; } break; -#line 1435 "qmljs.g" +#line 1451 "qmljs.g" case 91: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -882,7 +895,7 @@ case 59: sym(1).Node = node; } break; -#line 1445 "qmljs.g" +#line 1461 "qmljs.g" case 92: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -891,7 +904,7 @@ case 59: sym(1).Node = node; } break; -#line 1455 "qmljs.g" +#line 1471 "qmljs.g" case 93: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6)); @@ -916,7 +929,7 @@ case 59: sym(1).Node = node; } break; -#line 1483 "qmljs.g" +#line 1499 "qmljs.g" case 95: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -925,7 +938,7 @@ case 59: sym(1).Node = node; } break; -#line 1493 "qmljs.g" +#line 1509 "qmljs.g" case 96: { AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3)); @@ -947,7 +960,7 @@ case 59: sym(1).Node = node; } break; -#line 1518 "qmljs.g" +#line 1534 "qmljs.g" case 98: { AST::UiPublicMember *node = sym(2).UiPublicMember; @@ -956,26 +969,26 @@ case 59: sym(1).Node = node; } break; -#line 1528 "qmljs.g" +#line 1544 "qmljs.g" case 99: { auto node = new (pool) AST::UiSourceElement(sym(1).Node); sym(1).Node = node; } break; -#line 1536 "qmljs.g" +#line 1552 "qmljs.g" case 100: { sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); } break; -#line 1543 "qmljs.g" +#line 1559 "qmljs.g" case 101: { sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); } break; -#line 1550 "qmljs.g" +#line 1566 "qmljs.g" case 102: { if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) { @@ -997,7 +1010,7 @@ case 59: } } break; -#line 1573 "qmljs.g" +#line 1589 "qmljs.g" case 103: { AST::UiEnumDeclaration *enumDeclaration = new (pool) AST::UiEnumDeclaration(stringRef(2), sym(4).UiEnumMemberList->finish()); @@ -1007,7 +1020,7 @@ case 59: break; } -#line 1584 "qmljs.g" +#line 1600 "qmljs.g" case 104: { if (!stringRef(2).front().isUpper()) { @@ -1019,7 +1032,7 @@ case 59: sym(1).Node = inlineComponent; } break; -#line 1597 "qmljs.g" +#line 1613 "qmljs.g" case 105: { AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1)); @@ -1028,7 +1041,7 @@ case 59: break; } -#line 1607 "qmljs.g" +#line 1623 "qmljs.g" case 106: { AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1), sym(3).dval); @@ -1038,7 +1051,7 @@ case 59: break; } -#line 1618 "qmljs.g" +#line 1634 "qmljs.g" case 107: { AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3)); @@ -1047,7 +1060,7 @@ case 59: break; } -#line 1628 "qmljs.g" +#line 1644 "qmljs.g" case 108: { AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3), sym(5).dval); @@ -1057,25 +1070,25 @@ case 59: break; } -#line 1672 "qmljs.g" +#line 1688 "qmljs.g" case 135: { sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).Type); } break; -#line 1679 "qmljs.g" +#line 1695 "qmljs.g" case 136: { sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).TypeArgumentList, sym(3).Type); } break; -#line 1686 "qmljs.g" +#line 1702 "qmljs.g" case 137: { sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId, sym(3).TypeArgumentList->finish()); } break; -#line 1693 "qmljs.g" +#line 1709 "qmljs.g" case 138: { AST::UiQualifiedId *id = new (pool) AST::UiQualifiedId(stringRef(1)); @@ -1083,26 +1096,26 @@ case 59: sym(1).Type = new (pool) AST::Type(id->finish()); } break; -#line 1702 "qmljs.g" +#line 1718 "qmljs.g" case 139: { sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId); } break; -#line 1709 "qmljs.g" +#line 1725 "qmljs.g" case 140: { sym(1).TypeAnnotation = new (pool) AST::TypeAnnotation(sym(2).Type); sym(1).TypeAnnotation->colonToken = loc(1); } break; -#line 1718 "qmljs.g" +#line 1734 "qmljs.g" case 142: { sym(1).TypeAnnotation = nullptr; } break; -#line 1729 "qmljs.g" +#line 1745 "qmljs.g" case 143: { AST::ThisExpression *node = new (pool) AST::ThisExpression(); @@ -1110,7 +1123,7 @@ case 59: sym(1).Node = node; } break; -#line 1738 "qmljs.g" +#line 1754 "qmljs.g" case 144: { AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); @@ -1118,7 +1131,7 @@ case 59: sym(1).Node = node; } break; -#line 1756 "qmljs.g" +#line 1772 "qmljs.g" case 153: { if (coverExpressionType != CE_ParenthesizedExpression) { @@ -1127,7 +1140,7 @@ case 59: } } break; -#line 1767 "qmljs.g" +#line 1783 "qmljs.g" case 154: { AST::NestedExpression *node = new (pool) AST::NestedExpression(sym(2).Expression); @@ -1137,7 +1150,7 @@ case 59: coverExpressionType = CE_ParenthesizedExpression; } break; -#line 1778 "qmljs.g" +#line 1794 "qmljs.g" case 155: { sym(1).Node = nullptr; @@ -1145,7 +1158,7 @@ case 59: coverExpressionType = CE_FormalParameterList; } break; -#line 1787 "qmljs.g" +#line 1803 "qmljs.g" case 156: { AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(2).PatternElement))->finish(pool); @@ -1154,7 +1167,7 @@ case 59: coverExpressionType = CE_FormalParameterList; } break; -#line 1797 "qmljs.g" +#line 1813 "qmljs.g" case 157: { AST::FormalParameterList *list = sym(2).Expression->reparseAsFormalParameterList(pool); @@ -1170,7 +1183,7 @@ case 59: sym(1).Node = list->finish(pool); } break; -#line 1814 "qmljs.g" +#line 1830 "qmljs.g" case 158: { AST::NullExpression *node = new (pool) AST::NullExpression(); @@ -1178,7 +1191,7 @@ case 59: sym(1).Node = node; } break; -#line 1823 "qmljs.g" +#line 1839 "qmljs.g" case 159: { AST::TrueLiteral *node = new (pool) AST::TrueLiteral(); @@ -1186,7 +1199,7 @@ case 59: sym(1).Node = node; } break; -#line 1832 "qmljs.g" +#line 1848 "qmljs.g" case 160: { AST::FalseLiteral *node = new (pool) AST::FalseLiteral(); @@ -1194,7 +1207,7 @@ case 59: sym(1).Node = node; } break; -#line 1841 "qmljs.g" +#line 1857 "qmljs.g" case 161: { AST::NumericLiteral *node = new (pool) AST::NumericLiteral(sym(1).dval); @@ -1202,9 +1215,9 @@ case 59: sym(1).Node = node; } break; -#line 1850 "qmljs.g" +#line 1866 "qmljs.g" case 162: Q_FALLTHROUGH(); -#line 1853 "qmljs.g" +#line 1869 "qmljs.g" case 163: { AST::StringLiteral *node = new (pool) AST::StringLiteral(stringRef(1)); @@ -1212,7 +1225,7 @@ case 59: sym(1).Node = node; } break; -#line 1865 "qmljs.g" +#line 1881 "qmljs.g" { Lexer::RegExpBodyPrefix prefix; @@ -1220,7 +1233,7 @@ case 59: prefix = Lexer::NoPrefix; goto scan_regexp; -#line 1877 "qmljs.g" +#line 1893 "qmljs.g" case 165: prefix = Lexer::EqualPrefix; @@ -1242,7 +1255,7 @@ case 59: } break; } -#line 1901 "qmljs.g" +#line 1917 "qmljs.g" case 166: { AST::PatternElementList *list = nullptr; @@ -1254,7 +1267,7 @@ case 59: sym(1).Node = node; } break; -#line 1914 "qmljs.g" +#line 1930 "qmljs.g" case 167: { AST::ArrayPattern *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList->finish()); @@ -1263,7 +1276,7 @@ case 59: sym(1).Node = node; } break; -#line 1924 "qmljs.g" +#line 1940 "qmljs.g" case 168: { auto *list = sym(2).PatternElementList; @@ -1279,28 +1292,28 @@ case 59: Q_ASSERT(node->isValidArrayLiteral()); } break; -#line 1941 "qmljs.g" +#line 1957 "qmljs.g" case 169: { AST::PatternElement *e = new (pool) AST::PatternElement(sym(1).Expression); sym(1).Node = new (pool) AST::PatternElementList(nullptr, e); } break; -#line 1949 "qmljs.g" +#line 1965 "qmljs.g" case 170: { AST::PatternElement *e = new (pool) AST::PatternElement(sym(2).Expression); sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision->finish(), e); } break; -#line 1957 "qmljs.g" +#line 1973 "qmljs.g" case 171: { AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); sym(1).Node = node; } break; -#line 1965 "qmljs.g" +#line 1981 "qmljs.g" case 172: { AST::PatternElement *e = new (pool) AST::PatternElement(sym(4).Expression); @@ -1308,14 +1321,14 @@ case 59: sym(1).Node = sym(1).PatternElementList->append(node); } break; -#line 1974 "qmljs.g" +#line 1990 "qmljs.g" case 173: { AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(3).Elision, sym(4).PatternElement); sym(1).Node = sym(1).PatternElementList->append(node); } break; -#line 1982 "qmljs.g" +#line 1998 "qmljs.g" case 174: { AST::Elision *node = new (pool) AST::Elision(); @@ -1323,7 +1336,7 @@ case 59: sym(1).Node = node; } break; -#line 1991 "qmljs.g" +#line 2007 "qmljs.g" case 175: { AST::Elision *node = new (pool) AST::Elision(sym(1).Elision); @@ -1331,26 +1344,26 @@ case 59: sym(1).Node = node; } break; -#line 2000 "qmljs.g" +#line 2016 "qmljs.g" case 176: { sym(1).Node = nullptr; } break; -#line 2007 "qmljs.g" +#line 2023 "qmljs.g" case 177: { sym(1).Node = sym(1).Elision->finish(); } break; -#line 2014 "qmljs.g" +#line 2030 "qmljs.g" case 178: { AST::PatternElement *node = new (pool) AST::PatternElement(sym(2).Expression, AST::PatternElement::SpreadElement); sym(1).Node = node; } break; -#line 2022 "qmljs.g" +#line 2038 "qmljs.g" case 179: { AST::ObjectPattern *node = new (pool) AST::ObjectPattern(); @@ -1359,7 +1372,7 @@ case 59: sym(1).Node = node; } break; -#line 2032 "qmljs.g" +#line 2048 "qmljs.g" case 180: { AST::ObjectPattern *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList->finish()); @@ -1368,7 +1381,7 @@ case 59: sym(1).Node = node; } break; -#line 2042 "qmljs.g" +#line 2058 "qmljs.g" case 181: { AST::ObjectPattern *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList->finish()); @@ -1377,24 +1390,24 @@ case 59: sym(1).Node = node; } break; -#line 2053 "qmljs.g" +#line 2069 "qmljs.g" case 182: Q_FALLTHROUGH(); -#line 2055 "qmljs.g" +#line 2071 "qmljs.g" case 183: { sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty); } break; -#line 2062 "qmljs.g" +#line 2078 "qmljs.g" case 184: Q_FALLTHROUGH(); -#line 2064 "qmljs.g" +#line 2080 "qmljs.g" case 185: { AST::PatternPropertyList *node = new (pool) AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty); sym(1).Node = node; } break; -#line 2072 "qmljs.g" +#line 2088 "qmljs.g" case 186: { AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1)); @@ -1406,7 +1419,7 @@ case 59: sym(1).Node = node; } break; -#line 2088 "qmljs.g" +#line 2104 "qmljs.g" case 188: { AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1)); @@ -1425,9 +1438,9 @@ case 59: } break; -#line 2108 "qmljs.g" +#line 2124 "qmljs.g" case 189: Q_FALLTHROUGH(); -#line 2110 "qmljs.g" +#line 2126 "qmljs.g" case 190: { AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, sym(3).Expression); @@ -1439,7 +1452,7 @@ case 59: sym(1).Node = node; } break; -#line 2128 "qmljs.g" +#line 2144 "qmljs.g" case 194: { AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); @@ -1447,9 +1460,9 @@ case 59: sym(1).Node = node; } break; -#line 2137 "qmljs.g" +#line 2153 "qmljs.g" case 195: Q_FALLTHROUGH(); -#line 2139 "qmljs.g" +#line 2155 "qmljs.g" case 196: { AST::StringLiteralPropertyName *node = new (pool) AST::StringLiteralPropertyName(stringRef(1)); @@ -1457,9 +1470,9 @@ case 59: sym(1).Node = node; } break; -#line 2148 "qmljs.g" +#line 2164 "qmljs.g" case 197: Q_FALLTHROUGH(); -#line 2150 "qmljs.g" +#line 2166 "qmljs.g" case 198: { AST::NumericLiteralPropertyName *node = new (pool) AST::NumericLiteralPropertyName(sym(1).dval); @@ -1467,7 +1480,7 @@ case 59: sym(1).Node = node; } break; -#line 2201 "qmljs.g" +#line 2217 "qmljs.g" case 239: { AST::ComputedPropertyName *node = new (pool) AST::ComputedPropertyName(sym(2).Expression); @@ -1475,25 +1488,25 @@ case 59: sym(1).Node = node; } break; -#line 2210 "qmljs.g" +#line 2226 "qmljs.g" case 240: Q_FALLTHROUGH(); -#line 2212 "qmljs.g" +#line 2228 "qmljs.g" case 241: { sym(1) = sym(2); } break; -#line 2220 "qmljs.g" +#line 2236 "qmljs.g" case 242: Q_FALLTHROUGH(); -#line 2222 "qmljs.g" +#line 2238 "qmljs.g" case 243: { sym(1).Node = nullptr; } break; -#line 2232 "qmljs.g" +#line 2248 "qmljs.g" case 246: Q_FALLTHROUGH(); -#line 2235 "qmljs.g" +#line 2251 "qmljs.g" case 247: { AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), nullptr); @@ -1501,9 +1514,9 @@ case 241: { sym(1).Node = node; } break; -#line 2244 "qmljs.g" +#line 2260 "qmljs.g" case 248: Q_FALLTHROUGH(); -#line 2247 "qmljs.g" +#line 2263 "qmljs.g" case 249: { AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), sym(2).Expression); @@ -1512,7 +1525,7 @@ case 241: { sym(1).Node = node; } break; -#line 2260 "qmljs.g" +#line 2276 "qmljs.g" case 251: { AST::SuperLiteral *node = new (pool) AST::SuperLiteral(); @@ -1520,9 +1533,9 @@ case 241: { sym(1).Node = node; } break; -#line 2270 "qmljs.g" +#line 2286 "qmljs.g" case 252: Q_FALLTHROUGH(); -#line 2272 "qmljs.g" +#line 2288 "qmljs.g" case 253: { AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); @@ -1531,28 +1544,48 @@ case 241: { sym(1).Node = node; } break; -#line 2284 "qmljs.g" - case 254: +#line 2297 "qmljs.g" + + case 254: { + AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); + node->lbracketToken = loc(3); + node->rbracketToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; + +#line 2309 "qmljs.g" + case 255: { AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); node->identifierToken= loc(1); sym(1).Node = node; } Q_FALLTHROUGH(); -#line 2292 "qmljs.g" - case 255: Q_FALLTHROUGH(); -#line 2294 "qmljs.g" +#line 2317 "qmljs.g" + case 256: Q_FALLTHROUGH(); +#line 2319 "qmljs.g" - case 256: { + case 257: { 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; -#line 2306 "qmljs.g" +#line 2329 "qmljs.g" case 258: { + AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + node->isOptional = true; + sym(1).Node = node; + } break; + +#line 2342 "qmljs.g" + + case 260: { AST::NewMemberExpression *node = new (pool) AST::NewMemberExpression(sym(2).Expression, sym(4).ArgumentList); node->newToken = loc(1); node->lparenToken = loc(3); @@ -1560,415 +1593,451 @@ case 241: { sym(1).Node = node; } break; -#line 2322 "qmljs.g" +#line 2358 "qmljs.g" - case 261: { + case 263: { AST::NewExpression *node = new (pool) AST::NewExpression(sym(2).Expression); node->newToken = loc(1); sym(1).Node = node; } break; -#line 2332 "qmljs.g" - case 262: Q_FALLTHROUGH(); -#line 2334 "qmljs.g" +#line 2368 "qmljs.g" + case 264: Q_FALLTHROUGH(); +#line 2370 "qmljs.g" - case 263: { + case 265: { AST::TaggedTemplate *node = new (pool) AST::TaggedTemplate(sym(1).Expression, sym(2).Template); sym(1).Node = node; } break; -#line 2342 "qmljs.g" +#line 2378 "qmljs.g" - case 264: { + case 266: { 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; -#line 2352 "qmljs.g" - case 265: Q_FALLTHROUGH(); -#line 2354 "qmljs.g" +#line 2388 "qmljs.g" - case 266: { + case 267: { + AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; + +#line 2399 "qmljs.g" + case 268: Q_FALLTHROUGH(); +#line 2401 "qmljs.g" + + case 269: { 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; -#line 2364 "qmljs.g" +#line 2411 "qmljs.g" - case 267: { + case 270: { + AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(4).ArgumentList); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; + +#line 2423 "qmljs.g" + + case 271: { 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; -#line 2374 "qmljs.g" +#line 2433 "qmljs.g" + + case 272: { + AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(4).Expression); + node->lbracketToken = loc(3); + node->rbracketToken = loc(5); + node->isOptional = true; + sym(1).Node = node; + } break; + +#line 2444 "qmljs.g" - case 268: { + case 273: { 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; -#line 2384 "qmljs.g" +#line 2454 "qmljs.g" - case 269: { + case 274: { + AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); + node->dotToken = loc(2); + node->identifierToken = loc(3); + node->isOptional = true; + sym(1).Node = node; + } break; + +#line 2465 "qmljs.g" + + case 275: { sym(1).Node = nullptr; } break; -#line 2391 "qmljs.g" - case 270: Q_FALLTHROUGH(); -#line 2393 "qmljs.g" +#line 2472 "qmljs.g" + case 276: Q_FALLTHROUGH(); +#line 2474 "qmljs.g" - case 271: { + case 277: { sym(1).Node = sym(1).ArgumentList->finish(); } break; -#line 2400 "qmljs.g" +#line 2481 "qmljs.g" - case 272: { + case 278: { sym(1).Node = new (pool) AST::ArgumentList(sym(1).Expression); } break; -#line 2407 "qmljs.g" +#line 2488 "qmljs.g" - case 273: { + case 279: { AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(2).Expression); node->isSpreadElement = true; sym(1).Node = node; } break; -#line 2416 "qmljs.g" +#line 2497 "qmljs.g" - case 274: { + case 280: { AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(1).ArgumentList, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -#line 2425 "qmljs.g" +#line 2506 "qmljs.g" - case 275: { + case 281: { 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; -#line 2440 "qmljs.g" +#line 2521 "qmljs.g" - case 279: { + case 285: { AST::PostIncrementExpression *node = new (pool) AST::PostIncrementExpression(sym(1).Expression); node->incrementToken = loc(2); sym(1).Node = node; } break; -#line 2449 "qmljs.g" +#line 2530 "qmljs.g" - case 280: { + case 286: { AST::PostDecrementExpression *node = new (pool) AST::PostDecrementExpression(sym(1).Expression); node->decrementToken = loc(2); sym(1).Node = node; } break; -#line 2458 "qmljs.g" +#line 2539 "qmljs.g" - case 281: { + case 287: { AST::PreIncrementExpression *node = new (pool) AST::PreIncrementExpression(sym(2).Expression); node->incrementToken = loc(1); sym(1).Node = node; } break; -#line 2467 "qmljs.g" +#line 2548 "qmljs.g" - case 282: { + case 288: { AST::PreDecrementExpression *node = new (pool) AST::PreDecrementExpression(sym(2).Expression); node->decrementToken = loc(1); sym(1).Node = node; } break; -#line 2478 "qmljs.g" +#line 2559 "qmljs.g" - case 284: { + case 290: { AST::DeleteExpression *node = new (pool) AST::DeleteExpression(sym(2).Expression); node->deleteToken = loc(1); sym(1).Node = node; } break; -#line 2487 "qmljs.g" +#line 2568 "qmljs.g" - case 285: { + case 291: { AST::VoidExpression *node = new (pool) AST::VoidExpression(sym(2).Expression); node->voidToken = loc(1); sym(1).Node = node; } break; -#line 2496 "qmljs.g" +#line 2577 "qmljs.g" - case 286: { + case 292: { AST::TypeOfExpression *node = new (pool) AST::TypeOfExpression(sym(2).Expression); node->typeofToken = loc(1); sym(1).Node = node; } break; -#line 2505 "qmljs.g" +#line 2586 "qmljs.g" - case 287: { + case 293: { AST::UnaryPlusExpression *node = new (pool) AST::UnaryPlusExpression(sym(2).Expression); node->plusToken = loc(1); sym(1).Node = node; } break; -#line 2514 "qmljs.g" +#line 2595 "qmljs.g" - case 288: { + case 294: { AST::UnaryMinusExpression *node = new (pool) AST::UnaryMinusExpression(sym(2).Expression); node->minusToken = loc(1); sym(1).Node = node; } break; -#line 2523 "qmljs.g" +#line 2604 "qmljs.g" - case 289: { + case 295: { AST::TildeExpression *node = new (pool) AST::TildeExpression(sym(2).Expression); node->tildeToken = loc(1); sym(1).Node = node; } break; -#line 2532 "qmljs.g" +#line 2613 "qmljs.g" - case 290: { + case 296: { AST::NotExpression *node = new (pool) AST::NotExpression(sym(2).Expression); node->notToken = loc(1); sym(1).Node = node; } break; -#line 2543 "qmljs.g" +#line 2624 "qmljs.g" - case 292: { + case 298: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Exp, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2554 "qmljs.g" +#line 2635 "qmljs.g" - case 294: { + case 300: { 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; -#line 2563 "qmljs.g" +#line 2644 "qmljs.g" - case 295: { + case 301: { sym(1).ival = QSOperator::Mul; } break; -#line 2570 "qmljs.g" +#line 2651 "qmljs.g" - case 296: { + case 302: { sym(1).ival = QSOperator::Div; } break; -#line 2577 "qmljs.g" +#line 2658 "qmljs.g" - case 297: { + case 303: { sym(1).ival = QSOperator::Mod; } break; -#line 2586 "qmljs.g" +#line 2667 "qmljs.g" - case 299: { + case 305: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Add, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2595 "qmljs.g" +#line 2676 "qmljs.g" - case 300: { + case 306: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Sub, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2606 "qmljs.g" +#line 2687 "qmljs.g" - case 302: { + case 308: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::LShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2615 "qmljs.g" +#line 2696 "qmljs.g" - case 303: { + case 309: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::RShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2624 "qmljs.g" +#line 2705 "qmljs.g" - case 304: { + case 310: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::URShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2636 "qmljs.g" - case 307: Q_FALLTHROUGH(); -#line 2638 "qmljs.g" +#line 2717 "qmljs.g" + case 313: Q_FALLTHROUGH(); +#line 2719 "qmljs.g" - case 308: { + case 314: { 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; -#line 2647 "qmljs.g" +#line 2728 "qmljs.g" - case 309: { + case 315: { sym(1).ival = QSOperator::Lt; } break; -#line 2653 "qmljs.g" +#line 2734 "qmljs.g" - case 310: { + case 316: { sym(1).ival = QSOperator::Gt; } break; -#line 2659 "qmljs.g" +#line 2740 "qmljs.g" - case 311: { + case 317: { sym(1).ival = QSOperator::Le; } break; -#line 2665 "qmljs.g" +#line 2746 "qmljs.g" - case 312: { + case 318: { sym(1).ival = QSOperator::Ge; } break; -#line 2671 "qmljs.g" +#line 2752 "qmljs.g" - case 313: { + case 319: { sym(1).ival = QSOperator::InstanceOf; } break; -#line 2678 "qmljs.g" +#line 2758 "qmljs.g" - case 314: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); - node->operatorToken = loc(2); - sym(1).Node = node; + case 320: { + sym(1).ival = QSOperator::As; } break; -#line 2687 "qmljs.g" - case 315: Q_FALLTHROUGH(); -#line 2689 "qmljs.g" +#line 2765 "qmljs.g" - case 316: { - AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::As, sym(3).Expression); + case 321: { + AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2704 "qmljs.g" - case 321: Q_FALLTHROUGH(); -#line 2706 "qmljs.g" +#line 2777 "qmljs.g" + case 324: Q_FALLTHROUGH(); +#line 2779 "qmljs.g" - case 322: { + case 325: { 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; -#line 2715 "qmljs.g" +#line 2788 "qmljs.g" - case 323: { + case 326: { sym(1).ival = QSOperator::Equal; } break; -#line 2721 "qmljs.g" +#line 2794 "qmljs.g" - case 324: { + case 327: { sym(1).ival = QSOperator::NotEqual; } break; -#line 2727 "qmljs.g" +#line 2800 "qmljs.g" - case 325: { + case 328: { sym(1).ival = QSOperator::StrictEqual; } break; -#line 2733 "qmljs.g" +#line 2806 "qmljs.g" - case 326: { + case 329: { sym(1).ival = QSOperator::StrictNotEqual; } break; -#line 2744 "qmljs.g" - case 329: Q_FALLTHROUGH(); -#line 2746 "qmljs.g" +#line 2817 "qmljs.g" + case 332: Q_FALLTHROUGH(); +#line 2819 "qmljs.g" - case 330: { + case 333: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2759 "qmljs.g" - case 333: Q_FALLTHROUGH(); -#line 2761 "qmljs.g" +#line 2832 "qmljs.g" + case 336: Q_FALLTHROUGH(); +#line 2834 "qmljs.g" - case 334: { + case 337: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitXor, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2773 "qmljs.g" - case 337: Q_FALLTHROUGH(); -#line 2775 "qmljs.g" +#line 2846 "qmljs.g" + case 340: Q_FALLTHROUGH(); +#line 2848 "qmljs.g" - case 338: { + case 341: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitOr, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2787 "qmljs.g" - case 341: Q_FALLTHROUGH(); -#line 2789 "qmljs.g" +#line 2860 "qmljs.g" + case 344: Q_FALLTHROUGH(); +#line 2862 "qmljs.g" - case 342: { + case 345: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::And, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2801 "qmljs.g" - case 345: Q_FALLTHROUGH(); -#line 2803 "qmljs.g" +#line 2874 "qmljs.g" + case 348: Q_FALLTHROUGH(); +#line 2876 "qmljs.g" - case 346: { + case 349: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Or, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -#line 2815 "qmljs.g" - case 349: Q_FALLTHROUGH(); -#line 2817 "qmljs.g" +#line 2888 "qmljs.g" + case 352: Q_FALLTHROUGH(); +#line 2890 "qmljs.g" - case 350: { + case 353: { auto *lhs = sym(1).Expression; auto *rhs = sym(3).Expression; @@ -1996,22 +2065,25 @@ case 241: { sym(1).Node = node; } break; -#line 2851 "qmljs.g" - case 353: Q_FALLTHROUGH(); -#line 2853 "qmljs.g" +#line 2924 "qmljs.g" + case 356: Q_FALLTHROUGH(); +#line 2926 "qmljs.g" - case 354: { + case 357: { 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; -#line 2872 "qmljs.g" - case 361: Q_FALLTHROUGH(); -#line 2874 "qmljs.g" +#line 2945 "qmljs.g" + case 364: Q_FALLTHROUGH(); +#line 2947 "qmljs.g" - case 362: { + case 365: { + if (sym(1).Expression->containsOptionalChain()) { + syntaxError(loc(1), QStringLiteral("Optional chains are not permitted on the left-hand-side in assignments")); + } // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral if (AST::Pattern *p = sym(1).Expression->patternCast()) { SourceLocation errorLoc; @@ -2036,208 +2108,211 @@ case 241: { sym(1).Node = node; } break; -#line 2902 "qmljs.g" - case 363: Q_FALLTHROUGH(); -#line 2904 "qmljs.g" +#line 2978 "qmljs.g" + case 366: Q_FALLTHROUGH(); +#line 2980 "qmljs.g" - case 364: { + case 367: { + if (sym(1).Expression->containsOptionalChain()) { + syntaxError(loc(1), QStringLiteral("Optional chains are not permitted on the left-hand-side in assignments")); + } 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; -#line 2913 "qmljs.g" +#line 2992 "qmljs.g" - case 365: { + case 368: { sym(1).ival = QSOperator::InplaceMul; } break; -#line 2920 "qmljs.g" +#line 2999 "qmljs.g" - case 366: { + case 369: { sym(1).ival = QSOperator::InplaceExp; } break; -#line 2927 "qmljs.g" +#line 3006 "qmljs.g" - case 367: { + case 370: { sym(1).ival = QSOperator::InplaceDiv; } break; -#line 2934 "qmljs.g" +#line 3013 "qmljs.g" - case 368: { + case 371: { sym(1).ival = QSOperator::InplaceMod; } break; -#line 2941 "qmljs.g" +#line 3020 "qmljs.g" - case 369: { + case 372: { sym(1).ival = QSOperator::InplaceAdd; } break; -#line 2948 "qmljs.g" +#line 3027 "qmljs.g" - case 370: { + case 373: { sym(1).ival = QSOperator::InplaceSub; } break; -#line 2955 "qmljs.g" +#line 3034 "qmljs.g" - case 371: { + case 374: { sym(1).ival = QSOperator::InplaceLeftShift; } break; -#line 2962 "qmljs.g" +#line 3041 "qmljs.g" - case 372: { + case 375: { sym(1).ival = QSOperator::InplaceRightShift; } break; -#line 2969 "qmljs.g" +#line 3048 "qmljs.g" - case 373: { + case 376: { sym(1).ival = QSOperator::InplaceURightShift; } break; -#line 2976 "qmljs.g" +#line 3055 "qmljs.g" - case 374: { + case 377: { sym(1).ival = QSOperator::InplaceAnd; } break; -#line 2983 "qmljs.g" +#line 3062 "qmljs.g" - case 375: { + case 378: { sym(1).ival = QSOperator::InplaceXor; } break; -#line 2990 "qmljs.g" +#line 3069 "qmljs.g" - case 376: { + case 379: { sym(1).ival = QSOperator::InplaceOr; } break; -#line 3000 "qmljs.g" - case 379: Q_FALLTHROUGH(); -#line 3002 "qmljs.g" +#line 3079 "qmljs.g" + case 382: Q_FALLTHROUGH(); +#line 3081 "qmljs.g" - case 380: { + case 383: { AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -#line 3011 "qmljs.g" - case 381: Q_FALLTHROUGH(); -#line 3013 "qmljs.g" +#line 3090 "qmljs.g" + case 384: Q_FALLTHROUGH(); +#line 3092 "qmljs.g" - case 382: { + case 385: { sym(1).Node = nullptr; } break; -#line 3025 "qmljs.g" +#line 3104 "qmljs.g" - case 385: { + case 388: { sym(1).Node = sym(3).Node; } break; -#line 3032 "qmljs.g" - case 386: Q_FALLTHROUGH(); -#line 3034 "qmljs.g" - case 387: Q_FALLTHROUGH(); -#line 3036 "qmljs.g" - case 388: Q_FALLTHROUGH(); -#line 3038 "qmljs.g" +#line 3111 "qmljs.g" case 389: Q_FALLTHROUGH(); -#line 3040 "qmljs.g" +#line 3113 "qmljs.g" case 390: Q_FALLTHROUGH(); -#line 3042 "qmljs.g" +#line 3115 "qmljs.g" case 391: Q_FALLTHROUGH(); -#line 3044 "qmljs.g" +#line 3117 "qmljs.g" case 392: Q_FALLTHROUGH(); -#line 3046 "qmljs.g" +#line 3119 "qmljs.g" case 393: Q_FALLTHROUGH(); -#line 3048 "qmljs.g" +#line 3121 "qmljs.g" case 394: Q_FALLTHROUGH(); -#line 3050 "qmljs.g" +#line 3123 "qmljs.g" case 395: Q_FALLTHROUGH(); -#line 3052 "qmljs.g" +#line 3125 "qmljs.g" case 396: Q_FALLTHROUGH(); -#line 3054 "qmljs.g" +#line 3127 "qmljs.g" case 397: Q_FALLTHROUGH(); -#line 3056 "qmljs.g" +#line 3129 "qmljs.g" + case 398: Q_FALLTHROUGH(); +#line 3131 "qmljs.g" + case 399: Q_FALLTHROUGH(); +#line 3133 "qmljs.g" + case 400: Q_FALLTHROUGH(); +#line 3135 "qmljs.g" - case 398: { + case 401: { sym(1).Node = sym(2).Node; } break; -#line 3078 "qmljs.g" +#line 3157 "qmljs.g" - case 409: { + case 412: { AST::Block *node = new (pool) AST::Block(sym(2).StatementList); node->lbraceToken = loc(1); node->rbraceToken = loc(3); sym(1).Node = node; } break; -#line 3090 "qmljs.g" +#line 3169 "qmljs.g" - case 411: { + case 414: { sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList); } break; -#line 3097 "qmljs.g" +#line 3176 "qmljs.g" - case 412: { + case 415: { sym(1).StatementList = new (pool) AST::StatementList(sym(1).Statement); } break; -#line 3104 "qmljs.g" +#line 3183 "qmljs.g" - case 413: { + case 416: { sym(1).Node = new (pool) AST::StatementList(sym(3).FunctionDeclaration); } break; -#line 3111 "qmljs.g" +#line 3190 "qmljs.g" - case 414: { + case 417: { sym(1).Node = nullptr; } break; -#line 3118 "qmljs.g" +#line 3197 "qmljs.g" - case 415: { + case 418: { sym(1).Node = sym(1).StatementList->finish(); } break; -#line 3125 "qmljs.g" +#line 3204 "qmljs.g" - case 416: { + case 419: { sym(1).scope = AST::VariableScope::Let; } break; -#line 3131 "qmljs.g" +#line 3210 "qmljs.g" - case 417: { + case 420: { sym(1).scope = AST::VariableScope::Const; } break; -#line 3138 "qmljs.g" +#line 3217 "qmljs.g" - case 418: { + case 421: { sym(1).scope = AST::VariableScope::Var; } break; -#line 3145 "qmljs.g" - case 419: Q_FALLTHROUGH(); -#line 3147 "qmljs.g" - case 420: Q_FALLTHROUGH(); -#line 3149 "qmljs.g" - case 421: Q_FALLTHROUGH(); -#line 3151 "qmljs.g" +#line 3224 "qmljs.g" + case 422: Q_FALLTHROUGH(); +#line 3226 "qmljs.g" + case 423: Q_FALLTHROUGH(); +#line 3228 "qmljs.g" + case 424: Q_FALLTHROUGH(); +#line 3230 "qmljs.g" - case 422: { + case 425: { AST::VariableDeclarationList *declarations = sym(2).VariableDeclarationList->finish(sym(1).scope); for (auto it = declarations; it; it = it->next) { if (it->declaration && it->declaration->typeAnnotation) { @@ -2250,41 +2325,41 @@ case 241: { sym(1).Node = node; } break; -#line 3169 "qmljs.g" - case 424: Q_FALLTHROUGH(); -#line 3171 "qmljs.g" - case 425: Q_FALLTHROUGH(); -#line 3173 "qmljs.g" - case 426: Q_FALLTHROUGH(); -#line 3175 "qmljs.g" +#line 3248 "qmljs.g" + case 427: Q_FALLTHROUGH(); +#line 3250 "qmljs.g" + case 428: Q_FALLTHROUGH(); +#line 3252 "qmljs.g" + case 429: Q_FALLTHROUGH(); +#line 3254 "qmljs.g" - case 427: { + case 430: { sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).PatternElement); } break; -#line 3182 "qmljs.g" - case 428: Q_FALLTHROUGH(); -#line 3184 "qmljs.g" - case 429: Q_FALLTHROUGH(); -#line 3186 "qmljs.g" - case 430: Q_FALLTHROUGH(); -#line 3188 "qmljs.g" +#line 3261 "qmljs.g" + case 431: Q_FALLTHROUGH(); +#line 3263 "qmljs.g" + case 432: Q_FALLTHROUGH(); +#line 3265 "qmljs.g" + case 433: Q_FALLTHROUGH(); +#line 3267 "qmljs.g" - case 431: { + case 434: { AST::VariableDeclarationList *node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclarationList, sym(3).PatternElement); node->commaToken = loc(2); sym(1).Node = node; } break; -#line 3197 "qmljs.g" - case 432: Q_FALLTHROUGH(); -#line 3199 "qmljs.g" - case 433: Q_FALLTHROUGH(); -#line 3201 "qmljs.g" - case 434: Q_FALLTHROUGH(); -#line 3203 "qmljs.g" +#line 3276 "qmljs.g" + case 435: Q_FALLTHROUGH(); +#line 3278 "qmljs.g" + case 436: Q_FALLTHROUGH(); +#line 3280 "qmljs.g" + case 437: Q_FALLTHROUGH(); +#line 3282 "qmljs.g" - case 435: { + case 438: { auto *node = new (pool) AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression); node->identifierToken = loc(1); sym(1).Node = node; @@ -2295,23 +2370,23 @@ case 241: { c->name = stringRef(1); } break; -#line 3217 "qmljs.g" - case 436: Q_FALLTHROUGH(); -#line 3219 "qmljs.g" - case 437: Q_FALLTHROUGH(); -#line 3221 "qmljs.g" - case 438: Q_FALLTHROUGH(); -#line 3223 "qmljs.g" +#line 3296 "qmljs.g" + case 439: Q_FALLTHROUGH(); +#line 3298 "qmljs.g" + case 440: Q_FALLTHROUGH(); +#line 3300 "qmljs.g" + case 441: Q_FALLTHROUGH(); +#line 3302 "qmljs.g" - case 439: { + case 442: { auto *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression); node->identifierToken = loc(1); sym(1).Node = node; } break; -#line 3232 "qmljs.g" +#line 3311 "qmljs.g" - case 440: { + case 443: { auto *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList); node->lbraceToken = loc(1); node->rbraceToken = loc(3); @@ -2319,9 +2394,9 @@ case 241: { sym(1).Node = node; } break; -#line 3243 "qmljs.g" +#line 3322 "qmljs.g" - case 441: { + case 444: { auto *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList); node->lbracketToken = loc(1); node->rbracketToken = loc(3); @@ -2329,23 +2404,23 @@ case 241: { sym(1).Node = node; } break; -#line 3254 "qmljs.g" +#line 3333 "qmljs.g" - case 442: { + case 445: { sym(1).Node = nullptr; } break; -#line 3261 "qmljs.g" - case 443: -#line 3263 "qmljs.g" +#line 3340 "qmljs.g" + case 446: +#line 3342 "qmljs.g" - case 444: { + case 447: { sym(1).Node = sym(1).PatternPropertyList->finish(); } break; -#line 3270 "qmljs.g" +#line 3349 "qmljs.g" - case 445: { + case 448: { if (sym(1).Elision || sym(2).Node) { auto *l = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); sym(1).Node = l->finish(); @@ -2354,15 +2429,15 @@ case 241: { } } break; -#line 3282 "qmljs.g" +#line 3361 "qmljs.g" - case 446: { + case 449: { sym(1).Node = sym(1).PatternElementList->finish(); } break; -#line 3289 "qmljs.g" +#line 3368 "qmljs.g" - case 447: { + case 450: { 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); @@ -2371,33 +2446,33 @@ case 241: { sym(1).Node = sym(1).PatternElementList->finish(); } break; -#line 3301 "qmljs.g" +#line 3380 "qmljs.g" - case 448: { + case 451: { sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty); } break; -#line 3308 "qmljs.g" +#line 3387 "qmljs.g" - case 449: { + case 452: { sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty); } break; -#line 3317 "qmljs.g" +#line 3396 "qmljs.g" - case 451: { + case 454: { sym(1).PatternElementList = sym(1).PatternElementList->append(sym(3).PatternElementList); } break; -#line 3324 "qmljs.g" +#line 3403 "qmljs.g" - case 452: { + case 455: { sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement); } break; -#line 3332 "qmljs.g" +#line 3411 "qmljs.g" - case 453: { + case 456: { 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 @@ -2408,23 +2483,23 @@ case 241: { sym(1).Node = new (pool) AST::PatternProperty(name, stringRef(1), sym(2).Expression); } break; -#line 3346 "qmljs.g" +#line 3425 "qmljs.g" - case 454: { + case 457: { AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, stringRef(3), sym(4).Expression); sym(1).Node = node; } break; -#line 3354 "qmljs.g" +#line 3433 "qmljs.g" - case 455: { + case 458: { AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, sym(3).Pattern, sym(4).Expression); sym(1).Node = node; } break; -#line 3362 "qmljs.g" +#line 3441 "qmljs.g" - case 456: { + case 459: { AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression); node->identifierToken = loc(1); // if initializer is an anonymous function expression, we need to assign identifierref as it's name @@ -2435,45 +2510,45 @@ case 241: { sym(1).Node = node; } break; -#line 3376 "qmljs.g" +#line 3455 "qmljs.g" - case 457: { + case 460: { AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression); sym(1).Node = node; } break; -#line 3384 "qmljs.g" +#line 3463 "qmljs.g" - case 458: { + case 461: { AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(2), /*type annotation*/nullptr, nullptr, AST::PatternElement::RestElement); node->identifierToken = loc(2); sym(1).Node = node; } break; -#line 3393 "qmljs.g" +#line 3472 "qmljs.g" - case 459: { + case 462: { AST::PatternElement *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr, AST::PatternElement::RestElement); sym(1).Node = node; } break; -#line 3401 "qmljs.g" +#line 3480 "qmljs.g" - case 460: { + case 463: { sym(1).Node = nullptr; } break; -#line 3411 "qmljs.g" +#line 3490 "qmljs.g" - case 462: { + case 465: { AST::EmptyStatement *node = new (pool) AST::EmptyStatement(); node->semicolonToken = loc(1); sym(1).Node = node; } break; -#line 3426 "qmljs.g" +#line 3505 "qmljs.g" - case 463: { + case 466: { int token = lookaheadToken(lexer); if (token == T_LBRACE) pushToken(T_FORCE_BLOCK); @@ -2481,17 +2556,17 @@ case 241: { pushToken(T_FORCE_DECLARATION); } break; -#line 3437 "qmljs.g" +#line 3516 "qmljs.g" - case 464: { + case 467: { AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(sym(1).Expression); node->semicolonToken = loc(2); sym(1).Node = node; } break; -#line 3446 "qmljs.g" +#line 3525 "qmljs.g" - case 465: { + case 468: { AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement, sym(7).Statement); node->ifToken = loc(1); node->lparenToken = loc(2); @@ -2500,9 +2575,9 @@ case 241: { sym(1).Node = node; } break; -#line 3458 "qmljs.g" +#line 3537 "qmljs.g" - case 466: { + case 469: { AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement); node->ifToken = loc(1); node->lparenToken = loc(2); @@ -2510,9 +2585,9 @@ case 241: { sym(1).Node = node; } break; -#line 3471 "qmljs.g" +#line 3550 "qmljs.g" - case 468: { + case 471: { AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression); node->doToken = loc(1); node->whileToken = loc(3); @@ -2522,9 +2597,9 @@ case 241: { sym(1).Node = node; } break; -#line 3484 "qmljs.g" +#line 3563 "qmljs.g" - case 469: { + case 472: { AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement); node->whileToken = loc(1); node->lparenToken = loc(2); @@ -2532,9 +2607,9 @@ case 241: { sym(1).Node = node; } break; -#line 3495 "qmljs.g" +#line 3574 "qmljs.g" - case 470: { + case 473: { 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); @@ -2544,11 +2619,11 @@ case 241: { sym(1).Node = node; } break; -#line 3508 "qmljs.g" - case 471: Q_FALLTHROUGH(); -#line 3510 "qmljs.g" +#line 3587 "qmljs.g" + case 474: Q_FALLTHROUGH(); +#line 3589 "qmljs.g" - case 472: { + case 475: { // ### get rid of the static_cast! AST::ForStatement *node = new (pool) AST::ForStatement( static_cast<AST::VariableStatement *>(sym(3).Node)->declarations, sym(5).Expression, @@ -2561,21 +2636,21 @@ case 241: { sym(1).Node = node; } break; -#line 3526 "qmljs.g" +#line 3605 "qmljs.g" - case 473: { + case 476: { sym(1).forEachType = AST::ForEachType::In; } break; -#line 3533 "qmljs.g" +#line 3612 "qmljs.g" - case 474: { + case 477: { sym(1).forEachType = AST::ForEachType::Of; } break; -#line 3540 "qmljs.g" +#line 3619 "qmljs.g" - case 475: { + case 478: { // need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral if (AST::Pattern *p = sym(3).Expression->patternCast()) { SourceLocation errorLoc; @@ -2594,9 +2669,9 @@ case 241: { sym(1).Node = node; } break; -#line 3562 "qmljs.g" +#line 3641 "qmljs.g" - case 476: { + case 479: { AST::ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).PatternElement, sym(5).Expression, sym(7).Statement); node->forToken = loc(1); node->lparenToken = loc(2); @@ -2606,11 +2681,11 @@ case 241: { sym(1).Node = node; } break; -#line 3575 "qmljs.g" - case 477: Q_FALLTHROUGH(); -#line 3577 "qmljs.g" +#line 3654 "qmljs.g" + case 480: Q_FALLTHROUGH(); +#line 3656 "qmljs.g" - case 478: { + case 481: { if (auto typeAnnotation = sym(3).TypeAnnotation) { syntaxError(typeAnnotation->firstSourceLocation(), "Type annotations are not permitted in variable declarations"); return false; @@ -2622,29 +2697,29 @@ case 241: { sym(1).Node = node; } break; -#line 3592 "qmljs.g" - case 479: Q_FALLTHROUGH(); -#line 3594 "qmljs.g" +#line 3671 "qmljs.g" + case 482: Q_FALLTHROUGH(); +#line 3673 "qmljs.g" - case 480: { + case 483: { auto *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr); node->scope = sym(1).scope; node->isForDeclaration = true; sym(1).Node = node; } break; -#line 3604 "qmljs.g" +#line 3683 "qmljs.g" - case 481: { + case 484: { AST::ContinueStatement *node = new (pool) AST::ContinueStatement(); node->continueToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -#line 3614 "qmljs.g" +#line 3693 "qmljs.g" - case 482: { + case 485: { AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2)); node->continueToken = loc(1); node->identifierToken = loc(2); @@ -2652,18 +2727,18 @@ case 241: { sym(1).Node = node; } break; -#line 3625 "qmljs.g" +#line 3704 "qmljs.g" - case 483: { + case 486: { AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringView()); node->breakToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -#line 3635 "qmljs.g" +#line 3714 "qmljs.g" - case 484: { + case 487: { AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2)); node->breakToken = loc(1); node->identifierToken = loc(2); @@ -2671,9 +2746,9 @@ case 241: { sym(1).Node = node; } break; -#line 3646 "qmljs.g" +#line 3725 "qmljs.g" - case 485: { + case 488: { if (!functionNestingLevel) { syntaxError(loc(1), "Return statement not allowed outside of Function declaration."); return false; @@ -2684,9 +2759,9 @@ case 241: { sym(1).Node = node; } break; -#line 3660 "qmljs.g" +#line 3739 "qmljs.g" - case 486: { + case 489: { AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement); node->withToken = loc(1); node->lparenToken = loc(2); @@ -2694,9 +2769,9 @@ case 241: { sym(1).Node = node; } break; -#line 3671 "qmljs.g" +#line 3750 "qmljs.g" - case 487: { + case 490: { AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock); node->switchToken = loc(1); node->lparenToken = loc(2); @@ -2704,118 +2779,118 @@ case 241: { sym(1).Node = node; } break; -#line 3682 "qmljs.g" +#line 3761 "qmljs.g" - case 488: { + case 491: { AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses); node->lbraceToken = loc(1); node->rbraceToken = loc(3); sym(1).Node = node; } break; -#line 3692 "qmljs.g" +#line 3771 "qmljs.g" - case 489: { + case 492: { 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; -#line 3702 "qmljs.g" +#line 3781 "qmljs.g" - case 490: { + case 493: { sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause); } break; -#line 3709 "qmljs.g" +#line 3788 "qmljs.g" - case 491: { + case 494: { sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause); } break; -#line 3716 "qmljs.g" +#line 3795 "qmljs.g" - case 492: { + case 495: { sym(1).Node = nullptr; } break; -#line 3723 "qmljs.g" +#line 3802 "qmljs.g" - case 493: { + case 496: { sym(1).Node = sym(1).CaseClauses->finish(); } break; -#line 3730 "qmljs.g" +#line 3809 "qmljs.g" - case 494: { + case 497: { 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; -#line 3740 "qmljs.g" +#line 3819 "qmljs.g" - case 495: { + case 498: { AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList); node->defaultToken = loc(1); node->colonToken = loc(2); sym(1).Node = node; } break; -#line 3750 "qmljs.g" +#line 3829 "qmljs.g" - case 496: { + case 499: { 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; -#line 3762 "qmljs.g" +#line 3841 "qmljs.g" - case 498: { + case 501: { syntaxError(loc(3), "FunctionDeclarations are not allowed after a label."); return false; } break; -#line 3770 "qmljs.g" +#line 3849 "qmljs.g" - case 499: { + case 502: { AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression); node->throwToken = loc(1); node->semicolonToken = loc(3); sym(1).Node = node; } break; -#line 3780 "qmljs.g" +#line 3859 "qmljs.g" - case 500: { + case 503: { AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch); node->tryToken = loc(1); sym(1).Node = node; } break; -#line 3789 "qmljs.g" +#line 3868 "qmljs.g" - case 501: { + case 504: { AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally); node->tryToken = loc(1); sym(1).Node = node; } break; -#line 3798 "qmljs.g" +#line 3877 "qmljs.g" - case 502: { + case 505: { 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; -#line 3807 "qmljs.g" +#line 3886 "qmljs.g" - case 503: { + case 506: { AST::Catch *node = new (pool) AST::Catch(sym(3).PatternElement, sym(5).Block); node->catchToken = loc(1); node->lparenToken = loc(2); @@ -2824,43 +2899,43 @@ case 241: { sym(1).Node = node; } break; -#line 3819 "qmljs.g" +#line 3898 "qmljs.g" - case 504: { + case 507: { AST::Finally *node = new (pool) AST::Finally(sym(2).Block); node->finallyToken = loc(1); sym(1).Node = node; } break; -#line 3828 "qmljs.g" +#line 3907 "qmljs.g" - case 505: { + case 508: { AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(1)); node->identifierToken = loc(1); node->scope = AST::VariableScope::Let; sym(1).Node = node; } break; -#line 3838 "qmljs.g" +#line 3917 "qmljs.g" - case 506: { + case 509: { AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern); node->scope = AST::VariableScope::Let; sym(1).Node = node; } break; -#line 3847 "qmljs.g" +#line 3926 "qmljs.g" - case 507: { + case 510: { AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement(); node->debuggerToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -#line 3864 "qmljs.g" +#line 3943 "qmljs.g" - case 509: { + case 512: { 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, @@ -2874,9 +2949,9 @@ case 241: { sym(1).Node = node; } break; -#line 3881 "qmljs.g" +#line 3960 "qmljs.g" - case 510: { + case 513: { AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList, sym(6).TypeAnnotation); node->functionToken = loc(1); @@ -2888,9 +2963,9 @@ case 241: { sym(1).Node = node; } break; -#line 3897 "qmljs.g" +#line 3976 "qmljs.g" - case 512: { + case 515: { if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList)) return false; AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(QStringView(), sym(3).FormalParameterList, sym(7).StatementList, @@ -2903,9 +2978,9 @@ case 241: { sym(1).Node = node; } break; -#line 3913 "qmljs.g" +#line 3992 "qmljs.g" - case 513: { + case 516: { 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, @@ -2920,9 +2995,9 @@ case 241: { sym(1).Node = node; } break; -#line 3931 "qmljs.g" +#line 4010 "qmljs.g" - case 514: { + case 517: { if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList)) return false; AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringView(), sym(3).FormalParameterList, sym(7).StatementList, @@ -2935,102 +3010,101 @@ case 241: { sym(1).Node = node; } break; -#line 3949 "qmljs.g" +#line 4028 "qmljs.g" - case 516: { + case 519: { sym(1).Node = nullptr; } break; -#line 3956 "qmljs.g" +#line 4035 "qmljs.g" - case 517: { + case 520: { AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement))->finish(pool); sym(1).Node = node; } break; -#line 3964 "qmljs.g" - case 518: -#line 3966 "qmljs.g" +#line 4043 "qmljs.g" + case 521: +#line 4045 "qmljs.g" - case 519: { + case 522: { sym(1).Node = sym(1).FormalParameterList->finish(pool); } break; -#line 3973 "qmljs.g" +#line 4052 "qmljs.g" - case 520: { + case 523: { AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement))->finish(pool); sym(1).Node = node; } break; -#line 3981 "qmljs.g" +#line 4060 "qmljs.g" - case 521: { + case 524: { AST::FormalParameterList *node = new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement); sym(1).Node = node; } break; -#line 3990 "qmljs.g" +#line 4069 "qmljs.g" - case 522: { + case 525: { AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement); sym(1).Node = node; } break; -#line 4000 "qmljs.g" +#line 4079 "qmljs.g" - case 524: { + case 527: { ++functionNestingLevel; } break; -#line 4007 "qmljs.g" +#line 4086 "qmljs.g" - case 525: { + case 528: { --functionNestingLevel; } break; -#line 4017 "qmljs.g" - case 527: Q_FALLTHROUGH(); -#line 4019 "qmljs.g" +#line 4096 "qmljs.g" + case 530: Q_FALLTHROUGH(); +#line 4098 "qmljs.g" - case 528: { + case 531: { AST::ReturnStatement *ret = new (pool) AST::ReturnStatement(sym(4).Expression); - ret->returnToken = sym(4).Node->firstSourceLocation().zeroLength(); - ret->semicolonToken = sym(4).Node->lastSourceLocation().zeroLengthEnd(driver->code()); + ret->returnToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); + ret->semicolonToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation(driver->code()); AST::StatementList *statements = (new (pool) AST::StatementList(ret))->finish(); - AST::FunctionExpression *f = new (pool) - AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, statements); + AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, statements); f->isArrowFunction = true; - f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().zeroLength() : loc(1).zeroLength(); - f->lbraceToken = sym(4).Node->firstSourceLocation().zeroLength(); - f->rbraceToken = sym(4).Node->lastSourceLocation().zeroLengthEnd(driver->code()); + f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); + f->lbraceToken = sym(4).Node->firstSourceLocation().startZeroLengthLocation(); + f->rbraceToken = sym(4).Node->lastSourceLocation().endZeroLengthLocation(driver->code()); sym(1).Node = f; } break; -#line 4036 "qmljs.g" - case 529: Q_FALLTHROUGH(); -#line 4038 "qmljs.g" +#line 4114 "qmljs.g" + case 532: Q_FALLTHROUGH(); +#line 4116 "qmljs.g" - case 530: { + case 533: { AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringView(), sym(1).FormalParameterList, sym(6).StatementList); f->isArrowFunction = true; - f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().zeroLength() : loc(1).zeroLength(); - f->lbraceToken = loc(5); + f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation().startZeroLengthLocation() : loc(1).startZeroLengthLocation(); + f->lbraceToken = loc(6); f->rbraceToken = loc(7); sym(1).Node = f; } break; -#line 4050 "qmljs.g" +#line 4128 "qmljs.g" - case 531: { + case 534: { AST::PatternElement *e = new (pool) AST::PatternElement(stringRef(1), /*type annotation*/nullptr, nullptr, AST::PatternElement::Binding); e->identifierToken = loc(1); sym(1).FormalParameterList = (new (pool) AST::FormalParameterList(nullptr, e))->finish(pool); } break; -#line 4061 "qmljs.g" +#line 4139 "qmljs.g" - case 532: { + case 535: { if (coverExpressionType != CE_FormalParameterList) { AST::NestedExpression *ne = static_cast<AST::NestedExpression *>(sym(1).Node); AST::FormalParameterList *list = ne->expression->reparseAsFormalParameterList(pool); @@ -3042,16 +3116,16 @@ case 241: { } } break; -#line 4079 "qmljs.g" +#line 4157 "qmljs.g" - case 533: { + case 536: { if (lookaheadToken(lexer) == T_LBRACE) pushToken(T_FORCE_BLOCK); } break; -#line 4087 "qmljs.g" +#line 4165 "qmljs.g" - case 534: { + case 537: { 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); @@ -3065,9 +3139,9 @@ case 241: { sym(1).Node = node; } break; -#line 4104 "qmljs.g" +#line 4182 "qmljs.g" - case 535: { + case 538: { 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); @@ -3082,9 +3156,9 @@ case 241: { sym(1).Node = node; } break; -#line 4123 "qmljs.g" +#line 4201 "qmljs.g" - case 536: { + case 539: { if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, /*formals*/nullptr)) return false; AST::FunctionExpression *f = new (pool) AST::FunctionExpression(stringRef(2), nullptr, sym(7).StatementList); @@ -3098,9 +3172,9 @@ case 241: { sym(1).Node = node; } break; -#line 4140 "qmljs.g" +#line 4218 "qmljs.g" - case 537: { + case 540: { 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); @@ -3114,29 +3188,29 @@ case 241: { sym(1).Node = node; } break; -#line 4158 "qmljs.g" +#line 4236 "qmljs.g" - case 538: { + case 541: { AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement))->finish(pool); sym(1).Node = node; } break; -#line 4166 "qmljs.g" +#line 4244 "qmljs.g" - case 539: { + case 542: { lexer->enterGeneratorBody(); } break; -#line 4173 "qmljs.g" +#line 4251 "qmljs.g" - case 540: { + case 543: { --functionNestingLevel; lexer->leaveGeneratorBody(); } break; -#line 4183 "qmljs.g" +#line 4261 "qmljs.g" - case 542: { + case 545: { AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).StatementList); node->functionToken = loc(1); node->identifierToken = loc(2); @@ -3148,9 +3222,9 @@ case 241: { sym(1).Node = node; } break; -#line 4199 "qmljs.g" +#line 4277 "qmljs.g" - case 544: { + case 547: { AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(QStringView(), sym(3).FormalParameterList, sym(6).StatementList); node->functionToken = loc(1); node->lparenToken = loc(2); @@ -3161,9 +3235,9 @@ case 241: { sym(1).Node = node; } break; -#line 4213 "qmljs.g" +#line 4291 "qmljs.g" - case 545: { + case 548: { AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).StatementList); node->functionToken = loc(1); if (!stringRef(2).isNull()) @@ -3176,9 +3250,9 @@ case 241: { sym(1).Node = node; } break; -#line 4229 "qmljs.g" +#line 4307 "qmljs.g" - case 546: { + case 549: { AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringView(), sym(3).FormalParameterList, sym(6).StatementList); node->functionToken = loc(1); node->lparenToken = loc(2); @@ -3189,40 +3263,40 @@ case 241: { sym(1).Node = node; } break; -#line 4245 "qmljs.g" - case 548: Q_FALLTHROUGH(); -#line 4247 "qmljs.g" +#line 4323 "qmljs.g" + case 551: Q_FALLTHROUGH(); +#line 4325 "qmljs.g" - case 549: { + case 552: { AST::YieldExpression *node = new (pool) AST::YieldExpression(); node->yieldToken = loc(1); sym(1).Node = node; } break; -#line 4256 "qmljs.g" - case 550: Q_FALLTHROUGH(); -#line 4258 "qmljs.g" +#line 4334 "qmljs.g" + case 553: Q_FALLTHROUGH(); +#line 4336 "qmljs.g" - case 551: { + case 554: { AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(3).Expression); node->yieldToken = loc(1); node->isYieldStar = true; sym(1).Node = node; } break; -#line 4268 "qmljs.g" - case 552: Q_FALLTHROUGH(); -#line 4270 "qmljs.g" +#line 4346 "qmljs.g" + case 555: Q_FALLTHROUGH(); +#line 4348 "qmljs.g" - case 553: { + case 556: { AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(2).Expression); node->yieldToken = loc(1); sym(1).Node = node; } break; -#line 4280 "qmljs.g" +#line 4358 "qmljs.g" - case 554: { + case 557: { AST::ClassDeclaration *node = new (pool) AST::ClassDeclaration(stringRef(2), sym(3).Expression, sym(5).ClassElementList); node->classToken = loc(1); node->identifierToken = loc(2); @@ -3231,9 +3305,9 @@ case 241: { sym(1).Node = node; } break; -#line 4292 "qmljs.g" +#line 4370 "qmljs.g" - case 555: { + case 558: { AST::ClassExpression *node = new (pool) AST::ClassExpression(stringRef(2), sym(3).Expression, sym(5).ClassElementList); node->classToken = loc(1); node->identifierToken = loc(2); @@ -3242,9 +3316,9 @@ case 241: { sym(1).Node = node; } break; -#line 4304 "qmljs.g" +#line 4382 "qmljs.g" - case 556: { + case 559: { AST::ClassDeclaration *node = new (pool) AST::ClassDeclaration(QStringView(), sym(2).Expression, sym(4).ClassElementList); node->classToken = loc(1); node->lbraceToken = loc(3); @@ -3252,9 +3326,9 @@ case 241: { sym(1).Node = node; } break; -#line 4315 "qmljs.g" +#line 4393 "qmljs.g" - case 557: { + case 560: { AST::ClassExpression *node = new (pool) AST::ClassExpression(QStringView(), sym(2).Expression, sym(4).ClassElementList); node->classToken = loc(1); node->lbraceToken = loc(3); @@ -3262,48 +3336,48 @@ case 241: { sym(1).Node = node; } break; -#line 4328 "qmljs.g" +#line 4406 "qmljs.g" - case 559: { + case 562: { lexer->setStaticIsKeyword(true); } break; -#line 4335 "qmljs.g" - case 560: -#line 4337 "qmljs.g" +#line 4413 "qmljs.g" + case 563: +#line 4415 "qmljs.g" - case 561: { + case 564: { lexer->setStaticIsKeyword(false); } break; -#line 4344 "qmljs.g" +#line 4422 "qmljs.g" - case 562: { + case 565: { sym(1).Node = nullptr; } break; -#line 4351 "qmljs.g" +#line 4429 "qmljs.g" - case 563: { + case 566: { sym(1).Node = sym(2).Node; } break; -#line 4358 "qmljs.g" +#line 4436 "qmljs.g" - case 564: { + case 567: { sym(1).Node = nullptr; } break; -#line 4365 "qmljs.g" +#line 4443 "qmljs.g" - case 565: { + case 568: { if (sym(1).Node) sym(1).Node = sym(1).ClassElementList->finish(); } break; -#line 4375 "qmljs.g" +#line 4453 "qmljs.g" - case 567: { + case 570: { if (sym(1).Node) { if (sym(2).Node) sym(1).ClassElementList = sym(1).ClassElementList->append(sym(2).ClassElementList); @@ -3312,246 +3386,246 @@ case 241: { } } break; -#line 4387 "qmljs.g" +#line 4465 "qmljs.g" - case 568: { + case 571: { AST::ClassElementList *node = new (pool) AST::ClassElementList(sym(1).PatternProperty, false); sym(1).Node = node; } break; -#line 4395 "qmljs.g" +#line 4473 "qmljs.g" - case 569: { + case 572: { lexer->setStaticIsKeyword(true); AST::ClassElementList *node = new (pool) AST::ClassElementList(sym(2).PatternProperty, true); sym(1).Node = node; } break; -#line 4404 "qmljs.g" +#line 4482 "qmljs.g" - case 570: { + case 573: { sym(1).Node = nullptr; } break; -#line 4413 "qmljs.g" +#line 4491 "qmljs.g" - case 571: { + case 574: { sym(1).Node = nullptr; } break; -#line 4422 "qmljs.g" +#line 4500 "qmljs.g" - case 573: { + case 576: { sym(1).Node = new (pool) AST::Program(sym(1).StatementList->finish()); } break; -#line 4429 "qmljs.g" - case 574: { +#line 4507 "qmljs.g" + case 577: { sym(1).Node = new (pool) AST::ESModule(sym(1).StatementList); } break; -#line 4435 "qmljs.g" +#line 4513 "qmljs.g" - case 575: { + case 578: { sym(1).StatementList = sym(1).StatementList->finish(); } break; -#line 4442 "qmljs.g" +#line 4520 "qmljs.g" - case 576: { + case 579: { sym(1).StatementList = nullptr; } break; -#line 4452 "qmljs.g" +#line 4530 "qmljs.g" - case 579: { + case 582: { sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList); } break; -#line 4460 "qmljs.g" - case 580: Q_FALLTHROUGH(); -#line 4462 "qmljs.g" +#line 4538 "qmljs.g" + case 583: Q_FALLTHROUGH(); +#line 4540 "qmljs.g" - case 581: { + case 584: { sym(1).StatementList = new (pool) AST::StatementList(sym(1).Node); } break; -#line 4471 "qmljs.g" +#line 4549 "qmljs.g" - case 583: { + case 586: { auto decl = new (pool) AST::ImportDeclaration(sym(2).ImportClause, sym(3).FromClause); decl->importToken = loc(1); sym(1).Node = decl; } break; -#line 4479 "qmljs.g" +#line 4557 "qmljs.g" - case 584: { + case 587: { auto decl = new (pool) AST::ImportDeclaration(stringRef(2)); decl->importToken = loc(1); decl->moduleSpecifierToken = loc(2); sym(1).Node = decl; } break; -#line 4489 "qmljs.g" +#line 4567 "qmljs.g" - case 585: { + case 588: { auto clause = new (pool) AST::ImportClause(stringRef(1)); clause->importedDefaultBindingToken = loc(1); sym(1).ImportClause = clause; } break; -#line 4497 "qmljs.g" +#line 4575 "qmljs.g" - case 586: { + case 589: { sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NameSpaceImport); } break; -#line 4503 "qmljs.g" +#line 4581 "qmljs.g" - case 587: { + case 590: { sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NamedImports); } break; -#line 4509 "qmljs.g" +#line 4587 "qmljs.g" - case 588: { + case 591: { auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NameSpaceImport); importClause->importedDefaultBindingToken = loc(1); sym(1).ImportClause = importClause; } break; -#line 4517 "qmljs.g" +#line 4595 "qmljs.g" - case 589: { + case 592: { auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NamedImports); importClause->importedDefaultBindingToken = loc(1); sym(1).ImportClause = importClause; } break; -#line 4528 "qmljs.g" +#line 4606 "qmljs.g" - case 591: { + case 594: { auto import = new (pool) AST::NameSpaceImport(stringRef(3)); import->starToken = loc(1); import->importedBindingToken = loc(3); sym(1).NameSpaceImport = import; } break; -#line 4538 "qmljs.g" +#line 4616 "qmljs.g" - case 592: { + case 595: { auto namedImports = new (pool) AST::NamedImports(); namedImports->leftBraceToken = loc(1); namedImports->rightBraceToken = loc(2); sym(1).NamedImports = namedImports; } break; -#line 4547 "qmljs.g" +#line 4625 "qmljs.g" - case 593: { + case 596: { auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish()); namedImports->leftBraceToken = loc(1); namedImports->rightBraceToken = loc(3); sym(1).NamedImports = namedImports; } break; -#line 4556 "qmljs.g" +#line 4634 "qmljs.g" - case 594: { + case 597: { auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish()); namedImports->leftBraceToken = loc(1); namedImports->rightBraceToken = loc(4); sym(1).NamedImports = namedImports; } break; -#line 4566 "qmljs.g" +#line 4644 "qmljs.g" - case 595: { + case 598: { auto clause = new (pool) AST::FromClause(stringRef(2)); clause->fromToken = loc(1); clause->moduleSpecifierToken = loc(2); sym(1).FromClause = clause; } break; -#line 4576 "qmljs.g" +#line 4654 "qmljs.g" - case 596: { + case 599: { auto importsList = new (pool) AST::ImportsList(sym(1).ImportSpecifier); importsList->importSpecifierToken = loc(1); sym(1).ImportsList = importsList; } break; -#line 4584 "qmljs.g" +#line 4662 "qmljs.g" - case 597: { + case 600: { auto importsList = new (pool) AST::ImportsList(sym(1).ImportsList, sym(3).ImportSpecifier); importsList->importSpecifierToken = loc(3); sym(1).ImportsList = importsList; } break; -#line 4596 "qmljs.g" +#line 4674 "qmljs.g" - case 598: { + case 601: { auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1)); importSpecifier->importedBindingToken = loc(1); sym(1).ImportSpecifier = importSpecifier; } break; -#line 4604 "qmljs.g" +#line 4682 "qmljs.g" - case 599: { + case 602: { auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1), stringRef(3)); importSpecifier->identifierToken = loc(1); importSpecifier->importedBindingToken = loc(3); sym(1).ImportSpecifier = importSpecifier; } break; -#line 4621 "qmljs.g" +#line 4699 "qmljs.g" - case 602: { + case 605: { int token = lookaheadToken(lexer); if (token == T_FUNCTION || token == T_FUNCTION_STAR || token == T_CLASS) pushToken(T_FORCE_DECLARATION); } break; -#line 4630 "qmljs.g" +#line 4708 "qmljs.g" - case 603: { + case 606: { auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(3).FromClause); exportDeclaration->exportToken = loc(1); sym(1).ExportDeclaration = exportDeclaration; } break; -#line 4638 "qmljs.g" +#line 4716 "qmljs.g" - case 604: { + case 607: { auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause, sym(3).FromClause); exportDeclaration->exportToken = loc(1); sym(1).ExportDeclaration = exportDeclaration; } break; -#line 4646 "qmljs.g" +#line 4724 "qmljs.g" - case 605: { + case 608: { auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause); exportDeclaration->exportToken = loc(1); sym(1).ExportDeclaration = exportDeclaration; } break; -#line 4654 "qmljs.g" - case 606: Q_FALLTHROUGH(); -#line 4656 "qmljs.g" +#line 4732 "qmljs.g" + case 609: Q_FALLTHROUGH(); +#line 4734 "qmljs.g" - case 607: { + case 610: { auto exportDeclaration = new (pool) AST::ExportDeclaration(/*exportDefault=*/false, sym(2).Node); exportDeclaration->exportToken = loc(1); sym(1).ExportDeclaration = exportDeclaration; } break; -#line 4664 "qmljs.g" +#line 4742 "qmljs.g" - case 608: { + case 611: { if (auto *f = AST::cast<AST::FunctionDeclaration*>(sym(5).Node)) { if (f->name.isEmpty()) { f->name = stringRef(2); @@ -3560,9 +3634,9 @@ case 241: { } } Q_FALLTHROUGH(); -#line 4675 "qmljs.g" +#line 4753 "qmljs.g" - case 609: { + case 612: { // Emulate 15.2.3.11 if (auto *cls = AST::cast<AST::ClassDeclaration*>(sym(5).Node)) { if (cls->name.isEmpty()) { @@ -3576,9 +3650,9 @@ case 241: { sym(1).ExportDeclaration = exportDeclaration; } break; -#line 4691 "qmljs.g" +#line 4769 "qmljs.g" - case 610: { + case 613: { // 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); @@ -3592,63 +3666,63 @@ case 241: { sym(1).ExportDeclaration = exportDeclaration; } break; -#line 4708 "qmljs.g" +#line 4786 "qmljs.g" - case 611: { + case 614: { auto exportClause = new (pool) AST::ExportClause(); exportClause->leftBraceToken = loc(1); exportClause->rightBraceToken = loc(2); sym(1).ExportClause = exportClause; } break; -#line 4717 "qmljs.g" +#line 4795 "qmljs.g" - case 612: { + case 615: { auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish()); exportClause->leftBraceToken = loc(1); exportClause->rightBraceToken = loc(3); sym(1).ExportClause = exportClause; } break; -#line 4726 "qmljs.g" +#line 4804 "qmljs.g" - case 613: { + case 616: { auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish()); exportClause->leftBraceToken = loc(1); exportClause->rightBraceToken = loc(4); sym(1).ExportClause = exportClause; } break; -#line 4736 "qmljs.g" +#line 4814 "qmljs.g" - case 614: { + case 617: { sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportSpecifier); } break; -#line 4742 "qmljs.g" +#line 4820 "qmljs.g" - case 615: { + case 618: { sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportsList, sym(3).ExportSpecifier); } break; -#line 4749 "qmljs.g" +#line 4827 "qmljs.g" - case 616: { + case 619: { auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1)); exportSpecifier->identifierToken = loc(1); sym(1).ExportSpecifier = exportSpecifier; } break; -#line 4757 "qmljs.g" +#line 4835 "qmljs.g" - case 617: { + case 620: { auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1), stringRef(3)); exportSpecifier->identifierToken = loc(1); exportSpecifier->exportedIdentifierToken = loc(3); sym(1).ExportSpecifier = exportSpecifier; } break; -#line 4768 "qmljs.g" +#line 4846 "qmljs.g" // ------------ end of switch statement } // switch diff --git a/src/libs/qmljs/parser/qmljsparser_p.h b/src/libs/qmljs/parser/qmljsparser_p.h index 94f482a72f..ecbb0a7af2 100644 --- a/src/libs/qmljs/parser/qmljsparser_p.h +++ b/src/libs/qmljs/parser/qmljsparser_p.h @@ -1,8 +1,6 @@ - -#line 185 "qmljs.g" /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -292,27 +290,27 @@ protected: -#line 1862 "qmljs.g" +#line 1878 "qmljs.g" #define J_SCRIPT_REGEXPLITERAL_RULE1 164 -#line 1874 "qmljs.g" +#line 1890 "qmljs.g" #define J_SCRIPT_REGEXPLITERAL_RULE2 165 -#line 3423 "qmljs.g" +#line 3502 "qmljs.g" -#define J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE 463 +#define J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE 466 -#line 4076 "qmljs.g" +#line 4154 "qmljs.g" -#define J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE 533 +#define J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE 536 -#line 4618 "qmljs.g" +#line 4696 "qmljs.g" -#define J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE 602 +#define J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE 605 -#line 4902 "qmljs.g" +#line 4980 "qmljs.g" QT_QML_END_NAMESPACE diff --git a/src/libs/qmljs/parser/qmljssourcelocation_p.h b/src/libs/qmljs/parser/qmljssourcelocation_p.h index fa4a6bc136..29be90fd9b 100644 --- a/src/libs/qmljs/parser/qmljssourcelocation_p.h +++ b/src/libs/qmljs/parser/qmljssourcelocation_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. @@ -26,8 +26,7 @@ #pragma once #include "qmljsglobal_p.h" - -#include <QtCore/QStringView> +#include <QtCore/qhashfunctions.h> // // W A R N I N G @@ -52,13 +51,19 @@ public: startLine(line), startColumn(column) { } - bool isValid() const { return length != 0; } + bool isValid() const { return *this != SourceLocation(); } quint32 begin() const { return offset; } quint32 end() const { return offset + length; } - SourceLocation zeroLength() const { return SourceLocation(offset, 0, startLine, startColumn); } - SourceLocation zeroLengthEnd(QStringView text) const { + // Returns a zero length location at the start of the current one. + SourceLocation startZeroLengthLocation() const + { + return SourceLocation(offset, 0, startLine, startColumn); + } + // Returns a zero length location at the end of the current one. + SourceLocation endZeroLengthLocation(QStringView text) const + { quint32 i = offset; quint32 endLine = startLine; quint32 endColumn = startColumn; @@ -71,7 +76,7 @@ public: Q_FALLTHROUGH(); case '\r': ++endLine; - ++endColumn; + endColumn = 1; break; default: ++endColumn; @@ -87,6 +92,33 @@ public: quint32 length; quint32 startLine; quint32 startColumn; + + friend size_t qHash(const SourceLocation &location, size_t seed = 0) + { + return (seed ^ (size_t(location.offset) << 8) ^ size_t(location.length) + ^ (size_t(location.startLine) << 16) ^ (size_t(location.startColumn) << 24)); + } + + friend bool operator==(const SourceLocation &a, const SourceLocation &b) + { + return a.offset == b.offset && a.length == b.length && a.startLine == b.startLine + && a.startColumn == b.startColumn; + } + + friend bool operator!=(const SourceLocation &a, const SourceLocation &b) { return !(a == b); } + + // Returns a source location starting at the beginning of l1, l2 and ending at the end of them. + // Ignores invalid source locations. + friend SourceLocation combine(const SourceLocation &l1, const SourceLocation &l2) { + quint32 e = qMax(l1.end(), l2.end()); + SourceLocation res; + if (l1.offset <= l2.offset) + res = (l1.isValid() ? l1 : l2); + else + res = (l2.isValid() ? l2 : l1); + res.length = e - res.offset; + return res; + } }; } // namespace QmlJS diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs index b8d1bceae2..3fe7ad5b81 100644 --- a/src/libs/qmljs/qmljs.qbs +++ b/src/libs/qmljs/qmljs.qbs @@ -60,6 +60,7 @@ Project { prefix: "parser/" files: [ "qmldirparser.cpp", "qmldirparser_p.h", + "qmlimportresolver.cpp", "qmlimportresolver_p.h", "qmljsast.cpp", "qmljsast_p.h", "qmljsastfwd_p.h", "qmljsastvisitor.cpp", "qmljsastvisitor_p.h", diff --git a/src/libs/qmljs/qmljs_global.h b/src/libs/qmljs/qmljs_global.h index 982ff82315..3e5b3617ab 100644 --- a/src/libs/qmljs/qmljs_global.h +++ b/src/libs/qmljs/qmljs_global.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index df30dcb75a..67087570c2 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -370,7 +370,7 @@ LibraryInfo::LibraryInfo(Status status) updateFingerprint(); } -LibraryInfo::LibraryInfo(const QmlDirParser::TypeInfo &typeInfo) +LibraryInfo::LibraryInfo(const QString &typeInfo) : _status(Found) { _typeinfos.append(typeInfo); @@ -421,10 +421,10 @@ QByteArray LibraryInfo::calculateFingerprint() const } len = _typeinfos.size(); hash.addData(reinterpret_cast<const char *>(&len), sizeof(len)); - foreach (const QmlDirParser::TypeInfo &typeinfo, _typeinfos) { - len = typeinfo.fileName.size(); + foreach (const QString &typeinfo, _typeinfos) { + len = typeinfo.size(); hash.addData(reinterpret_cast<const char *>(&len), sizeof(len)); - hash.addData(reinterpret_cast<const char *>(typeinfo.fileName.constData()), + hash.addData(reinterpret_cast<const char *>(typeinfo.constData()), len * sizeofQChar); } len = _metaObjects.size(); diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h index c43ed03400..c6d4cf7dce 100644 --- a/src/libs/qmljs/qmljsdocument.h +++ b/src/libs/qmljs/qmljsdocument.h @@ -153,7 +153,7 @@ private: Status _status = NotScanned; QList<QmlDirParser::Component> _components; QList<QmlDirParser::Plugin> _plugins; - QList<QmlDirParser::TypeInfo> _typeinfos; + QStringList _typeinfos; typedef QList<LanguageUtils::FakeMetaObject::ConstPtr> FakeMetaObjectList; FakeMetaObjectList _metaObjects; QList<ModuleApiInfo> _moduleApis; @@ -167,7 +167,7 @@ private: public: LibraryInfo(); explicit LibraryInfo(Status status); - explicit LibraryInfo(const QmlDirParser::TypeInfo &typeInfo); + explicit LibraryInfo(const QString &typeInfo); explicit LibraryInfo(const QmlDirParser &parser, const QByteArray &fingerprint = QByteArray()); ~LibraryInfo() = default; LibraryInfo(const LibraryInfo &other) = default; @@ -183,7 +183,7 @@ public: QList<QmlDirParser::Plugin> plugins() const { return _plugins; } - QList<QmlDirParser::TypeInfo> typeInfos() const + QStringList typeInfos() const { return _typeinfos; } FakeMetaObjectList metaObjects() const diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index 8e5e74700e..d0d1d21138 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -811,7 +811,7 @@ static bool findNewQmlApplicationInPath(const QString &path, qmltypesFile = it.next(); - LibraryInfo libraryInfo = LibraryInfo(QmlDirParser::TypeInfo(qmltypesFile)); + LibraryInfo libraryInfo = LibraryInfo(qmltypesFile); const QString libraryPath = dir.absolutePath(); newLibraries->insert(libraryPath); modelManager->updateLibraryInfo(path, libraryInfo); diff --git a/src/libs/qmljs/qmljsplugindumper.cpp b/src/libs/qmljs/qmljsplugindumper.cpp index 376166559f..a131b4763a 100644 --- a/src/libs/qmljs/qmljsplugindumper.cpp +++ b/src/libs/qmljs/qmljsplugindumper.cpp @@ -154,8 +154,8 @@ void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString & } // add typeinfo files listed in qmldir - foreach (const QmlDirParser::TypeInfo &typeInfo, libraryInfo.typeInfos()) { - QString pathNow = makeAbsolute(typeInfo.fileName, canonicalLibraryPath); + foreach (const QString &typeInfo, libraryInfo.typeInfos()) { + QString pathNow = makeAbsolute(typeInfo, canonicalLibraryPath); if (!plugin.typeInfoPaths.contains(pathNow) && QFile::exists(pathNow)) plugin.typeInfoPaths += pathNow; } diff --git a/src/libs/qmljs/qmljsutils.cpp b/src/libs/qmljs/qmljsutils.cpp index 03136e4064..d1dd0d8b1c 100644 --- a/src/libs/qmljs/qmljsutils.cpp +++ b/src/libs/qmljs/qmljsutils.cpp @@ -209,7 +209,7 @@ const QString undefinedVersion = QLatin1String("-1.-1"); * undefined version (-1.-1) or if it is empty. False otherwise. */ bool QmlJS::maybeModuleVersion(const QString &version) { - QRegularExpression re(QLatin1String("^\\d+\\.\\d+$")); + QRegularExpression re(QLatin1String("^\\d+\\.-?\\d+$")); return version.isEmpty() || version == undefinedVersion || re.match(version).hasMatch(); } |