aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@qt.io>2020-02-28 17:51:32 +0100
committerFawzi Mohamed <fawzi.mohamed@qt.io>2020-03-03 15:31:10 +0000
commitb09a48599e7e5db5447189136353b79aca3898cf (patch)
tree5f6f3b1d4da3ed746caa612992d94ed21978dd75
parenta24dead5f63d7eb0b209539daebf5b2ce558b1c0 (diff)
Update qmljs parser to Qt 5.15 parser
* parser side support for annotations, inline components, new UiVersion and all the things included in QT 5.15 parser * SourceLocation moved from QmlJS:AST to QmlJS * Visitors now need to handle throwRecursionDepthError * BaseVisitor for visitors that want to override all visit Task-number: QTCREATORBUG-23591 Change-Id: I682a30d0b08b6c929739fd0e339ef6fbde3eb630 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r--doc/qtcreator/src/editors/creator-code-syntax.qdoc8
-rw-r--r--src/libs/qmljs/CMakeLists.txt2
-rw-r--r--src/libs/qmljs/jsoncheck.cpp8
-rw-r--r--src/libs/qmljs/jsoncheck.h6
-rw-r--r--src/libs/qmljs/parser/cmd.sed21
-rwxr-xr-xsrc/libs/qmljs/parser/gen-parser.sh32
-rw-r--r--src/libs/qmljs/parser/grammar.patch21
-rw-r--r--src/libs/qmljs/parser/parser.patch232
-rw-r--r--src/libs/qmljs/parser/parser.pri15
-rw-r--r--src/libs/qmljs/parser/qmldirparser.cpp73
-rw-r--r--src/libs/qmljs/parser/qmldirparser_p.h68
-rw-r--r--src/libs/qmljs/parser/qmlerror.cpp351
-rw-r--r--src/libs/qmljs/parser/qmljs.g349
-rw-r--r--src/libs/qmljs/parser/qmljsast.cpp270
-rw-r--r--src/libs/qmljs/parser/qmljsast_p.h353
-rw-r--r--src/libs/qmljs/parser/qmljsastfwd_p.h33
-rw-r--r--src/libs/qmljs/parser/qmljsastvisitor.cpp6
-rw-r--r--src/libs/qmljs/parser/qmljsastvisitor_p.h802
-rw-r--r--src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h98
-rw-r--r--src/libs/qmljs/parser/qmljsengine_p.cpp4
-rw-r--r--src/libs/qmljs/parser/qmljsengine_p.h48
-rw-r--r--src/libs/qmljs/parser/qmljsgrammar.cpp4060
-rw-r--r--src/libs/qmljs/parser/qmljsgrammar_p.h129
-rw-r--r--src/libs/qmljs/parser/qmljskeywords_p.h19
-rw-r--r--src/libs/qmljs/parser/qmljslexer.cpp19
-rw-r--r--src/libs/qmljs/parser/qmljslexer_p.h4
-rw-r--r--src/libs/qmljs/parser/qmljsmemorypool_p.h22
-rw-r--r--src/libs/qmljs/parser/qmljsparser.cpp1909
-rw-r--r--src/libs/qmljs/parser/qmljsparser_p.h80
-rw-r--r--src/libs/qmljs/parser/qmljssourcelocation_p.h (renamed from src/libs/qmljs/parser/qmlerror.h)62
-rw-r--r--src/libs/qmljs/qmljs.qbs2
-rw-r--r--src/libs/qmljs/qmljsbind.cpp15
-rw-r--r--src/libs/qmljs/qmljsbind.h2
-rw-r--r--src/libs/qmljs/qmljscheck.cpp21
-rw-r--r--src/libs/qmljs/qmljscheck.h7
-rw-r--r--src/libs/qmljs/qmljsdocument.h4
-rw-r--r--src/libs/qmljs/qmljsevaluate.cpp7
-rw-r--r--src/libs/qmljs/qmljsevaluate.h2
-rw-r--r--src/libs/qmljs/qmljsinterpreter.cpp11
-rw-r--r--src/libs/qmljs/qmljslink.cpp8
-rw-r--r--src/libs/qmljs/qmljsreformatter.cpp10
-rw-r--r--src/libs/qmljs/qmljsscopeastpath.cpp6
-rw-r--r--src/libs/qmljs/qmljsscopeastpath.h3
-rw-r--r--src/libs/qmljs/qmljsscopechain.cpp2
-rw-r--r--src/libs/qmljs/qmljssimplereader.cpp12
-rw-r--r--src/libs/qmljs/qmljssimplereader.h10
-rw-r--r--src/libs/qmljs/qmljsstaticanalysismessage.cpp5
-rw-r--r--src/libs/qmljs/qmljsstaticanalysismessage.h5
-rw-r--r--src/libs/qmljs/qmljstypedescriptionreader.cpp15
-rw-r--r--src/libs/qmljs/qmljstypedescriptionreader.h6
-rw-r--r--src/libs/qmljs/qmljsutils.cpp2
-rw-r--r--src/libs/qmljs/qmljsutils.h11
-rw-r--r--src/plugins/autotest/quick/quicktestvisitors.cpp7
-rw-r--r--src/plugins/autotest/quick/quicktestvisitors.h2
-rw-r--r--src/plugins/qmldesigner/components/componentcore/findimplementation.cpp19
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp4
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp7
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h2
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp5
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h2
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.h2
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp5
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h2
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp17
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h8
-rw-r--r--src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/documentmessage.cpp1
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp14
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.h6
-rw-r--r--src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp1
-rw-r--r--src/plugins/qmljseditor/qmljseditor.cpp12
-rw-r--r--src/plugins/qmljseditor/qmljseditordocument.cpp18
-rw-r--r--src/plugins/qmljseditor/qmljsfindreferences.cpp25
-rw-r--r--src/plugins/qmljseditor/qmljshoverhandler.cpp4
-rw-r--r--src/plugins/qmljseditor/qmljsoutline.cpp2
-rw-r--r--src/plugins/qmljseditor/qmljssemantichighlighter.cpp11
-rw-r--r--src/plugins/qmljseditor/qmljssemantichighlighter.h2
-rw-r--r--src/plugins/qmljseditor/qmljswrapinloader.cpp6
-rw-r--r--src/plugins/qmljseditor/qmloutlinemodel.cpp32
-rw-r--r--src/plugins/qmljseditor/qmloutlinemodel.h10
-rw-r--r--src/plugins/qmljstools/qmljslocatordata.cpp6
-rw-r--r--src/plugins/qmljstools/qmljsrefactoringchanges.cpp4
-rw-r--r--src/plugins/qmljstools/qmljsrefactoringchanges.h4
-rw-r--r--src/plugins/qmljstools/qmljssemanticinfo.cpp14
-rw-r--r--src/plugins/qmljstools/qmljssemanticinfo.h2
-rw-r--r--src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp8
-rw-r--r--src/plugins/todo/qmljstodoitemsscanner.cpp2
88 files changed, 5242 insertions, 4302 deletions
diff --git a/doc/qtcreator/src/editors/creator-code-syntax.qdoc b/doc/qtcreator/src/editors/creator-code-syntax.qdoc
index 3f542df9d1..4d05f3f288 100644
--- a/doc/qtcreator/src/editors/creator-code-syntax.qdoc
+++ b/doc/qtcreator/src/editors/creator-code-syntax.qdoc
@@ -670,9 +670,17 @@
{The array literal notation [] is preferable}.
\row
+ \li M324
+ \li Error
+ \li Hit maximum recursion limit visiting AST, the code model will be unreliable
+ and most likely invalid
+ \li
+
+ \row
\li M400
\li Warning
\li Duplicate import
+ \li
\endtable
diff --git a/src/libs/qmljs/CMakeLists.txt b/src/libs/qmljs/CMakeLists.txt
index 5ccb629cb2..3357b0da66 100644
--- a/src/libs/qmljs/CMakeLists.txt
+++ b/src/libs/qmljs/CMakeLists.txt
@@ -4,7 +4,6 @@ add_qtc_library(QmlJS
SOURCES
jsoncheck.cpp jsoncheck.h
parser/qmldirparser.cpp parser/qmldirparser_p.h
- parser/qmlerror.cpp parser/qmlerror.h
parser/qmljsast.cpp parser/qmljsast_p.h
parser/qmljsastfwd_p.h
parser/qmljsastvisitor.cpp parser/qmljsastvisitor_p.h
@@ -15,6 +14,7 @@ add_qtc_library(QmlJS
parser/qmljslexer.cpp parser/qmljslexer_p.h
parser/qmljsmemorypool_p.h
parser/qmljsparser.cpp parser/qmljsparser_p.h
+ parser/qmljssourcelocation.cpp parser/qmljssourcelocation_p.h
persistenttrie.cpp persistenttrie.h
qmljs_global.h
qmljsbind.cpp qmljsbind.h
diff --git a/src/libs/qmljs/jsoncheck.cpp b/src/libs/qmljs/jsoncheck.cpp
index 15d0edb1a7..d2beb507cc 100644
--- a/src/libs/qmljs/jsoncheck.cpp
+++ b/src/libs/qmljs/jsoncheck.cpp
@@ -310,6 +310,14 @@ bool JsonCheck::visit(StringLiteral *ast)
return false;
}
+void JsonCheck::throwRecursionDepthError()
+{
+ analysis()->m_messages.append(Message(ErrHitMaximumRecursion,
+ SourceLocation(),
+ QString(), QString(), false));
+
+}
+
static QString formatExpectedTypes(QStringList all)
{
all.removeDuplicates();
diff --git a/src/libs/qmljs/jsoncheck.h b/src/libs/qmljs/jsoncheck.h
index e8efc8db19..9885ad2353 100644
--- a/src/libs/qmljs/jsoncheck.h
+++ b/src/libs/qmljs/jsoncheck.h
@@ -59,6 +59,8 @@ private:
bool visit(AST::NumericLiteral *ast) override;
bool visit(AST::StringLiteral *ast) override;
+ void throwRecursionDepthError() override;
+
struct AnalysisData
{
AnalysisData() : m_ranking(0), m_hasMatch(false) {}
@@ -71,12 +73,12 @@ private:
};
void processSchema(AST::Node *ast);
- bool proceedCheck(Utils::JsonValue::Kind kind, const AST::SourceLocation &location);
+ bool proceedCheck(Utils::JsonValue::Kind kind, const SourceLocation &location);
AnalysisData *analysis();
Document::Ptr m_doc;
- AST::SourceLocation m_firstLoc;
+ SourceLocation m_firstLoc;
Utils::JsonSchema *m_schema;
QStack<AnalysisData> m_analysis;
};
diff --git a/src/libs/qmljs/parser/cmd.sed b/src/libs/qmljs/parser/cmd.sed
index a9b8ac0a6e..0e6fc69828 100644
--- a/src/libs/qmljs/parser/cmd.sed
+++ b/src/libs/qmljs/parser/cmd.sed
@@ -1,16 +1,25 @@
-s/private\/qdeclarative/qml/g
+s/include *<private\/\([a-zA-Z_.]*\)>/include "qmljs\/parser\/\1"/g
+s/qtqmlcompilerglobal_p.h/qmljsglobal_p.h/g
+s/<QtCore\/qglobal.h>/"qmljsglobal_p.h"/g
+s/Q_QMLCOMPILER_PRIVATE_EXPORT/QML_PARSER_EXPORT/g
s/qqml/qml/g
s/QDECLARATIVE/QML/g
s/QQml/Qml/g
s/QQMLJS/QMLJS/g
s/Q_QML_EXPORT //g
-s/Q_QML_PRIVATE_EXPORT/QML_PARSER_EXPORT/
+s/Q_QML_PRIVATE_EXPORT/QML_PARSER_EXPORT/g
+s/QT_BEGIN_NAMESPACE/QT_QML_BEGIN_NAMESPACE/g
+s/QT_END_NAMESPACE/QT_QML_END_NAMESPACE/g
# adjust pri file
s/ \$\$PWD\/qmljsglobal_p.h/ $$PWD\/qmljsglobal_p.h \\\
+ $$PWD\/qmljssourcelocation_p.h \\\
+ $$PWD\/qmljsmemorypool_p.h \\\
$$PWD\/qmldirparser_p.h \\\
- $$PWD\/qmlerror.h/
-s/ \$\$PWD\/qmljsparser.cpp/ $$PWD\/qmljsparser.cpp \\\
+ $$PWD\/qmljsgrammar_p.h \\\
+ $$PWD\/qmljsparser_p.h/
+
+s/ \$\$PWD\/qmljslexer.cpp/ $$PWD\/qmljslexer.cpp \\\
$$PWD\/qmldirparser.cpp \\\
- $$PWD\/qmlerror.cpp/
-s/OTHER_FILES/DISTFILES/
+ $$PWD\/qmljsgrammar.cpp \\\
+ $$PWD\/qmljsparser.cpp/
diff --git a/src/libs/qmljs/parser/gen-parser.sh b/src/libs/qmljs/parser/gen-parser.sh
index acd30d0906..c78c307adc 100755
--- a/src/libs/qmljs/parser/gen-parser.sh
+++ b/src/libs/qmljs/parser/gen-parser.sh
@@ -10,11 +10,12 @@
# cd src/libs/qmljs/parser
# QTDIR=~/path/to/qtdeclarative-checkout ./gen-parser.sh
-if [ -z "$QTDIR" ]; then
- echo "Usage: QTDIR=~/path/to/qtdeclarative-checkout $0" 1>&2
+if [ -z "$QTDIR" -o -z "$QLALR" ]; then
+ echo "Usage: QTDIR=~/path/to/qtdeclarative-checkout QLALR=~/path/to/qlalr $0" 1>&2
exit 1
fi
+
me=$(dirname $0)
for i in $QTDIR/src/qml/parser/*.{g,h,cpp,pri}; do
@@ -23,22 +24,23 @@ for i in $QTDIR/src/qml/parser/*.{g,h,cpp,pri}; do
fi
done
-for i in $QTDIR/src/qml/qml/qqml{error.{h,cpp},dirparser{_p.h,.cpp}}; do
- sed -f $me/cmd.sed $i > $me/$(echo $(basename $i) | sed s/qqml/qml/)
+for i in $QTDIR/src/qml/qmldirparser/*.{h,cpp}; do
+ if ! echo $i | grep -q qmljsglobal; then
+ sed -f $me/cmd.sed $i > $me/$(echo $(basename $i) | sed s/qqml/qml/)
+ fi
+done
+
+for i in $QTDIR/src/qml/common/qqmljs{sourcelocation,memorypool}_p.h; do
+ sed -f $me/cmd.sed $i > $me/$(echo $(basename $i) | sed s/qqmljs/qmljs/)
done
-# export QmlDirParser
-perl -p -0777 -i -e 's/QT_BEGIN_NAMESPACE\n\nclass QmlError;\nclass QmlEngine;\nclass Q_AUTOTEST_EXPORT QmlDirParser/#include "qmljsglobal_p.h"\n\nQT_BEGIN_NAMESPACE\n\nclass QmlError;\nclass QmlEngine;\nclass QML_PARSER_EXPORT QmlDirParser/' qmldirparser_p.h
-# export QmlJSGrammar
-perl -p -0777 -i -e 's/#include <QtCore\/qglobal.h>\n\nQT_BEGIN_NAMESPACE\n\nclass QmlJSGrammar\n/#include "qmljsglobal_p.h"\n#include <QtCore\/qglobal.h>\n\nQT_BEGIN_NAMESPACE\n\nclass QML_PARSER_EXPORT QmlJSGrammar\n/' qmljsgrammar_p.h
+# remove qmlapiversion_p.h include
+#include "qmlapiversion_p.h"
+perl -p -0777 -i -e 's/#include \"qmlapiversion_p.h\"//' qmljsdiagnosticmessage_p.h
# remove qmlglobal_p.h include
perl -p -0777 -i -e 's/#include \"qmlglobal_p.h\"//' qmldirparser.cpp
# remove qmlglobal_p.h include
-perl -p -0777 -i -e 's/#include \"qmlglobal_p.h\"//' qmlerror.cpp
-# remove qmlglobal_p.h include
perl -p -0777 -i -e 's/#include \<QtQml\/qmlfile.h\>//' qmldirparser.cpp
-# remove QtQml/qtqmlglobal.h include
-perl -p -0777 -i -e 's/#include \<QtQml\/qtqmlglobal.h\>//' qmlerror.h
# replace private/qhashedstring_p.h include and QHashedStringRef
perl -p -0777 -i -e 's/#include \<private\/qhashedstring_p.h\>//' qmldirparser_p.h
perl -p -0777 -i -e 's/QHashedStringRef/QString/g' qmldirparser_p.h qmldirparser.cpp
@@ -51,11 +53,15 @@ sed -i -e 's/chars.length()/chars.size()/' $me/qmljslexer.cpp
sed -i -e 's/DiagnosticMessage::Error/Severity::Error/g' $me/qmljsparser.cpp
sed -i -e 's/DiagnosticMessage::Warning/Severity::Warning/g' $me/qmljsparser.cpp
sed -i -e 's/DiagnosticMessage::Warning/Severity::Warning/g' $me/qmljsparser_p.h
-sed -i -e 's|#include <private/qv4errorobject_p.h>||g' $me/qmlerror.cpp
sed -i -e 's|#include <QtCore/qstring.h>|#include <QString>|g' $me/qmljsengine_p.h
sed -i -e 's|#include <QtCore/qset.h>|#include <QSet>|g' $me/qmljsengine_p.h
sed -i -e 's/qt_qnan/qQNaN/' $me/qmljsengine_p.cpp
sed -i -e 's|#include <QtCore/private/qnumeric_p.h>|#include <QtCore/qnumeric.h>|' $me/qmljsengine_p.cpp
perl -p -0777 -i -e 's/QT_QML_BEGIN_NAMESPACE/#include <qmljs\/qmljsconstants.h>\nQT_QML_BEGIN_NAMESPACE/' qmljsengine_p.h
+patch -p1 < grammar.patch
+$QLALR qmljs.g
+
./changeLicense.py $me/../qmljs_global.h qml*.{cpp,h}
+
+patch -p1 < parser.patch
diff --git a/src/libs/qmljs/parser/grammar.patch b/src/libs/qmljs/parser/grammar.patch
new file mode 100644
index 0000000000..6189b89a90
--- /dev/null
+++ b/src/libs/qmljs/parser/grammar.patch
@@ -0,0 +1,21 @@
+diff -u parser-genOut/qmljs.g parser/qmljs.g
+--- parser-genOut/qmljs.g 2020-03-02 13:53:50.000000000 +0100
++++ parser/qmljs.g 2020-03-02 13:55:50.000000000 +0100
+@@ -379,7 +379,7 @@
+ inline DiagnosticMessage diagnosticMessage() const
+ {
+ for (const DiagnosticMessage &d : diagnostic_messages) {
+- if (d.type != QtWarningMsg)
++ if (d.kind != Severity::Warning)
+ return d;
+ }
+
+@@ -423,7 +423,7 @@
+ DiagnosticMessage error;
+ error.loc = location;
+ error.message = message;
+- error.type = kind;
++ error.kind = DiagnosticMessage::qtMsgTypeToKind(kind);
+ return error;
+ }
+
diff --git a/src/libs/qmljs/parser/parser.patch b/src/libs/qmljs/parser/parser.patch
index c1bef1860c..d8e530133e 100644
--- a/src/libs/qmljs/parser/parser.patch
+++ b/src/libs/qmljs/parser/parser.patch
@@ -1,157 +1,83 @@
-diff --git a/src/libs/qmljs/parser/qmlerror.cpp b/src/libs/qmljs/parser/qmlerror.cpp
-index d090a19..5ec311d 100644
---- a/src/libs/qmljs/parser/qmlerror.cpp
-+++ b/src/libs/qmljs/parser/qmlerror.cpp
-@@ -65,6 +65,12 @@ QT_BEGIN_NAMESPACE
-
- \sa QQuickView::errors(), QmlComponent::errors()
- */
-+
-+static quint16 qmlSourceCoordinate(int n)
-+{
-+ return (n > 0 && n <= static_cast<int>(USHRT_MAX)) ? static_cast<quint16>(n) : 0;
-+}
-+
- class QmlErrorPrivate
+diff -u parser-genOut/qmljsgrammar.cpp parser/qmljsgrammar.cpp
+--- parser-genOut/qmljsgrammar.cpp 2020-03-02 13:53:50.000000000 +0100
++++ parser/qmljsgrammar.cpp 2020-03-02 14:16:26.000000000 +0100
+@@ -21,7 +21,8 @@
+ ** information to ensure the GNU General Public License requirements will
+ ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+ **
+-***************************************************************************// This file was generated by qlalr - DO NOT EDIT!
++***************************************************************************/
++// This file was generated by qlalr - DO NOT EDIT!
+ #include "qmljsgrammar_p.h"
+
+ const char *const QmlJSGrammar::spell [] = {
+diff -u parser-genOut/qmljsgrammar_p.h parser/qmljsgrammar_p.h
+--- parser/qmljsgrammar_p.h 2020-03-03 13:51:43.000000000 +0100
++++ parser-fixed2/qmljsgrammar_p.h 2020-03-02 17:20:56.000000000 +0100
+@@ -21,11 +21,13 @@
+ ** information to ensure the GNU General Public License requirements will
+ ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+ **
+-***************************************************************************// This file was generated by qlalr - DO NOT EDIT!
++***************************************************************************/
++// This file was generated by qlalr - DO NOT EDIT!
+ #ifndef QMLJSGRAMMAR_P_H
+ #define QMLJSGRAMMAR_P_H
++#include "qmljsglobal_p.h"
+
+-class QmlJSGrammar
++class QML_PARSER_EXPORT QmlJSGrammar
{
public:
-diff --git a/src/libs/qmljs/parser/qmljsengine_p.cpp b/src/libs/qmljs/parser/qmljsengine_p.cpp
-index 1e22fa5..10fc3d1 100644
---- a/src/libs/qmljs/parser/qmljsengine_p.cpp
-+++ b/src/libs/qmljs/parser/qmljsengine_p.cpp
-@@ -110,7 +110,7 @@ double integerFromString(const QString &str, int radix)
-
-
- Engine::Engine()
-- : _lexer(0)
-+ : _lexer(0), _directives(0)
- { }
-
- Engine::~Engine()
-@@ -131,6 +131,12 @@ Lexer *Engine::lexer() const
- void Engine::setLexer(Lexer *lexer)
- { _lexer = lexer; }
-
-+void Engine::setDirectives(Directives *directives)
-+{ _directives = directives; }
-+
-+Directives *Engine::directives() const
-+{ return _directives; }
-+
- MemoryPool *Engine::pool()
- { return &_pool; }
-
-diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h
-index b1f7e1a..29b69d1 100644
---- a/src/libs/qmljs/parser/qmljsengine_p.h
-+++ b/src/libs/qmljs/parser/qmljsengine_p.h
-@@ -44,36 +44,35 @@
- #include "qmljsglobal_p.h"
- #include "qmljsastfwd_p.h"
- #include "qmljsmemorypool_p.h"
-+#include <qmljs/qmljsconstants.h>
-
- #include <QString>
- #include <QSet>
-
--#include <qmljs/qmljsconstants.h>
- QT_QML_BEGIN_NAMESPACE
-
+ enum VariousConstants {
+diff -u parser-genOut/qmljslexer_p.h parser/qmljslexer_p.h
+--- parser-genOut/qmljslexer_p.h 2020-03-02 13:53:50.000000000 +0100
++++ parser/qmljslexer_p.h 2020-03-02 13:55:13.000000000 +0100
+@@ -47,7 +47,7 @@
namespace QmlJS {
- class Lexer;
-+class Directives;
- class MemoryPool;
-
- class QML_PARSER_EXPORT DiagnosticMessage
- {
- public:
-- enum Kind { Warning, Error };
--
- DiagnosticMessage()
-- : kind(Error) {}
-+ : kind(Severity::Error) {}
-
-- DiagnosticMessage(Kind kind, const AST::SourceLocation &loc, const QString &message)
-+ DiagnosticMessage(Severity::Enum kind, const AST::SourceLocation &loc, const QString &message)
- : kind(kind), loc(loc), message(message) {}
-
- bool isWarning() const
-- { return kind == Warning; }
-+ { return kind == Severity::Warning; }
-
- bool isError() const
-- { return kind == Error; }
-+ { return kind == Severity::Error; }
-
-- Kind kind;
-+ Severity::Enum kind;
- AST::SourceLocation loc;
- QString message;
- };
-@@ -81,6 +80,7 @@ public:
- class QML_PARSER_EXPORT Engine
- {
- Lexer *_lexer;
-+ Directives *_directives;
- MemoryPool _pool;
- QList<AST::SourceLocation> _comments;
- QString _extraCode;
-@@ -99,6 +99,9 @@ public:
- Lexer *lexer() const;
- void setLexer(Lexer *lexer);
-
-+ void setDirectives(Directives *directives);
-+ Directives *directives() const;
-+
- MemoryPool *pool();
-
- inline QStringRef midRef(int position, int size) { return _code.midRef(position, size); }
-diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp
-index 9698e9d..036be75 100644
---- a/src/libs/qmljs/parser/qmljslexer.cpp
-+++ b/src/libs/qmljs/parser/qmljslexer.cpp
-@@ -345,7 +345,7 @@ static inline bool isIdentifierStart(QChar ch)
- // fast path for ascii
- if ((ch.unicode() >= 'a' && ch.unicode() <= 'z') ||
- (ch.unicode() >= 'A' && ch.unicode() <= 'Z') ||
-- ch == '$' || ch == '_')
-+ ch == QLatin1Char('$') || ch == QLatin1Char('_'))
- return true;
-
- switch (ch.category()) {
-@@ -368,7 +368,7 @@ static bool isIdentifierPart(QChar ch)
- if ((ch.unicode() >= 'a' && ch.unicode() <= 'z') ||
- (ch.unicode() >= 'A' && ch.unicode() <= 'Z') ||
- (ch.unicode() >= '0' && ch.unicode() <= '9') ||
-- ch == '$' || ch == '_' ||
-+ ch == QLatin1Char('$') || ch == QLatin1Char('_') ||
- ch.unicode() == 0x200c /* ZWNJ */ || ch.unicode() == 0x200d /* ZWJ */)
- return true;
-
-diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp
-index 6e61637..e016b91 100644
---- a/src/libs/qmljs/parser/qmljsparser.cpp
-+++ b/src/libs/qmljs/parser/qmljsparser.cpp
-@@ -157,7 +157,20 @@ bool Parser::parse(int startToken)
-
- token_buffer[0].token = startToken;
- first_token = &token_buffer[0];
-- last_token = &token_buffer[1];
-+ if (startToken == T_FEED_JS_PROGRAM) {
-+ Directives ignoreDirectives;
-+ Directives *directives = driver->directives();
-+ if (!directives)
-+ directives = &ignoreDirectives;
-+ lexer->scanDirectives(directives);
-+ token_buffer[1].token = lexer->tokenKind();
-+ token_buffer[1].dval = lexer->tokenValue();
-+ token_buffer[1].loc = location(lexer);
-+ token_buffer[1].spell = lexer->tokenSpell();
-+ last_token = &token_buffer[2];
-+ } else {
-+ last_token = &token_buffer[1];
-+ }
-
- tos = -1;
- program = 0;
+ class Engine;
+-struct DiagnosticMessage;
++class DiagnosticMessage;
+ class Directives;
+
+ class QML_PARSER_EXPORT Lexer: public QmlJSGrammar
+diff -u parser-genOut/qmljsparser.cpp parser/qmljsparser.cpp
+--- parser-genOut/qmljsparser.cpp 2020-03-02 13:53:50.000000000 +0100
++++ parser/qmljsparser.cpp 2020-03-02 14:16:01.000000000 +0100
+@@ -22,5 +22,6 @@
+ ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+ **
+ ****************************************************************************/
++#line 172 "qmljs.g"
+
+ #include "qmljs/parser/qmljsengine_p.h"
+diff -u parser-genOut/qmljsparser_p.h parser/qmljsparser_p.h
+--- parser-genOut/qmljsparser_p.h 2020-03-02 13:53:50.000000000 +0100
++++ parser/qmljsparser_p.h 2020-03-02 14:13:25.000000000 +0100
+@@ -22,6 +22,7 @@
+ ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+ **
+ ****************************************************************************/
++#line 223 "qmljs.g"
+
+
+ //
+
+diff -u parser-genOut/parser.pri parser/parser.pri
+--- parser-genOut/parser.pri 2020-03-02 15:40:09.000000000 +0100
++++ parser/parser.pri 2020-03-02 15:41:11.000000000 +0100
+@@ -22,10 +22,10 @@
+ $$PWD/qmljsparser.cpp \
+
+-CONFIG += qlalr
++#CONFIG += qlalr
+ QLALRSOURCES = $$PWD/qmljs.g
+-QMAKE_QLALRFLAGS = --no-debug --qt
++#QMAKE_QLALRFLAGS = --no-debug --qt
+
+ OTHER_FILES += $$QLALRSOURCES
+
+ # make sure we install the headers generated by qlalr
+-private_headers.CONFIG += no_check_exist
++#private_headers.CONFIG += no_check_exist
diff --git a/src/libs/qmljs/parser/parser.pri b/src/libs/qmljs/parser/parser.pri
index 7418ea56be..0694a5188b 100644
--- a/src/libs/qmljs/parser/parser.pri
+++ b/src/libs/qmljs/parser/parser.pri
@@ -3,30 +3,29 @@ HEADERS += \
$$PWD/qmljsastfwd_p.h \
$$PWD/qmljsastvisitor_p.h \
$$PWD/qmljsengine_p.h \
- $$PWD/qmljsgrammar_p.h \
$$PWD/qmljslexer_p.h \
- $$PWD/qmljsmemorypool_p.h \
- $$PWD/qmljsparser_p.h \
$$PWD/qmljsglobal_p.h \
+ $$PWD/qmljssourcelocation_p.h \
+ $$PWD/qmljsmemorypool_p.h \
$$PWD/qmldirparser_p.h \
- $$PWD/qmlerror.h \
+ $$PWD/qmljsgrammar_p.h \
+ $$PWD/qmljsparser_p.h \
$$PWD/qmljskeywords_p.h
SOURCES += \
$$PWD/qmljsast.cpp \
$$PWD/qmljsastvisitor.cpp \
$$PWD/qmljsengine_p.cpp \
- $$PWD/qmljsgrammar.cpp \
$$PWD/qmljslexer.cpp \
- $$PWD/qmljsparser.cpp \
$$PWD/qmldirparser.cpp \
- $$PWD/qmlerror.cpp
+ $$PWD/qmljsgrammar.cpp \
+ $$PWD/qmljsparser.cpp \
#CONFIG += qlalr
QLALRSOURCES = $$PWD/qmljs.g
#QMAKE_QLALRFLAGS = --no-debug --qt
-DISTFILES += $$QLALRSOURCES
+OTHER_FILES += $$QLALRSOURCES
# make sure we install the headers generated by qlalr
#private_headers.CONFIG += no_check_exist
diff --git a/src/libs/qmljs/parser/qmldirparser.cpp b/src/libs/qmljs/parser/qmldirparser.cpp
index d56affdbe1..003f4aa97b 100644
--- a/src/libs/qmljs/parser/qmldirparser.cpp
+++ b/src/libs/qmljs/parser/qmldirparser.cpp
@@ -24,11 +24,10 @@
****************************************************************************/
#include "qmldirparser_p.h"
-#include "qmlerror.h"
#include <QtCore/QtDebug>
-QT_BEGIN_NAMESPACE
+QT_QML_BEGIN_NAMESPACE
static int parseInt(const QStringRef &str, bool *ok)
{
@@ -60,12 +59,18 @@ static bool parseVersion(const QString &str, int *major, int *minor)
return false;
}
-QmlDirParser::QmlDirParser() : _designerSupported(false)
-{
-}
-
-QmlDirParser::~QmlDirParser()
+void QmlDirParser::clear()
{
+ _errors.clear();
+ _typeNamespace.clear();
+ _components.clear();
+ _dependencies.clear();
+ _imports.clear();
+ _scripts.clear();
+ _plugins.clear();
+ _designerSupported = false;
+ _typeInfos.clear();
+ _className.clear();
}
inline static void scanSpace(const QChar *&ch) {
@@ -88,13 +93,6 @@ inline static void scanWord(const QChar *&ch) {
*/
bool QmlDirParser::parse(const QString &source)
{
- _errors.clear();
- _plugins.clear();
- _components.clear();
- _scripts.clear();
- _designerSupported = false;
- _className.clear();
-
quint16 lineNumber = 0;
bool firstLine = true;
@@ -193,7 +191,7 @@ bool QmlDirParser::parse(const QString &source)
}
Component entry(sections[1], sections[2], -1, -1);
entry.internal = true;
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else if (sections[0] == QLatin1String("singleton")) {
if (sectionCount < 3 || sectionCount > 4) {
reportError(lineNumber, 0,
@@ -204,7 +202,7 @@ bool QmlDirParser::parse(const QString &source)
// singleton TestSingletonType TestSingletonType.qml
Component entry(sections[1], sections[2], -1, -1);
entry.singleton = true;
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else {
// handle qmldir module listing case where singleton is defined in the following pattern:
// singleton TestSingletonType 2.0 TestSingletonType20.qml
@@ -213,7 +211,7 @@ bool QmlDirParser::parse(const QString &source)
const QString &fileName = sections[3];
Component entry(sections[1], fileName, major, minor);
entry.singleton = true;
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else {
reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[2]));
}
@@ -249,10 +247,17 @@ bool QmlDirParser::parse(const QString &source)
} else {
reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[2]));
}
+ } else if (sections[0] == QLatin1String("import")) {
+ if (sectionCount != 2) {
+ reportError(lineNumber, 0,
+ QStringLiteral("import requires 2 arguments, but %1 were provided").arg(sectionCount - 1));
+ continue;
+ }
+ _imports << 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);
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
} else if (sectionCount == 3) {
int major, minor;
if (parseVersion(sections[1], &major, &minor)) {
@@ -264,7 +269,7 @@ bool QmlDirParser::parse(const QString &source)
_scripts.append(entry);
} else {
const Component entry(sections[0], fileName, major, minor);
- _components.insertMulti(entry.typeName, entry);
+ _components.insert(entry.typeName, entry);
}
} else {
reportError(lineNumber, 0, QStringLiteral("invalid version %1, expected <major>.<minor>").arg(sections[1]));
@@ -297,27 +302,20 @@ bool QmlDirParser::hasError() const
return false;
}
-void QmlDirParser::setError(const QmlError &e)
+void QmlDirParser::setError(const QmlJS::DiagnosticMessage &e)
{
_errors.clear();
- reportError(e.line(), e.column(), e.description());
+ reportError(e.loc.startLine, e.loc.startColumn, e.message);
}
-QList<QmlError> QmlDirParser::errors(const QString &uri) const
+QList<QmlJS::DiagnosticMessage> QmlDirParser::errors(const QString &uri) const
{
- QUrl url(uri);
- QList<QmlError> errors;
+ QList<QmlJS::DiagnosticMessage> errors;
const int numErrors = _errors.size();
errors.reserve(numErrors);
for (int i = 0; i < numErrors; ++i) {
- const QmlJS::DiagnosticMessage &msg = _errors.at(i);
- QmlError e;
- QString description = msg.message;
- description.replace(QLatin1String("$$URI$$"), uri);
- e.setDescription(description);
- e.setUrl(url);
- e.setLine(msg.loc.startLine);
- e.setColumn(msg.loc.startColumn);
+ QmlJS::DiagnosticMessage e = _errors.at(i);
+ e.message.replace(QLatin1String("$$URI$$"), uri);
errors << e;
}
return errors;
@@ -338,7 +336,7 @@ QList<QmlDirParser::Plugin> QmlDirParser::plugins() const
return _plugins;
}
-QHash<QString, QmlDirParser::Component> QmlDirParser::components() const
+QMultiHash<QString, QmlDirParser::Component> QmlDirParser::components() const
{
return _components;
}
@@ -348,17 +346,20 @@ QHash<QString, QmlDirParser::Component> QmlDirParser::dependencies() const
return _dependencies;
}
+QStringList QmlDirParser::imports() const
+{
+ return _imports;
+}
+
QList<QmlDirParser::Script> QmlDirParser::scripts() const
{
return _scripts;
}
-#ifdef QT_CREATOR
QList<QmlDirParser::TypeInfo> QmlDirParser::typeInfos() const
{
return _typeInfos;
}
-#endif
bool QmlDirParser::designerSupported() const
{
@@ -384,4 +385,4 @@ QDebug &operator<< (QDebug &debug, const QmlDirParser::Script &script)
return debug << qPrintable(output);
}
-QT_END_NAMESPACE
+QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmldirparser_p.h b/src/libs/qmljs/parser/qmldirparser_p.h
index a39bfff0d2..9b26d02351 100644
--- a/src/libs/qmljs/parser/qmldirparser_p.h
+++ b/src/libs/qmljs/parser/qmldirparser_p.h
@@ -39,34 +39,44 @@
#include <QtCore/QUrl>
#include <QtCore/QHash>
#include <QtCore/QDebug>
-#include "qmljsengine_p.h"
-#include "qmljsglobal_p.h"
+#include "qmljs/parser/qmljsglobal_p.h"
+#include "qmljs/parser/qmljsengine_p.h"
+#include "qmljs/parser/qmljsdiagnosticmessage_p.h"
-QT_BEGIN_NAMESPACE
+QT_QML_BEGIN_NAMESPACE
-class QmlError;
class QmlEngine;
class QML_PARSER_EXPORT QmlDirParser
{
public:
- QmlDirParser();
- ~QmlDirParser();
-
+ void clear();
bool parse(const QString &source);
bool hasError() const;
- void setError(const QmlError &);
- QList<QmlError> errors(const QString &uri) const;
+ void setError(const QmlJS::DiagnosticMessage &);
+ QList<QmlJS::DiagnosticMessage> errors(const QString &uri) const;
QString typeNamespace() const;
void setTypeNamespace(const QString &s);
+ static void checkNonRelative(const char *item, const QString &typeName, const QString &fileName)
+ {
+ if (fileName.startsWith(QLatin1Char('/'))) {
+ qWarning() << item << typeName
+ << "is specified with non-relative URL" << fileName << "in a qmldir file."
+ << "URLs in qmldir files should be relative to the qmldir file's directory.";
+ }
+ }
+
struct Plugin
{
- Plugin() {}
+ Plugin() = default;
Plugin(const QString &name, const QString &path)
- : name(name), path(path) {}
+ : name(name), path(path)
+ {
+ checkNonRelative("Plugin", name, path);
+ }
QString name;
QString path;
@@ -74,11 +84,14 @@ public:
struct Component
{
- Component() {}
+ Component() = default;
Component(const QString &typeName, const QString &fileName, int majorVersion, int minorVersion)
: typeName(typeName), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion),
- internal(false), singleton(false) {}
+ internal(false), singleton(false)
+ {
+ checkNonRelative("Component", typeName, fileName);
+ }
QString typeName;
QString fileName;
@@ -90,10 +103,13 @@ public:
struct Script
{
- Script() {}
+ Script() = default;
Script(const QString &nameSpace, const QString &fileName, int majorVersion, int minorVersion)
- : nameSpace(nameSpace), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion) {}
+ : nameSpace(nameSpace), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion)
+ {
+ checkNonRelative("Script", nameSpace, fileName);
+ }
QString nameSpace;
QString fileName;
@@ -101,16 +117,16 @@ public:
int minorVersion = 0;
};
- QHash<QString,Component> components() const;
+ QMultiHash<QString,Component> components() const;
QHash<QString,Component> dependencies() const;
+ QStringList imports() const;
QList<Script> scripts() const;
QList<Plugin> plugins() const;
bool designerSupported() const;
-#ifdef QT_CREATOR
struct TypeInfo
{
- TypeInfo() {}
+ TypeInfo() = default;
TypeInfo(const QString &fileName)
: fileName(fileName) {}
@@ -118,7 +134,6 @@ public:
};
QList<TypeInfo> typeInfos() const;
-#endif
QString className() const;
@@ -129,23 +144,22 @@ private:
private:
QList<QmlJS::DiagnosticMessage> _errors;
QString _typeNamespace;
- QHash<QString,Component> _components; // multi hash
+ QMultiHash<QString,Component> _components;
QHash<QString,Component> _dependencies;
+ QStringList _imports;
QList<Script> _scripts;
QList<Plugin> _plugins;
- bool _designerSupported;
-#ifdef QT_CREATOR
+ bool _designerSupported = false;
QList<TypeInfo> _typeInfos;
-#endif
QString _className;
};
-typedef QHash<QString,QmlDirParser::Component> QmlDirComponents;
-typedef QList<QmlDirParser::Script> QmlDirScripts;
-typedef QList<QmlDirParser::Plugin> QmlDirPlugins;
+using QmlDirComponents = QMultiHash<QString,QmlDirParser::Component>;
+using QmlDirScripts = QList<QmlDirParser::Script>;
+using QmlDirPlugins = QList<QmlDirParser::Plugin>;
QDebug &operator<< (QDebug &, const QmlDirParser::Component &);
QDebug &operator<< (QDebug &, const QmlDirParser::Script &);
-QT_END_NAMESPACE
+QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmlerror.cpp b/src/libs/qmljs/parser/qmlerror.cpp
deleted file mode 100644
index 1703847bbd..0000000000
--- a/src/libs/qmljs/parser/qmlerror.cpp
+++ /dev/null
@@ -1,351 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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 "qmlerror.h"
-
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qfile.h>
-#include <QtCore/qstringlist.h>
-#include <QtCore/qvector.h>
-#include <QtCore/qpointer.h>
-
-
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QmlError
- \since 5.0
- \inmodule QtQml
- \brief The QmlError class encapsulates a QML error.
-
- QmlError includes a textual description of the error, as well
- as location information (the file, line, and column). The toString()
- method creates a single-line, human-readable string containing all of
- this information, for example:
- \code
- file:///home/user/test.qml:7:8: Invalid property assignment: double expected
- \endcode
-
- You can use qDebug(), qInfo(), or qWarning() to output errors to the console.
- This method will attempt to open the file indicated by the error
- and include additional contextual information.
- \code
- file:///home/user/test.qml:7:8: Invalid property assignment: double expected
- y: "hello"
- ^
- \endcode
-
- Note that the \l {Qt Quick 1} version is named QDeclarativeError
-
- \sa QQuickView::errors(), QmlComponent::errors()
-*/
-
-static quint16 qmlSourceCoordinate(int n)
-{
- return (n > 0 && n <= static_cast<int>(USHRT_MAX)) ? static_cast<quint16>(n) : 0;
-}
-
-class QmlErrorPrivate
-{
-public:
- QmlErrorPrivate();
-
- QUrl url;
- QString description;
- quint16 line;
- quint16 column;
- QtMsgType messageType;
- QPointer<QObject> object;
-};
-
-QmlErrorPrivate::QmlErrorPrivate()
-: line(0), column(0), messageType(QtMsgType::QtWarningMsg), object()
-{
-}
-
-/*!
- Creates an empty error object.
-*/
-QmlError::QmlError()
-: d(nullptr)
-{
-}
-
-/*!
- Creates a copy of \a other.
-*/
-QmlError::QmlError(const QmlError &other)
-: d(nullptr)
-{
- *this = other;
-}
-
-/*!
- Assigns \a other to this error object.
-*/
-QmlError &QmlError::operator=(const QmlError &other)
-{
- if (!other.d) {
- delete d;
- d = nullptr;
- } else {
- if (!d)
- d = new QmlErrorPrivate;
- d->url = other.d->url;
- d->description = other.d->description;
- d->line = other.d->line;
- d->column = other.d->column;
- d->object = other.d->object;
- d->messageType = other.d->messageType;
- }
- return *this;
-}
-
-/*!
- \internal
-*/
-QmlError::~QmlError()
-{
- delete d; d = nullptr;
-}
-
-/*!
- Returns true if this error is valid, otherwise false.
-*/
-bool QmlError::isValid() const
-{
- return d != nullptr;
-}
-
-/*!
- Returns the url for the file that caused this error.
-*/
-QUrl QmlError::url() const
-{
- if (d)
- return d->url;
- return QUrl();
-}
-
-/*!
- Sets the \a url for the file that caused this error.
-*/
-void QmlError::setUrl(const QUrl &url)
-{
- if (!d)
- d = new QmlErrorPrivate;
- d->url = url;
-}
-
-/*!
- Returns the error description.
-*/
-QString QmlError::description() const
-{
- if (d)
- return d->description;
- return QString();
-}
-
-/*!
- Sets the error \a description.
-*/
-void QmlError::setDescription(const QString &description)
-{
- if (!d)
- d = new QmlErrorPrivate;
- d->description = description;
-}
-
-/*!
- Returns the error line number.
-*/
-int QmlError::line() const
-{
- if (d)
- return qmlSourceCoordinate(d->line);
- return -1;
-}
-
-/*!
- Sets the error \a line number.
-*/
-void QmlError::setLine(int line)
-{
- if (!d)
- d = new QmlErrorPrivate;
- d->line = qmlSourceCoordinate(line);
-}
-
-/*!
- Returns the error column number.
-*/
-int QmlError::column() const
-{
- if (d)
- return qmlSourceCoordinate(d->column);
- return -1;
-}
-
-/*!
- Sets the error \a column number.
-*/
-void QmlError::setColumn(int column)
-{
- if (!d)
- d = new QmlErrorPrivate;
- d->column = qmlSourceCoordinate(column);
-}
-
-/*!
- Returns the nearest object where this error occurred.
- Exceptions in bound property expressions set this to the object
- to which the property belongs. It will be 0 for all
- other exceptions.
- */
-QObject *QmlError::object() const
-{
- if (d)
- return d->object;
- return nullptr;
-}
-
-/*!
- Sets the nearest \a object where this error occurred.
- */
-void QmlError::setObject(QObject *object)
-{
- if (!d)
- d = new QmlErrorPrivate;
- d->object = object;
-}
-
-/*!
- \since 5.9
-
- Returns the message type.
- */
-QtMsgType QmlError::messageType() const
-{
- if (d)
- return d->messageType;
- return QtMsgType::QtWarningMsg;
-}
-
-/*!
- \since 5.9
-
- Sets the \a messageType for this message. The message type determines which
- QDebug handlers are responsible for receiving the message.
- */
-void QmlError::setMessageType(QtMsgType messageType)
-{
- if (!d)
- d = new QmlErrorPrivate;
- d->messageType = messageType;
-}
-
-/*!
- Returns the error as a human readable string.
-*/
-QString QmlError::toString() const
-{
- QString rv;
-
- QUrl u(url());
- int l(line());
-
- if (u.isEmpty() || (u.isLocalFile() && u.path().isEmpty()))
- rv += QLatin1String("<Unknown File>");
- else
- rv += u.toString();
-
- if (l != -1) {
- rv += QLatin1Char(':') + QString::number(l);
-
- int c(column());
- if (c != -1)
- rv += QLatin1Char(':') + QString::number(c);
- }
-
- rv += QLatin1String(": ") + description();
-
- return rv;
-}
-
-/*!
- \relates QmlError
- \fn QDebug operator<<(QDebug debug, const QmlError &error)
-
- Outputs a human readable version of \a error to \a debug.
-*/
-
-QDebug operator<<(QDebug debug, const QmlError &error)
-{
- debug << qPrintable(error.toString());
-
- QUrl url = error.url();
-
- if (error.line() > 0 && url.scheme() == QLatin1String("file")) {
- QString file = url.toLocalFile();
- QFile f(file);
- if (f.open(QIODevice::ReadOnly)) {
- QByteArray data = f.readAll();
- QTextStream stream(data, QIODevice::ReadOnly);
-#if QT_CONFIG(textcodec)
- stream.setCodec("UTF-8");
-#endif
- const QString code = stream.readAll();
- const auto lines = code.splitRef(QLatin1Char('\n'));
-
- if (lines.count() >= error.line()) {
- const QStringRef &line = lines.at(error.line() - 1);
- debug << "\n " << line.toLocal8Bit().constData();
-
- if (error.column() > 0) {
- int column = qMax(0, error.column() - 1);
- column = qMin(column, line.length());
-
- QByteArray ind;
- ind.reserve(column);
- for (int i = 0; i < column; ++i) {
- const QChar ch = line.at(i);
- if (ch.isSpace())
- ind.append(ch.unicode());
- else
- ind.append(' ');
- }
- ind.append('^');
- debug << "\n " << ind.constData();
- }
- }
- }
- }
- return debug;
-}
-
-QT_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljs.g b/src/libs/qmljs/parser/qmljs.g
index e0f7b92a23..46505af1ea 100644
--- a/src/libs/qmljs/parser/qmljs.g
+++ b/src/libs/qmljs/parser/qmljs.g
@@ -73,13 +73,14 @@
%token T_VAR "var" T_VOID "void" T_WHILE "while"
%token T_WITH "with" T_XOR "^" T_XOR_EQ "^="
%token T_NULL "null" T_TRUE "true" T_FALSE "false"
-%token T_CONST "const" T_LET "let"
+%token T_CONST "const" T_LET "let" T_AT "@"
%token T_DEBUGGER "debugger"
%token T_RESERVED_WORD "reserved word"
%token T_MULTILINE_STRING_LITERAL "multiline string literal"
%token T_COMMENT "comment"
%token T_COMPATIBILITY_SEMICOLON
%token T_ARROW "=>"
+%token T_QUESTION_QUESTION "??"
%token T_ENUM "enum"
%token T_ELLIPSIS "..."
%token T_YIELD "yield"
@@ -90,6 +91,7 @@
%token T_EXPORT "export"
%token T_FROM "from"
%token T_REQUIRED "required"
+%token T_COMPONENT "component"
--- template strings
%token T_NO_SUBSTITUTION_TEMPLATE"(no subst template)"
@@ -122,9 +124,10 @@
%token T_FOR_LOOKAHEAD_OK "(for lookahead ok)"
--%left T_PLUS T_MINUS
-%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY T_ON T_SET T_GET T_OF T_STATIC T_FROM T_AS T_REQUIRED
+%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY T_ON T_SET T_GET T_OF T_STATIC T_FROM T_AS T_REQUIRED T_COMPONENT
%nonassoc REDUCE_HERE
%right T_THEN T_ELSE
+%right T_WITHOUTAS T_AS
%start TopLevel
@@ -167,10 +170,10 @@
**
****************************************************************************/
-#include "qmljsengine_p.h"
-#include "qmljslexer_p.h"
-#include "qmljsast_p.h"
-#include "qmljsmemorypool_p.h"
+#include "qmljs/parser/qmljsengine_p.h"
+#include "qmljs/parser/qmljslexer_p.h"
+#include "qmljs/parser/qmljsast_p.h"
+#include "qmljs/parser/qmljsmemorypool_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qcoreapplication.h>
@@ -245,10 +248,11 @@
#ifndef QMLJSPARSER_P_H
#define QMLJSPARSER_P_H
-#include "qmljsglobal_p.h"
-#include "qmljsgrammar_p.h"
-#include "qmljsast_p.h"
-#include "qmljsengine_p.h"
+#include "qmljs/parser/qmljsglobal_p.h"
+#include "qmljs/parser/qmljsgrammar_p.h"
+#include "qmljs/parser/qmljsast_p.h"
+#include "qmljs/parser/qmljsengine_p.h"
+#include "qmljs/parser/qmljsdiagnosticmessage_p.h"
#include <QtCore/qlist.h>
#include <QtCore/qstring.h>
@@ -322,6 +326,8 @@ public:
AST::UiQualifiedId *UiQualifiedId;
AST::UiEnumMemberList *UiEnumMemberList;
AST::UiVersionSpecifier *UiVersionSpecifier;
+ AST::UiAnnotation *UiAnnotation;
+ AST::UiAnnotationList *UiAnnotationList;
};
public:
@@ -403,7 +409,7 @@ protected:
inline QStringRef &rawStringRef(int index)
{ return rawString_stack [tos + index - 1]; }
- inline AST::SourceLocation &loc(int index)
+ inline SourceLocation &loc(int index)
{ return location_stack [tos + index - 1]; }
AST::UiQualifiedId *reparseAsQualifiedId(AST::ExpressionNode *expr);
@@ -411,20 +417,20 @@ protected:
void pushToken(int token);
int lookaheadToken(Lexer *lexer);
- static DiagnosticMessage compileError(const AST::SourceLocation &location,
- const QString &message, Severity::Enum kind = Severity::Error)
+ static DiagnosticMessage compileError(const SourceLocation &location,
+ const QString &message, QtMsgType kind = QtCriticalMsg)
{
DiagnosticMessage error;
error.loc = location;
error.message = message;
- error.kind = kind;
+ error.kind = DiagnosticMessage::qtMsgTypeToKind(kind);
return error;
}
- void syntaxError(const AST::SourceLocation &location, const char *message) {
+ void syntaxError(const SourceLocation &location, const char *message) {
diagnostic_messages.append(compileError(location, QLatin1String(message)));
}
- void syntaxError(const AST::SourceLocation &location, const QString &message) {
+ void syntaxError(const SourceLocation &location, const QString &message) {
diagnostic_messages.append(compileError(location, message));
}
@@ -437,7 +443,7 @@ protected:
int stack_size = 0;
Value *sym_stack = nullptr;
int *state_stack = nullptr;
- AST::SourceLocation *location_stack = nullptr;
+ SourceLocation *location_stack = nullptr;
QVector<QStringRef> string_stack;
QVector<QStringRef> rawString_stack;
@@ -449,7 +455,7 @@ protected:
struct SavedToken {
int token;
double dval;
- AST::SourceLocation loc;
+ SourceLocation loc;
QStringRef spell;
QStringRef raw;
};
@@ -458,8 +464,8 @@ protected:
double yylval = 0.;
QStringRef yytokenspell;
QStringRef yytokenraw;
- AST::SourceLocation yylloc;
- AST::SourceLocation yyprevlloc;
+ SourceLocation yylloc;
+ SourceLocation yyprevlloc;
SavedToken token_buffer[TOKEN_BUFFER_SIZE];
SavedToken *first_token = nullptr;
@@ -472,7 +478,7 @@ protected:
CE_ParenthesizedExpression,
CE_FormalParameterList
};
- AST::SourceLocation coverExpressionErrorLocation;
+ SourceLocation coverExpressionErrorLocation;
CoverExpressionType coverExpressionType = CE_Invalid;
QList<DiagnosticMessage> diagnostic_messages;
@@ -517,7 +523,7 @@ void Parser::reallocateStack()
sym_stack = reinterpret_cast<Value*> (realloc(sym_stack, stack_size * sizeof(Value)));
state_stack = reinterpret_cast<int*> (realloc(state_stack, stack_size * sizeof(int)));
- location_stack = reinterpret_cast<AST::SourceLocation*> (realloc(location_stack, stack_size * sizeof(AST::SourceLocation)));
+ location_stack = reinterpret_cast<SourceLocation*> (realloc(location_stack, stack_size * sizeof(SourceLocation)));
string_stack.resize(stack_size);
rawString_stack.resize(stack_size);
}
@@ -537,9 +543,9 @@ Parser::~Parser()
}
}
-static inline AST::SourceLocation location(Lexer *lexer)
+static inline SourceLocation location(Lexer *lexer)
{
- AST::SourceLocation loc;
+ SourceLocation loc;
loc.offset = lexer->tokenOffset();
loc.length = lexer->tokenLength();
loc.startLine = lexer->tokenStartLine();
@@ -550,7 +556,7 @@ static inline AST::SourceLocation location(Lexer *lexer)
AST::UiQualifiedId *Parser::reparseAsQualifiedId(AST::ExpressionNode *expr)
{
QVarLengthArray<QStringRef, 4> nameIds;
- QVarLengthArray<AST::SourceLocation, 4> locations;
+ QVarLengthArray<SourceLocation, 4> locations;
AST::ExpressionNode *it = expr;
while (AST::FieldMemberExpression *m = AST::cast<AST::FieldMemberExpression *>(it)) {
@@ -734,7 +740,7 @@ TopLevel: T_FEED_JS_EXPRESSION Expression;
} break;
./
-TopLevel: T_FEED_UI_OBJECT_MEMBER UiObjectMember;
+TopLevel: T_FEED_UI_OBJECT_MEMBER UiAnnotatedObjectMember;
/.
case $rule_number: {
sym(1).Node = sym(2).Node;
@@ -849,13 +855,7 @@ UiVersionSpecifier: T_VERSION_NUMBER;
UiImport: UiImportHead UiVersionSpecifier Semicolon;
/.
case $rule_number: {
- auto versionToken = loc(2);
- auto version = sym(2).UiVersionSpecifier;
- sym(1).UiImport->version = version;
- if (version->minorToken.isValid()) {
- versionToken.length += version->minorToken.length + (version->minorToken.offset - versionToken.offset - versionToken.length);
- }
- sym(1).UiImport->versionToken = versionToken;
+ sym(1).UiImport->version = sym(2).UiVersionSpecifier;
sym(1).UiImport->semicolonToken = loc(3);
} break;
./
@@ -863,13 +863,7 @@ UiImport: UiImportHead UiVersionSpecifier Semicolon;
UiImport: UiImportHead UiVersionSpecifier T_AS QmlIdentifier Semicolon;
/.
case $rule_number: {
- auto versionToken = loc(2);
- auto version = sym(2).UiVersionSpecifier;
- sym(1).UiImport->version = version;
- if (version->minorToken.isValid()) {
- versionToken.length += version->minorToken.length + (version->minorToken.offset - versionToken.offset - versionToken.length);
- }
- sym(1).UiImport->versionToken = versionToken;
+ sym(1).UiImport->version = sym(2).UiVersionSpecifier;
sym(1).UiImport->asToken = loc(3);
sym(1).UiImport->importIdToken = loc(4);
sym(1).UiImport->importId = stringRef(4);
@@ -920,21 +914,92 @@ Empty: ;
} break;
./
-UiRootMember: UiObjectDefinition;
+UiRootMember: UiAnnotatedObject;
/.
case $rule_number: {
sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
} break;
./
-UiObjectMemberList: UiObjectMember;
+UiSimpleQualifiedId: T_IDENTIFIER;
+/.
+ case $rule_number: {
+ AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1));
+ node->identifierToken = loc(1);
+ sym(1).Node = node;
+ } break;
+./
+
+UiSimpleQualifiedId: UiSimpleQualifiedId T_DOT T_IDENTIFIER;
+/.
+ case $rule_number: {
+ 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;
+./
+
+UiAnnotationObjectDefinition: UiSimpleQualifiedId UiObjectInitializer;
+/.
+ case $rule_number: {
+ if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) {
+ sym(1).UiQualifiedId = qualifiedId;
+ } else {
+ sym(1).UiQualifiedId = 0;
+
+ diagnostic_messages.append(compileError(loc(1),
+ QLatin1String("Expected a qualified name id")));
+
+ return false;
+ }
+ AST::UiAnnotation *node = new (pool) AST::UiAnnotation(sym(1).UiQualifiedId, sym(2).UiObjectInitializer);
+ sym(1).Node = node;
+ } break;
+./
+
+UiAnnotation: T_AT UiAnnotationObjectDefinition;
+/.
+case $rule_number: {
+ sym(1).Node = sym(2).Node;
+} break;
+./
+
+
+UiAnnotationList: UiAnnotation;
+/.
+ case $rule_number: {
+ sym(1).Node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotation);
+ } break;
+./
+
+UiAnnotationList: UiAnnotationList UiAnnotation;
+/.
+ case $rule_number: {
+ AST::UiAnnotationList *node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotationList, sym(2).UiAnnotation);
+ sym(1).Node = node;
+ } break;
+./
+
+UiAnnotatedObject: UiAnnotationList UiObjectDefinition;
+/.
+ case $rule_number: {
+ AST::UiObjectDefinition *node = sym(2).UiObjectDefinition;
+ node->annotations = sym(1).UiAnnotationList->finish();
+ sym(1).Node = node;
+ } break;
+./
+
+UiAnnotatedObject: UiObjectDefinition;
+
+UiObjectMemberList: UiAnnotatedObjectMember;
/.
case $rule_number: {
sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
} break;
./
-UiObjectMemberList: UiObjectMemberList UiObjectMember;
+UiObjectMemberList: UiObjectMemberList UiAnnotatedObjectMember;
/.
case $rule_number: {
AST::UiObjectMemberList *node = new (pool) AST:: UiObjectMemberList(sym(1).UiObjectMemberList, sym(2).UiObjectMember);
@@ -986,6 +1051,17 @@ UiObjectDefinition: UiQualifiedId UiObjectInitializer;
} break;
./
+UiAnnotatedObjectMember: UiAnnotationList UiObjectMember;
+/.
+ case $rule_number: {
+ AST::UiObjectMember *node = sym(2).UiObjectMember;
+ node->annotations = sym(1).UiAnnotationList->finish();
+ sym(1).Node = sym(2).Node;
+ } break;
+./
+
+UiAnnotatedObjectMember: UiObjectMember;
+
UiObjectMember: UiObjectDefinition;
UiObjectMember: UiQualifiedId T_COLON ExpressionStatementLookahead T_LBRACKET UiArrayMemberList T_RBRACKET;
@@ -1021,15 +1097,27 @@ UiObjectMember: UiQualifiedId T_ON UiQualifiedId UiObjectInitializer;
./
-UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_RBRACE;
-/. case $rule_number: Q_FALLTHROUGH(); ./
-UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_COMMA T_RBRACE;
+UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_RBRACE Semicolon;
/.
case $rule_number: {
AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish());
l->lbraceToken = loc(1);
l->rbraceToken = loc(4);
AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l);
+ node->semicolonToken = loc(5);
+ sym(1).Node = node;
+ } break;
+./
+
+
+UiObjectLiteral: T_LBRACE ExpressionStatementLookahead UiPropertyDefinitionList T_COMMA T_RBRACE Semicolon;
+/.
+ case $rule_number: {
+ AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish());
+ l->lbraceToken = loc(1);
+ l->rbraceToken = loc(5);
+ AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l);
+ node->semicolonToken = loc(6);
sym(1).Node = node;
} break;
./
@@ -1242,12 +1330,49 @@ UiObjectMember: T_DEFAULT UiObjectMemberListPropertyNoInitialiser;
} break;
./
+UiObjectMember: T_DEFAULT T_REQUIRED UiObjectMemberPropertyNoInitialiser;
+/.
+ case $rule_number: {
+ AST::UiPublicMember *node = sym(3).UiPublicMember;
+ node->isDefaultMember = true;
+ node->defaultToken = loc(1);
+ node->isRequired = true;
+ node->requiredToken = loc(2);
+ sym(1).Node = node;
+ } break;
+./
+
+
+UiObjectMember: T_REQUIRED T_DEFAULT UiObjectMemberPropertyNoInitialiser;
+/.
+ case $rule_number: {
+ AST::UiPublicMember *node = sym(3).UiPublicMember;
+ node->isDefaultMember = true;
+ node->defaultToken = loc(2);
+ node->isRequired = true;
+ node->requiredToken = loc(1);
+ sym(1).Node = node;
+ } break;
+./
+
OptionalSemicolon: | Semicolon;
/.
/* 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)*/
./
+UiRequired: T_REQUIRED QmlIdentifier Semicolon;
+/.
+ case $rule_number: {
+ AST::UiRequired *node = new (pool) AST::UiRequired(stringRef(2));
+ node->requiredToken = loc(1);
+ node->semicolonToken = loc(3);
+ sym(1).Node = node;
+ } break;
+./
+
+UiObjectMember: UiRequired;
+
UiObjectMember: T_REQUIRED UiObjectMemberPropertyNoInitialiser;
/.
case $rule_number: {
@@ -1258,7 +1383,6 @@ UiObjectMember: T_REQUIRED UiObjectMemberPropertyNoInitialiser;
} break;
./
-
UiObjectMemberWithScriptStatement: T_PROPERTY UiPropertyType QmlIdentifier T_COLON UiScriptStatement OptionalSemicolon;
/.
case $rule_number: {
@@ -1393,7 +1517,7 @@ UiQualifiedId: MemberExpression;
case $rule_number: {
if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
diagnostic_messages.append(compileError(mem->lbracketToken,
- QLatin1String("Ignored annotation"), Severity::Warning));
+ QLatin1String("Ignored annotation"), QtWarningMsg));
sym(1).Expression = mem->base;
}
@@ -1422,6 +1546,19 @@ UiObjectMember: T_ENUM T_IDENTIFIER T_LBRACE EnumMemberList T_RBRACE;
}
./
+UiObjectMember: T_COMPONENT T_IDENTIFIER T_COLON UiObjectDefinition;
+/.
+ case $rule_number: {
+ if (!stringRef(2).front().isUpper()) {
+ diagnostic_messages.append(compileError(loc(2),
+ QLatin1String("Type name must be upper case"), QtWarningMsg));
+ }
+ auto inlineComponent = new (pool) AST::UiInlineComponent(stringRef(2), sym(4).UiObjectDefinition);
+ inlineComponent->componentToken = loc(1);
+ sym(1).Node = inlineComponent;
+ } break;
+./
+
EnumMemberList: T_IDENTIFIER;
/.
case $rule_number: {
@@ -1464,29 +1601,31 @@ EnumMemberList: EnumMemberList T_COMMA T_IDENTIFIER T_EQ T_NUMERIC_LITERAL;
}
./
-QmlIdentifier: T_IDENTIFIER;
-QmlIdentifier: T_PROPERTY;
-QmlIdentifier: T_SIGNAL;
-QmlIdentifier: T_READONLY;
-QmlIdentifier: T_ON;
-QmlIdentifier: T_GET;
-QmlIdentifier: T_SET;
-QmlIdentifier: T_FROM;
-QmlIdentifier: T_OF;
-QmlIdentifier: T_REQUIRED;
-
-JsIdentifier: T_IDENTIFIER;
-JsIdentifier: T_PROPERTY;
-JsIdentifier: T_SIGNAL;
-JsIdentifier: T_READONLY;
-JsIdentifier: T_ON;
-JsIdentifier: T_GET;
-JsIdentifier: T_SET;
-JsIdentifier: T_FROM;
-JsIdentifier: T_STATIC;
-JsIdentifier: T_OF;
-JsIdentifier: T_AS;
-JsIdentifier: T_REQUIRED;
+QmlIdentifier: T_IDENTIFIER
+ | T_PROPERTY
+ | T_SIGNAL
+ | T_READONLY
+ | T_ON
+ | T_GET
+ | T_SET
+ | T_FROM
+ | T_OF
+ | T_REQUIRED
+ | T_COMPONENT;
+
+JsIdentifier: T_IDENTIFIER
+ | T_PROPERTY
+ | T_SIGNAL
+ | T_READONLY
+ | T_ON
+ | T_GET
+ | T_SET
+ | T_FROM
+ | T_STATIC
+ | T_OF
+ | T_AS
+ | T_REQUIRED
+ | T_COMPONENT;
IdentifierReference: JsIdentifier;
BindingIdentifier: IdentifierReference;
@@ -2510,6 +2649,20 @@ RelationalExpression_In: RelationalExpression_In T_IN ShiftExpression;
} break;
./
+TypeAssertExpression_In: RelationalExpression_In T_AS Type;
+/. case $rule_number: Q_FALLTHROUGH(); ./
+TypeAssertExpression: RelationalExpression T_AS Type;
+/.
+ case $rule_number: {
+ AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::As, sym(3).Expression);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+ } break;
+./
+
+RelationalExpression_In: TypeAssertExpression_In;
+RelationalExpression: TypeAssertExpression;
+
EqualityExpression_In: RelationalExpression_In;
EqualityExpression: RelationalExpression;
@@ -2621,13 +2774,48 @@ LogicalORExpression_In: LogicalORExpression_In T_OR_OR LogicalANDExpression_In;
} break;
./
+CoalesceExpression: LogicalORExpression;
+CoalesceExpression_In: LogicalORExpression_In;
+
+CoalesceExpression: CoalesceExpression T_QUESTION_QUESTION LogicalORExpression;
+/. case $rule_number: Q_FALLTHROUGH(); ./
+CoalesceExpression_In: CoalesceExpression_In T_QUESTION_QUESTION LogicalORExpression_In;
+/.
+ case $rule_number: {
+
+ auto *lhs = sym(1).Expression;
+ auto *rhs = sym(3).Expression;
+
+ // Check if lhs or rhs contain || or &&
+
+ if (lhs->binaryExpressionCast() != nullptr) {
+ auto *binaryExpr = lhs->binaryExpressionCast();
+ if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) {
+ syntaxError(binaryExpr->operatorToken, "Left-hand side may not contain || or &&");
+ return false;
+ }
+ }
+
+ if (rhs->binaryExpressionCast() != nullptr) {
+ auto *binaryExpr = rhs->binaryExpressionCast();
+ if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) {
+ syntaxError(binaryExpr->operatorToken, "Right-hand side may not contain || or &&");
+ return false;
+ }
+ }
+
+ AST::BinaryExpression *node = new (pool) AST::BinaryExpression(lhs, QSOperator::Coalesce, rhs);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+ } break;
+./
-ConditionalExpression: LogicalORExpression;
-ConditionalExpression_In: LogicalORExpression_In;
+ConditionalExpression: CoalesceExpression;
+ConditionalExpression_In: CoalesceExpression_In;
-ConditionalExpression: LogicalORExpression T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression;
+ConditionalExpression: CoalesceExpression T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression;
/. case $rule_number: Q_FALLTHROUGH(); ./
-ConditionalExpression_In: LogicalORExpression_In T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression_In;
+ConditionalExpression_In: CoalesceExpression_In T_QUESTION AssignmentExpression_In T_COLON AssignmentExpression_In;
/.
case $rule_number: {
AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression, sym(3).Expression, sym(5).Expression);
@@ -2653,7 +2841,7 @@ AssignmentExpression_In: LeftHandSideExpression T_EQ AssignmentExpression_In;
case $rule_number: {
// need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral
if (AST::Pattern *p = sym(1).Expression->patternCast()) {
- AST::SourceLocation errorLoc;
+ SourceLocation errorLoc;
QString errorMsg;
if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) {
syntaxError(errorLoc, errorMsg);
@@ -3319,7 +3507,7 @@ IterationStatement: T_FOR T_LPAREN LeftHandSideExpression InOrOf Expression_In T
case $rule_number: {
// need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral
if (AST::Pattern *p = sym(3).Expression->patternCast()) {
- AST::SourceLocation errorLoc;
+ SourceLocation errorLoc;
QString errorMsg;
if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) {
syntaxError(errorLoc, errorMsg);
@@ -4366,7 +4554,10 @@ ImportsList: ImportsList T_COMMA ImportSpecifier;
} break;
./
-ImportSpecifier: ImportedBinding;
+-- When enconutering an IdentifierReference it can resolve to both ImportedBinding and IdentifierName
+-- Using %right and %prec, we tell qlalr that it should not reduce immediately, but rather shift
+-- so that we have a chance of actually parsing the correct rule if there is an "as" identifier
+ImportSpecifier: ImportedBinding %prec T_WITHOUTAS;
/.
case $rule_number: {
auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1));
@@ -4572,7 +4763,7 @@ ExportSpecifier: IdentifierName T_AS IdentifierName;
yylloc.length = 0;
//const QString msg = QCoreApplication::translate("QmlParser", "Missing `;'");
- //diagnostic_messages.append(compileError(yyloc, msg, Severity::Warning));
+ //diagnostic_messages.append(compileError(yyloc, msg, QtWarningMsg));
first_token = &token_buffer[0];
last_token = &token_buffer[1];
diff --git a/src/libs/qmljs/parser/qmljsast.cpp b/src/libs/qmljs/parser/qmljsast.cpp
index 0869de97ef..65337ec109 100644
--- a/src/libs/qmljs/parser/qmljsast.cpp
+++ b/src/libs/qmljs/parser/qmljsast.cpp
@@ -153,7 +153,7 @@ UiObjectMember *UiObjectMember::uiObjectMemberCast()
return this;
}
-void NestedExpression::accept0(Visitor *visitor)
+void NestedExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -171,7 +171,7 @@ ClassExpression *NestedExpression::asClassDefinition()
return expression->asClassDefinition();
}
-void ThisExpression::accept0(Visitor *visitor)
+void ThisExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -179,7 +179,7 @@ void ThisExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void IdentifierExpression::accept0(Visitor *visitor)
+void IdentifierExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -187,7 +187,7 @@ void IdentifierExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NullExpression::accept0(Visitor *visitor)
+void NullExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -195,7 +195,7 @@ void NullExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TrueLiteral::accept0(Visitor *visitor)
+void TrueLiteral::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -203,7 +203,7 @@ void TrueLiteral::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void FalseLiteral::accept0(Visitor *visitor)
+void FalseLiteral::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -211,7 +211,7 @@ void FalseLiteral::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void SuperLiteral::accept0(Visitor *visitor)
+void SuperLiteral::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -220,7 +220,7 @@ void SuperLiteral::accept0(Visitor *visitor)
}
-void StringLiteral::accept0(Visitor *visitor)
+void StringLiteral::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -228,7 +228,7 @@ void StringLiteral::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TemplateLiteral::accept0(Visitor *visitor)
+void TemplateLiteral::accept0(BaseVisitor *visitor)
{
bool accepted = true;
for (TemplateLiteral *it = this; it && accepted; it = it->next) {
@@ -237,7 +237,7 @@ void TemplateLiteral::accept0(Visitor *visitor)
}
}
-void NumericLiteral::accept0(Visitor *visitor)
+void NumericLiteral::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -245,7 +245,7 @@ void NumericLiteral::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void RegExpLiteral::accept0(Visitor *visitor)
+void RegExpLiteral::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -253,7 +253,7 @@ void RegExpLiteral::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ArrayPattern::accept0(Visitor *visitor)
+void ArrayPattern::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this))
accept(elements, visitor);
@@ -273,7 +273,7 @@ bool ArrayPattern::isValidArrayLiteral(SourceLocation *errorLocation) const {
return true;
}
-void ObjectPattern::accept0(Visitor *visitor)
+void ObjectPattern::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(properties, visitor);
@@ -448,7 +448,7 @@ bool PatternProperty::convertLiteralToAssignmentPattern(MemoryPool *pool, Source
}
-void Elision::accept0(Visitor *visitor)
+void Elision::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
// ###
@@ -457,7 +457,7 @@ void Elision::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void IdentifierPropertyName::accept0(Visitor *visitor)
+void IdentifierPropertyName::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -465,7 +465,7 @@ void IdentifierPropertyName::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void StringLiteralPropertyName::accept0(Visitor *visitor)
+void StringLiteralPropertyName::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -473,7 +473,7 @@ void StringLiteralPropertyName::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NumericLiteralPropertyName::accept0(Visitor *visitor)
+void NumericLiteralPropertyName::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -503,7 +503,7 @@ QString NumericLiteralPropertyName::asString()const
return locale.toString(id, 'g', 16);
}
-void ArrayMemberExpression::accept0(Visitor *visitor)
+void ArrayMemberExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -513,7 +513,7 @@ void ArrayMemberExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void FieldMemberExpression::accept0(Visitor *visitor)
+void FieldMemberExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -522,7 +522,7 @@ void FieldMemberExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NewMemberExpression::accept0(Visitor *visitor)
+void NewMemberExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -532,7 +532,7 @@ void NewMemberExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NewExpression::accept0(Visitor *visitor)
+void NewExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -541,7 +541,7 @@ void NewExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void CallExpression::accept0(Visitor *visitor)
+void CallExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -551,7 +551,7 @@ void CallExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ArgumentList::accept0(Visitor *visitor)
+void ArgumentList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (ArgumentList *it = this; it; it = it->next) {
@@ -562,7 +562,7 @@ void ArgumentList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void PostIncrementExpression::accept0(Visitor *visitor)
+void PostIncrementExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -571,7 +571,7 @@ void PostIncrementExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void PostDecrementExpression::accept0(Visitor *visitor)
+void PostDecrementExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -580,7 +580,7 @@ void PostDecrementExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void DeleteExpression::accept0(Visitor *visitor)
+void DeleteExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -589,7 +589,7 @@ void DeleteExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void VoidExpression::accept0(Visitor *visitor)
+void VoidExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -598,7 +598,7 @@ void VoidExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TypeOfExpression::accept0(Visitor *visitor)
+void TypeOfExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -607,7 +607,7 @@ void TypeOfExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void PreIncrementExpression::accept0(Visitor *visitor)
+void PreIncrementExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -616,7 +616,7 @@ void PreIncrementExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void PreDecrementExpression::accept0(Visitor *visitor)
+void PreDecrementExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -625,7 +625,7 @@ void PreDecrementExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UnaryPlusExpression::accept0(Visitor *visitor)
+void UnaryPlusExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -634,7 +634,7 @@ void UnaryPlusExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UnaryMinusExpression::accept0(Visitor *visitor)
+void UnaryMinusExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -643,7 +643,7 @@ void UnaryMinusExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TildeExpression::accept0(Visitor *visitor)
+void TildeExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -652,7 +652,7 @@ void TildeExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NotExpression::accept0(Visitor *visitor)
+void NotExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -661,7 +661,7 @@ void NotExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void BinaryExpression::accept0(Visitor *visitor)
+void BinaryExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(left, visitor);
@@ -671,7 +671,7 @@ void BinaryExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ConditionalExpression::accept0(Visitor *visitor)
+void ConditionalExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -682,7 +682,7 @@ void ConditionalExpression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void Expression::accept0(Visitor *visitor)
+void Expression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(left, visitor);
@@ -692,7 +692,7 @@ void Expression::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void Block::accept0(Visitor *visitor)
+void Block::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statements, visitor);
@@ -701,7 +701,7 @@ void Block::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void StatementList::accept0(Visitor *visitor)
+void StatementList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (StatementList *it = this; it; it = it->next) {
@@ -712,7 +712,7 @@ void StatementList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void VariableStatement::accept0(Visitor *visitor)
+void VariableStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(declarations, visitor);
@@ -721,7 +721,7 @@ void VariableStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void VariableDeclarationList::accept0(Visitor *visitor)
+void VariableDeclarationList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (VariableDeclarationList *it = this; it; it = it->next) {
@@ -732,7 +732,7 @@ void VariableDeclarationList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void EmptyStatement::accept0(Visitor *visitor)
+void EmptyStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -740,7 +740,7 @@ void EmptyStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ExpressionStatement::accept0(Visitor *visitor)
+void ExpressionStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -749,7 +749,7 @@ void ExpressionStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void IfStatement::accept0(Visitor *visitor)
+void IfStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -760,7 +760,7 @@ void IfStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void DoWhileStatement::accept0(Visitor *visitor)
+void DoWhileStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statement, visitor);
@@ -770,7 +770,7 @@ void DoWhileStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void WhileStatement::accept0(Visitor *visitor)
+void WhileStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -780,7 +780,7 @@ void WhileStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ForStatement::accept0(Visitor *visitor)
+void ForStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(initialiser, visitor);
@@ -793,7 +793,7 @@ void ForStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ForEachStatement::accept0(Visitor *visitor)
+void ForEachStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(lhs, visitor);
@@ -804,7 +804,7 @@ void ForEachStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ContinueStatement::accept0(Visitor *visitor)
+void ContinueStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -812,7 +812,7 @@ void ContinueStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void BreakStatement::accept0(Visitor *visitor)
+void BreakStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -820,7 +820,7 @@ void BreakStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ReturnStatement::accept0(Visitor *visitor)
+void ReturnStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -829,7 +829,7 @@ void ReturnStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void YieldExpression::accept0(Visitor *visitor)
+void YieldExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -839,7 +839,7 @@ void YieldExpression::accept0(Visitor *visitor)
}
-void WithStatement::accept0(Visitor *visitor)
+void WithStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -849,7 +849,7 @@ void WithStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void SwitchStatement::accept0(Visitor *visitor)
+void SwitchStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -859,7 +859,7 @@ void SwitchStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void CaseBlock::accept0(Visitor *visitor)
+void CaseBlock::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(clauses, visitor);
@@ -870,7 +870,7 @@ void CaseBlock::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void CaseClauses::accept0(Visitor *visitor)
+void CaseClauses::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (CaseClauses *it = this; it; it = it->next) {
@@ -881,7 +881,7 @@ void CaseClauses::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void CaseClause::accept0(Visitor *visitor)
+void CaseClause::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -891,7 +891,7 @@ void CaseClause::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void DefaultClause::accept0(Visitor *visitor)
+void DefaultClause::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statements, visitor);
@@ -900,7 +900,7 @@ void DefaultClause::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void LabelledStatement::accept0(Visitor *visitor)
+void LabelledStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statement, visitor);
@@ -909,7 +909,7 @@ void LabelledStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ThrowStatement::accept0(Visitor *visitor)
+void ThrowStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -918,7 +918,7 @@ void ThrowStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TryStatement::accept0(Visitor *visitor)
+void TryStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statement, visitor);
@@ -929,7 +929,7 @@ void TryStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void Catch::accept0(Visitor *visitor)
+void Catch::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(patternElement, visitor);
@@ -939,7 +939,7 @@ void Catch::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void Finally::accept0(Visitor *visitor)
+void Finally::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statement, visitor);
@@ -948,7 +948,7 @@ void Finally::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void FunctionDeclaration::accept0(Visitor *visitor)
+void FunctionDeclaration::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(formals, visitor);
@@ -959,7 +959,7 @@ void FunctionDeclaration::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void FunctionExpression::accept0(Visitor *visitor)
+void FunctionExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(formals, visitor);
@@ -1004,7 +1004,7 @@ BoundNames FormalParameterList::boundNames() const
return names;
}
-void FormalParameterList::accept0(Visitor *visitor)
+void FormalParameterList::accept0(BaseVisitor *visitor)
{
bool accepted = true;
for (FormalParameterList *it = this; it && accepted; it = it->next) {
@@ -1029,7 +1029,7 @@ FormalParameterList *FormalParameterList::finish(QmlJS::MemoryPool *pool)
return front;
}
-void Program::accept0(Visitor *visitor)
+void Program::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(statements, visitor);
@@ -1038,7 +1038,7 @@ void Program::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ImportSpecifier::accept0(Visitor *visitor)
+void ImportSpecifier::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1046,7 +1046,7 @@ void ImportSpecifier::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ImportsList::accept0(Visitor *visitor)
+void ImportsList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (ImportsList *it = this; it; it = it->next) {
@@ -1057,7 +1057,7 @@ void ImportsList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NamedImports::accept0(Visitor *visitor)
+void NamedImports::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(importsList, visitor);
@@ -1066,7 +1066,7 @@ void NamedImports::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void FromClause::accept0(Visitor *visitor)
+void FromClause::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -1074,7 +1074,7 @@ void FromClause::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void NameSpaceImport::accept0(Visitor *visitor)
+void NameSpaceImport::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -1082,7 +1082,7 @@ void NameSpaceImport::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ImportClause::accept0(Visitor *visitor)
+void ImportClause::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(nameSpaceImport, visitor);
@@ -1092,7 +1092,7 @@ void ImportClause::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ImportDeclaration::accept0(Visitor *visitor)
+void ImportDeclaration::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(importClause, visitor);
@@ -1102,7 +1102,7 @@ void ImportDeclaration::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ExportSpecifier::accept0(Visitor *visitor)
+void ExportSpecifier::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
@@ -1111,7 +1111,7 @@ void ExportSpecifier::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ExportsList::accept0(Visitor *visitor)
+void ExportsList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (ExportsList *it = this; it; it = it->next) {
@@ -1122,7 +1122,7 @@ void ExportsList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ExportClause::accept0(Visitor *visitor)
+void ExportClause::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(exportsList, visitor);
@@ -1131,7 +1131,7 @@ void ExportClause::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ExportDeclaration::accept0(Visitor *visitor)
+void ExportDeclaration::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(fromClause, visitor);
@@ -1142,7 +1142,7 @@ void ExportDeclaration::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ESModule::accept0(Visitor *visitor)
+void ESModule::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(body, visitor);
@@ -1151,7 +1151,7 @@ void ESModule::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void DebuggerStatement::accept0(Visitor *visitor)
+void DebuggerStatement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -1159,7 +1159,7 @@ void DebuggerStatement::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiProgram::accept0(Visitor *visitor)
+void UiProgram::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(headers, visitor);
@@ -1169,19 +1169,23 @@ void UiProgram::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiPublicMember::accept0(Visitor *visitor)
+void UiPublicMember::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
+ // accept(memberType, visitor); // accept manually in visit if interested
accept(statement, visitor);
accept(binding, visitor);
+ // accept(parameters, visitor); // accept manually in visit if interested
}
visitor->endVisit(this);
}
-void UiObjectDefinition::accept0(Visitor *visitor)
+void UiObjectDefinition::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
accept(qualifiedTypeNameId, visitor);
accept(initializer, visitor);
}
@@ -1189,7 +1193,7 @@ void UiObjectDefinition::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiObjectInitializer::accept0(Visitor *visitor)
+void UiObjectInitializer::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(members, visitor);
@@ -1198,16 +1202,18 @@ void UiObjectInitializer::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiParameterList::accept0(Visitor *visitor)
+void UiParameterList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(type, visitor); // accept manually in visit if interested
}
visitor->endVisit(this);
}
-void UiObjectBinding::accept0(Visitor *visitor)
+void UiObjectBinding::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
accept(qualifiedId, visitor);
accept(qualifiedTypeNameId, visitor);
accept(initializer, visitor);
@@ -1216,9 +1222,10 @@ void UiObjectBinding::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiScriptBinding::accept0(Visitor *visitor)
+void UiScriptBinding::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
accept(qualifiedId, visitor);
accept(statement, visitor);
}
@@ -1226,9 +1233,10 @@ void UiScriptBinding::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiArrayBinding::accept0(Visitor *visitor)
+void UiArrayBinding::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
accept(qualifiedId, visitor);
accept(members, visitor);
}
@@ -1236,7 +1244,7 @@ void UiArrayBinding::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiObjectMemberList::accept0(Visitor *visitor)
+void UiObjectMemberList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (UiObjectMemberList *it = this; it; it = it->next)
@@ -1246,7 +1254,7 @@ void UiObjectMemberList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiArrayMemberList::accept0(Visitor *visitor)
+void UiArrayMemberList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (UiArrayMemberList *it = this; it; it = it->next)
@@ -1256,15 +1264,16 @@ void UiArrayMemberList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiQualifiedId::accept0(Visitor *visitor)
+void UiQualifiedId::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(next, visitor) // accept manually in visit if interested
}
visitor->endVisit(this);
}
-void Type::accept0(Visitor *visitor)
+void Type::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(typeId, visitor);
@@ -1274,7 +1283,7 @@ void Type::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TypeArgumentList::accept0(Visitor *visitor)
+void TypeArgumentList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
for (TypeArgumentList *it = this; it; it = it->next)
@@ -1284,7 +1293,7 @@ void TypeArgumentList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TypeAnnotation::accept0(Visitor *visitor)
+void TypeAnnotation::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(type, visitor);
@@ -1293,16 +1302,17 @@ void TypeAnnotation::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiImport::accept0(Visitor *visitor)
+void UiImport::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(importUri, visitor);
+ // accept(version, visitor); // accept manually in visit if interested
}
visitor->endVisit(this);
}
-void UiPragma::accept0(Visitor *visitor)
+void UiPragma::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -1310,7 +1320,7 @@ void UiPragma::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiHeaderItemList::accept0(Visitor *visitor)
+void UiHeaderItemList::accept0(BaseVisitor *visitor)
{
bool accepted = true;
for (UiHeaderItemList *it = this; it && accepted; it = it->next) {
@@ -1323,25 +1333,27 @@ void UiHeaderItemList::accept0(Visitor *visitor)
}
-void UiSourceElement::accept0(Visitor *visitor)
+void UiSourceElement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
accept(sourceElement, visitor);
}
visitor->endVisit(this);
}
-void UiEnumDeclaration::accept0(Visitor *visitor)
+void UiEnumDeclaration::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
accept(members, visitor);
}
visitor->endVisit(this);
}
-void UiEnumMemberList::accept0(Visitor *visitor)
+void UiEnumMemberList::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -1349,7 +1361,7 @@ void UiEnumMemberList::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void TaggedTemplate::accept0(Visitor *visitor)
+void TaggedTemplate::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(base, visitor);
@@ -1359,7 +1371,7 @@ void TaggedTemplate::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void PatternElement::accept0(Visitor *visitor)
+void PatternElement::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(bindingTarget, visitor);
@@ -1382,7 +1394,7 @@ void PatternElement::boundNames(BoundNames *names)
}
}
-void PatternElementList::accept0(Visitor *visitor)
+void PatternElementList::accept0(BaseVisitor *visitor)
{
bool accepted = true;
for (PatternElementList *it = this; it && accepted; it = it->next) {
@@ -1403,7 +1415,7 @@ void PatternElementList::boundNames(BoundNames *names)
}
}
-void PatternProperty::accept0(Visitor *visitor)
+void PatternProperty::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(name, visitor);
@@ -1420,7 +1432,7 @@ void PatternProperty::boundNames(BoundNames *names)
PatternElement::boundNames(names);
}
-void PatternPropertyList::accept0(Visitor *visitor)
+void PatternPropertyList::accept0(BaseVisitor *visitor)
{
bool accepted = true;
for (PatternPropertyList *it = this; it && accepted; it = it->next) {
@@ -1437,7 +1449,7 @@ void PatternPropertyList::boundNames(BoundNames *names)
it->property->boundNames(names);
}
-void ComputedPropertyName::accept0(Visitor *visitor)
+void ComputedPropertyName::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
@@ -1446,7 +1458,7 @@ void ComputedPropertyName::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ClassExpression::accept0(Visitor *visitor)
+void ClassExpression::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(heritage, visitor);
@@ -1461,7 +1473,7 @@ ClassExpression *ClassExpression::asClassDefinition()
return this;
}
-void ClassDeclaration::accept0(Visitor *visitor)
+void ClassDeclaration::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
accept(heritage, visitor);
@@ -1471,7 +1483,7 @@ void ClassDeclaration::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void ClassElementList::accept0(Visitor *visitor)
+void ClassElementList::accept0(BaseVisitor *visitor)
{
bool accepted = true;
for (ClassElementList *it = this; it && accepted; it = it->next) {
@@ -1500,7 +1512,7 @@ LeftHandSideExpression *LeftHandSideExpression::leftHandSideExpressionCast()
return this;
}
-void UiVersionSpecifier::accept0(Visitor *visitor)
+void UiVersionSpecifier::accept0(BaseVisitor *visitor)
{
if (visitor->visit(this)) {
}
@@ -1531,6 +1543,44 @@ void Type::toString(QString *out) const
};
}
+void UiInlineComponent::accept0(BaseVisitor *visitor)
+{
+ if (visitor->visit(this)) {
+ // accept(annotations, visitor); // accept manually in visit if interested
+ accept(component, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
+void UiRequired::accept0(BaseVisitor *visitor)
+{
+ if (visitor->visit(this)) {
+ }
+
+ visitor->endVisit(this);
+}
+
+void UiAnnotationList::accept0(BaseVisitor *visitor)
+{
+ if (visitor->visit(this)) {
+ for (UiAnnotationList *it = this; it; it = it->next)
+ accept(it->annotation, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
+void UiAnnotation::accept0(BaseVisitor *visitor)
+{
+ if (visitor->visit(this)) {
+ accept(qualifiedTypeNameId, visitor);
+ accept(initializer, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
} } // namespace QmlJS::AST
QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h
index 3faddcecb3..209a983c52 100644
--- a/src/libs/qmljs/parser/qmljsast_p.h
+++ b/src/libs/qmljs/parser/qmljsast_p.h
@@ -38,7 +38,8 @@
#include "qmljsastvisitor_p.h"
#include "qmljsglobal_p.h"
-#include "qmljsmemorypool_p.h"
+
+#include "qmljs/parser/qmljsmemorypool_p.h"
#include <QtCore/qstring.h>
@@ -88,6 +89,8 @@ enum Op {
URShift,
InplaceURightShift,
InplaceXor,
+ As,
+ Coalesce,
Invalid
};
@@ -226,6 +229,7 @@ public:
Kind_UiImport,
Kind_UiObjectBinding,
Kind_UiObjectDefinition,
+ Kind_UiInlineComponent,
Kind_UiObjectInitializer,
Kind_UiObjectMemberList,
Kind_UiArrayMemberList,
@@ -239,7 +243,10 @@ public:
Kind_UiHeaderItemList,
Kind_UiEnumDeclaration,
Kind_UiEnumMemberList,
- Kind_UiVersionSpecifier
+ Kind_UiVersionSpecifier,
+ Kind_UiRequired,
+ Kind_UiAnnotation,
+ Kind_UiAnnotationList
};
inline Node() {}
@@ -261,9 +268,9 @@ public:
bool ignoreRecursionDepth() const;
- inline void accept(Visitor *visitor)
+ inline void accept(BaseVisitor *visitor)
{
- Visitor::RecursionDepthCheck recursionCheck(visitor);
+ BaseVisitor::RecursionDepthCheck recursionCheck(visitor);
// Stack overflow is uncommon, ignoreRecursionDepth() only returns true if
// QV4_CRASH_ON_STACKOVERFLOW is set, and ignoreRecursionDepth() needs to be out of line.
@@ -277,19 +284,19 @@ public:
}
}
- inline static void accept(Node *node, Visitor *visitor)
+ inline static void accept(Node *node, BaseVisitor *visitor)
{
if (node)
node->accept(visitor);
}
// ### Remove when we can. This is part of the qmldevtools library, though.
- inline static void acceptChild(Node *node, Visitor *visitor)
+ inline static void acceptChild(Node *node, BaseVisitor *visitor)
{
return accept(node, visitor);
}
- virtual void accept0(Visitor *visitor) = 0;
+ virtual void accept0(BaseVisitor *visitor) = 0;
virtual SourceLocation firstSourceLocation() const = 0;
virtual SourceLocation lastSourceLocation() const = 0;
@@ -330,7 +337,7 @@ public:
return head;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return identifierToken; }
@@ -354,7 +361,7 @@ public:
, typeArguments(typeArguments)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return typeId->firstSourceLocation(); }
@@ -389,7 +396,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return typeId->firstSourceLocation(); }
@@ -418,7 +425,7 @@ public:
: type(type)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return colonToken; }
@@ -463,7 +470,7 @@ public:
: expression(expression)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return lparenToken; }
@@ -488,7 +495,7 @@ public:
ThisExpression() { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return thisToken; }
@@ -508,7 +515,7 @@ public:
IdentifierExpression(const QStringRef &n):
name (n) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return identifierToken; }
@@ -528,7 +535,7 @@ public:
NullExpression() { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return nullToken; }
@@ -547,7 +554,7 @@ public:
TrueLiteral() { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return trueToken; }
@@ -566,7 +573,7 @@ public:
FalseLiteral() { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return falseToken; }
@@ -585,7 +592,7 @@ public:
SuperLiteral() { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return superToken; }
@@ -606,7 +613,7 @@ public:
NumericLiteral(double v):
value(v) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return literalToken; }
@@ -626,7 +633,7 @@ public:
UiVersionSpecifier(int majorum, int minorum) : majorVersion(majorum), minorVersion(minorum) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override { return majorToken; }
@@ -650,7 +657,7 @@ public:
StringLiteral(const QStringRef &v):
value (v) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return literalToken; }
@@ -681,7 +688,7 @@ public:
return (last->expression ? last->expression->lastSourceLocation() : last->literalToken);
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
QStringRef value;
QStringRef rawValue;
@@ -698,7 +705,7 @@ public:
RegExpLiteral(const QStringRef &p, int f):
pattern (p), flags (f) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return literalToken; }
@@ -733,7 +740,7 @@ public:
: elements(elts)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return lbracketToken; }
@@ -764,7 +771,7 @@ public:
: properties(plist)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return lbraceToken; }
@@ -795,7 +802,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return commaToken; }
@@ -901,7 +908,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
virtual bool convertLiteralToAssignmentPattern(MemoryPool *pool, SourceLocation *errorLocation, QString *errorMessage);
SourceLocation firstSourceLocation() const override
@@ -954,7 +961,7 @@ public:
return front;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
void boundNames(BoundNames *names);
@@ -989,7 +996,7 @@ public:
: PatternElement(pattern, i), name(name)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return name->firstSourceLocation(); }
@@ -1025,7 +1032,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
void boundNames(BoundNames *names);
@@ -1054,7 +1061,7 @@ public:
IdentifierPropertyName(const QStringRef &n):
id (n) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
QString asString() const override { return id.toString(); }
@@ -1070,7 +1077,7 @@ public:
StringLiteralPropertyName(const QStringRef &n):
id (n) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
QString asString() const override { return id.toString(); }
@@ -1086,7 +1093,7 @@ public:
NumericLiteralPropertyName(double n):
id (n) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
QString asString() const override;
@@ -1103,7 +1110,7 @@ public:
: expression(expression)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
QString asString() const override { return QString(); }
@@ -1127,7 +1134,7 @@ public:
base (b), expression (e)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return base->firstSourceLocation(); }
@@ -1151,7 +1158,7 @@ public:
base (b), name (n)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return base->firstSourceLocation(); }
@@ -1175,7 +1182,7 @@ public:
: base (b), templateLiteral(t)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return base->firstSourceLocation(); }
@@ -1197,7 +1204,7 @@ public:
base (b), arguments (a)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return newToken; }
@@ -1221,7 +1228,7 @@ public:
NewExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return newToken; }
@@ -1243,7 +1250,7 @@ public:
base (b), arguments (a)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return base->firstSourceLocation(); }
@@ -1275,7 +1282,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return expression->firstSourceLocation(); }
@@ -1309,7 +1316,7 @@ public:
PostIncrementExpression(ExpressionNode *b):
base (b) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return base->firstSourceLocation(); }
@@ -1330,7 +1337,7 @@ public:
PostDecrementExpression(ExpressionNode *b):
base (b) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return base->firstSourceLocation(); }
@@ -1351,7 +1358,7 @@ public:
DeleteExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return deleteToken; }
@@ -1372,7 +1379,7 @@ public:
VoidExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return voidToken; }
@@ -1393,7 +1400,7 @@ public:
TypeOfExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return typeofToken; }
@@ -1414,7 +1421,7 @@ public:
PreIncrementExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return incrementToken; }
@@ -1435,7 +1442,7 @@ public:
PreDecrementExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return decrementToken; }
@@ -1456,7 +1463,7 @@ public:
UnaryPlusExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return plusToken; }
@@ -1477,7 +1484,7 @@ public:
UnaryMinusExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return minusToken; }
@@ -1498,7 +1505,7 @@ public:
TildeExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return tildeToken; }
@@ -1519,7 +1526,7 @@ public:
NotExpression(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return notToken; }
@@ -1543,7 +1550,7 @@ public:
BinaryExpression *binaryExpressionCast() override;
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return left->firstSourceLocation(); }
@@ -1567,7 +1574,7 @@ public:
expression (e), ok (t), ko (f)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return expression->firstSourceLocation(); }
@@ -1591,7 +1598,7 @@ public:
Expression(ExpressionNode *l, ExpressionNode *r):
left (l), right (r) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return left->firstSourceLocation(); }
@@ -1613,7 +1620,7 @@ public:
Block(StatementList *slist):
statements (slist) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return lbraceToken; }
@@ -1643,7 +1650,7 @@ public:
return n;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return statement->firstSourceLocation(); }
@@ -1682,7 +1689,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return declaration->firstSourceLocation(); }
@@ -1720,7 +1727,7 @@ public:
declarations (vlist)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return declarationKindToken; }
@@ -1740,7 +1747,7 @@ public:
EmptyStatement() { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return semicolonToken; }
@@ -1760,13 +1767,13 @@ public:
ExpressionStatement(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return expression->firstSourceLocation(); }
SourceLocation lastSourceLocation() const override
- { return semicolonToken.isValid() ? semicolonToken : expression->lastSourceLocation(); }
+ { return semicolonToken; }
// attributes
ExpressionNode *expression;
@@ -1782,7 +1789,7 @@ public:
expression (e), ok (t), ko (f)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return ifToken; }
@@ -1814,7 +1821,7 @@ public:
statement (stmt), expression (e)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return doToken; }
@@ -1841,7 +1848,7 @@ public:
expression (e), statement (stmt)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return whileToken; }
@@ -1871,7 +1878,7 @@ public:
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return forToken; }
@@ -1909,7 +1916,7 @@ public:
: lhs(v), expression(e), statement(stmt)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return forToken; }
@@ -1940,7 +1947,7 @@ public:
ContinueStatement(const QStringRef &l = QStringRef()):
label (l) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return continueToken; }
@@ -1963,7 +1970,7 @@ public:
BreakStatement(const QStringRef &l):
label (l) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return breakToken; }
@@ -1986,7 +1993,7 @@ public:
ReturnStatement(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return returnToken; }
@@ -2008,7 +2015,7 @@ public:
YieldExpression(ExpressionNode *e = nullptr):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return yieldToken; }
@@ -2031,7 +2038,7 @@ public:
expression (e), statement (stmt)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return withToken; }
@@ -2056,7 +2063,7 @@ public:
clauses (c), defaultClause (d), moreClauses (r)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return lbraceToken; }
@@ -2081,7 +2088,7 @@ public:
expression (e), block (b)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return switchToken; }
@@ -2106,7 +2113,7 @@ public:
expression (e), statements (slist)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return caseToken; }
@@ -2138,7 +2145,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return clause->firstSourceLocation(); }
@@ -2169,7 +2176,7 @@ public:
statements (slist)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return defaultToken; }
@@ -2192,7 +2199,7 @@ public:
label (l), statement (stmt)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return identifierToken; }
@@ -2215,7 +2222,7 @@ public:
ThrowStatement(ExpressionNode *e):
expression (e) { kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return throwToken; }
@@ -2238,7 +2245,7 @@ public:
: patternElement(p), statement(stmt)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return catchToken; }
@@ -2264,7 +2271,7 @@ public:
statement (stmt)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return finallyToken; }
@@ -2294,7 +2301,7 @@ public:
statement (stmt), catchExpression (c), finallyExpression (nullptr)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return tryToken; }
@@ -2326,7 +2333,7 @@ public:
typeAnnotation(typeAnnotation)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return functionToken; }
@@ -2360,7 +2367,7 @@ public:
FunctionExpression(n, f, b, typeAnnotation)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
};
class QML_PARSER_EXPORT FormalParameterList: public Node
@@ -2431,7 +2438,7 @@ public:
BoundNames boundNames() const;
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return element->firstSourceLocation(); }
@@ -2457,7 +2464,7 @@ public:
: name(n), heritage(heritage), elements(elements)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return classToken; }
@@ -2486,7 +2493,7 @@ public:
: ClassExpression(n, heritage, elements)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
};
@@ -2508,7 +2515,7 @@ public:
return n;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return property->firstSourceLocation(); }
@@ -2536,7 +2543,7 @@ public:
: statements(statements)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return statements ? statements->firstSourceLocation() : SourceLocation(); }
@@ -2565,7 +2572,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return identifier.isNull() ? importedBindingToken : identifierToken; }
@@ -2610,7 +2617,7 @@ public:
return head;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return importSpecifierToken; }
@@ -2642,7 +2649,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return leftBraceToken; }
@@ -2666,7 +2673,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
virtual SourceLocation firstSourceLocation() const override
{ return starToken; }
@@ -2716,7 +2723,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
virtual SourceLocation firstSourceLocation() const override
{ return importedDefaultBinding.isNull() ? (nameSpaceImport ? nameSpaceImport->firstSourceLocation() : namedImports->firstSourceLocation()) : importedDefaultBindingToken; }
@@ -2741,7 +2748,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return fromToken; }
@@ -2772,7 +2779,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return importToken; }
@@ -2805,7 +2812,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return identifierToken; }
@@ -2850,7 +2857,7 @@ public:
return head;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return exportSpecifier->firstSourceLocation(); }
@@ -2878,7 +2885,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return leftBraceToken; }
@@ -2922,7 +2929,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return exportToken; }
@@ -2949,7 +2956,7 @@ public:
kind = K;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return body ? body->firstSourceLocation() : SourceLocation(); }
@@ -2969,7 +2976,7 @@ public:
DebuggerStatement()
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return debuggerToken; }
@@ -2995,7 +3002,7 @@ public:
: importUri(uri)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return importToken; }
@@ -3009,7 +3016,6 @@ public:
QStringRef importId;
SourceLocation importToken;
SourceLocation fileNameToken;
- SourceLocation versionToken;
SourceLocation asToken;
SourceLocation importIdToken;
SourceLocation semicolonToken;
@@ -3023,6 +3029,9 @@ public:
SourceLocation lastSourceLocation() const override = 0;
UiObjectMember *uiObjectMemberCast() override;
+
+// attributes
+ UiAnnotationList *annotations = nullptr;
};
class QML_PARSER_EXPORT UiObjectMemberList: public Node
@@ -3042,7 +3051,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return member->firstSourceLocation(); }
@@ -3071,7 +3080,7 @@ public:
: name(name)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return pragmaToken; }
@@ -3085,6 +3094,28 @@ public:
SourceLocation semicolonToken;
};
+class QML_PARSER_EXPORT UiRequired: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiRequired)
+
+ UiRequired(QStringRef name)
+ :name(name)
+ { kind = K; }
+
+ void accept0(BaseVisitor *visitor) override;
+
+ SourceLocation firstSourceLocation() const override
+ { return requiredToken; }
+
+ SourceLocation lastSourceLocation() const override
+ { return semicolonToken; }
+
+ QStringRef name;
+ SourceLocation requiredToken;
+ SourceLocation semicolonToken;
+};
+
class QML_PARSER_EXPORT UiHeaderItemList: public Node
{
public:
@@ -3121,7 +3152,7 @@ public:
return head;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return headerItem->firstSourceLocation(); }
@@ -3143,7 +3174,7 @@ public:
: headers(headers), members(members)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{
@@ -3185,7 +3216,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return member->firstSourceLocation(); }
@@ -3215,7 +3246,7 @@ public:
: members(members)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return lbraceToken; }
@@ -3246,7 +3277,7 @@ public:
previous->next = this;
}
- void accept0(Visitor *) override;
+ void accept0(BaseVisitor *) override;
SourceLocation firstSourceLocation() const override
{ return colonToken.isValid() ? identifierToken : propertyTypeToken; }
@@ -3290,7 +3321,7 @@ public:
: type(Property), memberType(memberType), name(name), statement(statement), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{
@@ -3347,7 +3378,7 @@ public:
: qualifiedTypeNameId(qualifiedTypeNameId), initializer(initializer)
{ kind = K; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{ return qualifiedTypeNameId->identifierToken; }
@@ -3360,6 +3391,29 @@ public:
UiObjectInitializer *initializer;
};
+class QML_PARSER_EXPORT UiInlineComponent: public UiObjectMember
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiInlineComponent)
+
+ UiInlineComponent(const QStringRef& inlineComponentName, UiObjectDefinition* inlineComponent)
+ : name(inlineComponentName), component(inlineComponent)
+ { kind = K; }
+
+ SourceLocation lastSourceLocation() const override
+ {return component->lastSourceLocation();}
+
+ SourceLocation firstSourceLocation() const override
+ {return componentToken;}
+
+ void accept0(BaseVisitor *visitor) override;
+
+ // attributes
+ QStringRef name;
+ UiObjectDefinition* component;
+ SourceLocation componentToken;
+};
+
class QML_PARSER_EXPORT UiSourceElement: public UiObjectMember
{
public:
@@ -3389,7 +3443,7 @@ public:
return SourceLocation();
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
// attributes
@@ -3421,7 +3475,7 @@ public:
SourceLocation lastSourceLocation() const override
{ return initializer->rbraceToken; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
// attributes
@@ -3449,7 +3503,7 @@ public:
SourceLocation lastSourceLocation() const override
{ return statement->lastSourceLocation(); }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
// attributes
UiQualifiedId *qualifiedId;
@@ -3474,7 +3528,7 @@ public:
SourceLocation lastSourceLocation() const override
{ return rbracketToken; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
// attributes
UiQualifiedId *qualifiedId;
@@ -3518,7 +3572,7 @@ public:
return last->valueToken.isValid() ? last->valueToken : last->memberToken;
}
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
UiEnumMemberList *finish()
{
@@ -3552,7 +3606,7 @@ public:
SourceLocation lastSourceLocation() const override
{ return rbraceToken; }
- void accept0(Visitor *visitor) override;
+ void accept0(BaseVisitor *visitor) override;
// attributes
SourceLocation enumToken;
@@ -3561,8 +3615,67 @@ public:
UiEnumMemberList *members;
};
-} } // namespace AST
+class QML_PARSER_EXPORT UiAnnotation: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiAnnotation)
+
+ UiAnnotation(UiQualifiedId *qualifiedTypeNameId,
+ UiObjectInitializer *initializer)
+ : qualifiedTypeNameId(qualifiedTypeNameId), initializer(initializer)
+ { kind = K; }
+
+ void accept0(BaseVisitor *visitor) override;
+
+ SourceLocation firstSourceLocation() const override
+ { return qualifiedTypeNameId->identifierToken; }
+
+ SourceLocation lastSourceLocation() const override
+ { return initializer->rbraceToken; }
+
+// attributes
+ UiQualifiedId *qualifiedTypeNameId;
+ UiObjectInitializer *initializer;
+};
+
+class QML_PARSER_EXPORT UiAnnotationList: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiAnnotationList)
+ UiAnnotationList(UiAnnotation *annotation)
+ : next(this), annotation(annotation)
+ { kind = K; }
+
+ UiAnnotationList(UiAnnotationList *previous, UiAnnotation *annotation)
+ : annotation(annotation)
+ {
+ kind = K;
+ next = previous->next;
+ previous->next = this;
+ }
+
+ void accept0(BaseVisitor *visitor) override;
+
+ SourceLocation firstSourceLocation() const override
+ { return annotation->firstSourceLocation(); }
+
+ SourceLocation lastSourceLocation() const override
+ { return lastListElement(this)->annotation->lastSourceLocation(); }
+
+ UiAnnotationList *finish()
+ {
+ UiAnnotationList *head = next;
+ next = nullptr;
+ return head;
+ }
+
+// attributes
+ UiAnnotationList *next;
+ UiAnnotation *annotation;
+};
+
+} } // namespace AST
QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljsastfwd_p.h b/src/libs/qmljs/parser/qmljsastfwd_p.h
index 86d04ad25d..dd0a402ec7 100644
--- a/src/libs/qmljs/parser/qmljsastfwd_p.h
+++ b/src/libs/qmljs/parser/qmljsastfwd_p.h
@@ -26,8 +26,9 @@
#pragma once
#include "qmljsglobal_p.h"
+#include "qmljs/parser/qmljssourcelocation_p.h"
-#include <QtCore/qglobal.h>
+#include "qmljsglobal_p.h"
//
// W A R N I N G
@@ -44,27 +45,7 @@ QT_QML_BEGIN_NAMESPACE
namespace QmlJS { namespace AST {
-class SourceLocation
-{
-public:
- explicit SourceLocation(quint32 offset = 0, quint32 length = 0, quint32 line = 0, quint32 column = 0)
- : offset(offset), length(length),
- startLine(line), startColumn(column)
- { }
-
- bool isValid() const { return length != 0; }
-
- quint32 begin() const { return offset; }
- quint32 end() const { return offset + length; }
-
-// attributes
- // ### encode
- quint32 offset;
- quint32 length;
- quint32 startLine;
- quint32 startColumn;
-};
-
+class BaseVisitor;
class Visitor;
class Node;
class ExpressionNode;
@@ -156,7 +137,6 @@ class NamedImport;
class ImportClause;
class FromClause;
class ImportDeclaration;
-class ModuleItem;
class ESModule;
class DebuggerStatement;
class NestedExpression;
@@ -174,6 +154,7 @@ class UiImport;
class UiPublicMember;
class UiParameterList;
class UiObjectDefinition;
+class UiInlineComponent;
class UiObjectInitializer;
class UiObjectBinding;
class UiScriptBinding;
@@ -187,8 +168,12 @@ class UiHeaderItemList;
class UiEnumDeclaration;
class UiEnumMemberList;
class UiVersionSpecifier;
+class UiRequired;
+class UiAnnotation;
+class UiAnnotationList;
-} } // namespace AST
+} // namespace AST
+} // namespace QmlJS
QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljsastvisitor.cpp b/src/libs/qmljs/parser/qmljsastvisitor.cpp
index c5028337ef..b42a0c7022 100644
--- a/src/libs/qmljs/parser/qmljsastvisitor.cpp
+++ b/src/libs/qmljs/parser/qmljsastvisitor.cpp
@@ -29,11 +29,13 @@ QT_QML_BEGIN_NAMESPACE
namespace QmlJS { namespace AST {
-Visitor::Visitor(quint16 parentRecursionDepth) : m_recursionDepth(parentRecursionDepth)
+Visitor::Visitor(quint16 parentRecursionDepth) : BaseVisitor(parentRecursionDepth)
{
}
-Visitor::~Visitor()
+BaseVisitor::BaseVisitor(quint16 parentRecursionDepth) : m_recursionDepth(parentRecursionDepth) {}
+
+BaseVisitor::~BaseVisitor()
{
}
diff --git a/src/libs/qmljs/parser/qmljsastvisitor_p.h b/src/libs/qmljs/parser/qmljsastvisitor_p.h
index 1bb8808246..ae2b323a59 100644
--- a/src/libs/qmljs/parser/qmljsastvisitor_p.h
+++ b/src/libs/qmljs/parser/qmljsastvisitor_p.h
@@ -43,7 +43,7 @@ QT_QML_BEGIN_NAMESPACE
namespace QmlJS { namespace AST {
-class QML_PARSER_EXPORT Visitor
+class QML_PARSER_EXPORT BaseVisitor
{
public:
class RecursionDepthCheck
@@ -53,7 +53,7 @@ public:
RecursionDepthCheck(RecursionDepthCheck &&) = delete;
RecursionDepthCheck &operator=(RecursionDepthCheck &&) = delete;
- RecursionDepthCheck(Visitor *visitor) : m_visitor(visitor)
+ RecursionDepthCheck(BaseVisitor *visitor) : m_visitor(visitor)
{
++(m_visitor->m_recursionDepth);
}
@@ -69,335 +69,340 @@ public:
private:
static const quint16 s_recursionLimit = 4096;
- Visitor *m_visitor;
+ BaseVisitor *m_visitor;
};
- Visitor(quint16 parentRecursionDepth = 0);
- virtual ~Visitor();
+ BaseVisitor(quint16 parentRecursionDepth = 0);
+ virtual ~BaseVisitor();
- virtual bool preVisit(Node *) { return true; }
- virtual void postVisit(Node *) {}
+ virtual bool preVisit(Node *) = 0;
+ virtual void postVisit(Node *) = 0;
// Ui
- virtual bool visit(UiProgram *) { return true; }
- virtual bool visit(UiHeaderItemList *) { return true; }
- virtual bool visit(UiPragma *) { return true; }
- virtual bool visit(UiImport *) { return true; }
- virtual bool visit(UiPublicMember *) { return true; }
- virtual bool visit(UiSourceElement *) { return true; }
- virtual bool visit(UiObjectDefinition *) { return true; }
- virtual bool visit(UiObjectInitializer *) { return true; }
- virtual bool visit(UiObjectBinding *) { return true; }
- virtual bool visit(UiScriptBinding *) { return true; }
- virtual bool visit(UiArrayBinding *) { return true; }
- virtual bool visit(UiParameterList *) { return true; }
- virtual bool visit(UiObjectMemberList *) { return true; }
- virtual bool visit(UiArrayMemberList *) { return true; }
- virtual bool visit(UiQualifiedId *) { return true; }
- virtual bool visit(UiEnumDeclaration *) { return true; }
- virtual bool visit(UiEnumMemberList *) { return true; }
- virtual bool visit(UiVersionSpecifier *) { return true; }
-
- virtual void endVisit(UiProgram *) {}
- virtual void endVisit(UiImport *) {}
- virtual void endVisit(UiHeaderItemList *) {}
- virtual void endVisit(UiPragma *) {}
- virtual void endVisit(UiPublicMember *) {}
- virtual void endVisit(UiSourceElement *) {}
- virtual void endVisit(UiObjectDefinition *) {}
- virtual void endVisit(UiObjectInitializer *) {}
- virtual void endVisit(UiObjectBinding *) {}
- virtual void endVisit(UiScriptBinding *) {}
- virtual void endVisit(UiArrayBinding *) {}
- virtual void endVisit(UiParameterList *) {}
- virtual void endVisit(UiObjectMemberList *) {}
- virtual void endVisit(UiArrayMemberList *) {}
- virtual void endVisit(UiQualifiedId *) {}
- virtual void endVisit(UiEnumDeclaration *) {}
- virtual void endVisit(UiEnumMemberList *) { }
- virtual void endVisit(UiVersionSpecifier *) {}
+ virtual bool visit(UiProgram *) = 0;
+ virtual bool visit(UiHeaderItemList *) = 0;
+ virtual bool visit(UiPragma *) = 0;
+ virtual bool visit(UiImport *) = 0;
+ virtual bool visit(UiPublicMember *) = 0;
+ virtual bool visit(UiSourceElement *) = 0;
+ virtual bool visit(UiObjectDefinition *) = 0;
+ virtual bool visit(UiObjectInitializer *) = 0;
+ virtual bool visit(UiObjectBinding *) = 0;
+ virtual bool visit(UiScriptBinding *) = 0;
+ virtual bool visit(UiArrayBinding *) = 0;
+ virtual bool visit(UiParameterList *) = 0;
+ virtual bool visit(UiObjectMemberList *) = 0;
+ virtual bool visit(UiArrayMemberList *) = 0;
+ virtual bool visit(UiQualifiedId *) = 0;
+ virtual bool visit(UiEnumDeclaration *) = 0;
+ virtual bool visit(UiEnumMemberList *) = 0;
+ virtual bool visit(UiVersionSpecifier *) = 0;
+ virtual bool visit(UiInlineComponent *) = 0;
+ virtual bool visit(UiAnnotation *) = 0;
+ virtual bool visit(UiAnnotationList *) = 0;
+ virtual bool visit(UiRequired *) = 0;
+
+ virtual void endVisit(UiProgram *) = 0;
+ virtual void endVisit(UiImport *) = 0;
+ virtual void endVisit(UiHeaderItemList *) = 0;
+ virtual void endVisit(UiPragma *) = 0;
+ virtual void endVisit(UiPublicMember *) = 0;
+ virtual void endVisit(UiSourceElement *) = 0;
+ virtual void endVisit(UiObjectDefinition *) = 0;
+ virtual void endVisit(UiObjectInitializer *) = 0;
+ virtual void endVisit(UiObjectBinding *) = 0;
+ virtual void endVisit(UiScriptBinding *) = 0;
+ virtual void endVisit(UiArrayBinding *) = 0;
+ virtual void endVisit(UiParameterList *) = 0;
+ virtual void endVisit(UiObjectMemberList *) = 0;
+ virtual void endVisit(UiArrayMemberList *) = 0;
+ virtual void endVisit(UiQualifiedId *) = 0;
+ virtual void endVisit(UiEnumDeclaration *) = 0;
+ virtual void endVisit(UiEnumMemberList *) = 0;
+ virtual void endVisit(UiVersionSpecifier *) = 0;
+ virtual void endVisit(UiInlineComponent *) = 0;
+ virtual void endVisit(UiAnnotation *) = 0;
+ virtual void endVisit(UiAnnotationList *) = 0;
+ virtual void endVisit(UiRequired *) = 0;
// QmlJS
- virtual bool visit(ThisExpression *) { return true; }
- virtual void endVisit(ThisExpression *) {}
-
- virtual bool visit(IdentifierExpression *) { return true; }
- virtual void endVisit(IdentifierExpression *) {}
+ virtual bool visit(ThisExpression *) = 0;
+ virtual void endVisit(ThisExpression *) = 0;
- virtual bool visit(NullExpression *) { return true; }
- virtual void endVisit(NullExpression *) {}
+ virtual bool visit(IdentifierExpression *) = 0;
+ virtual void endVisit(IdentifierExpression *) = 0;
- virtual bool visit(TrueLiteral *) { return true; }
- virtual void endVisit(TrueLiteral *) {}
+ virtual bool visit(NullExpression *) = 0;
+ virtual void endVisit(NullExpression *) = 0;
- virtual bool visit(FalseLiteral *) { return true; }
- virtual void endVisit(FalseLiteral *) {}
+ virtual bool visit(TrueLiteral *) = 0;
+ virtual void endVisit(TrueLiteral *) = 0;
- virtual bool visit(SuperLiteral *) { return true; }
- virtual void endVisit(SuperLiteral *) {}
+ virtual bool visit(FalseLiteral *) = 0;
+ virtual void endVisit(FalseLiteral *) = 0;
- virtual bool visit(StringLiteral *) { return true; }
- virtual void endVisit(StringLiteral *) {}
+ virtual bool visit(SuperLiteral *) = 0;
+ virtual void endVisit(SuperLiteral *) = 0;
- virtual bool visit(TemplateLiteral *) { return true; }
- virtual void endVisit(TemplateLiteral *) {}
+ virtual bool visit(StringLiteral *) = 0;
+ virtual void endVisit(StringLiteral *) = 0;
- virtual bool visit(NumericLiteral *) { return true; }
- virtual void endVisit(NumericLiteral *) {}
+ virtual bool visit(TemplateLiteral *) = 0;
+ virtual void endVisit(TemplateLiteral *) = 0;
- virtual bool visit(RegExpLiteral *) { return true; }
- virtual void endVisit(RegExpLiteral *) {}
+ virtual bool visit(NumericLiteral *) = 0;
+ virtual void endVisit(NumericLiteral *) = 0;
- virtual bool visit(ArrayPattern *) { return true; }
- virtual void endVisit(ArrayPattern *) {}
+ virtual bool visit(RegExpLiteral *) = 0;
+ virtual void endVisit(RegExpLiteral *) = 0;
- virtual bool visit(ObjectPattern *) { return true; }
- virtual void endVisit(ObjectPattern *) {}
+ virtual bool visit(ArrayPattern *) = 0;
+ virtual void endVisit(ArrayPattern *) = 0;
- virtual bool visit(PatternElementList *) { return true; }
- virtual void endVisit(PatternElementList *) {}
+ virtual bool visit(ObjectPattern *) = 0;
+ virtual void endVisit(ObjectPattern *) = 0;
- virtual bool visit(PatternPropertyList *) { return true; }
- virtual void endVisit(PatternPropertyList *) {}
+ virtual bool visit(PatternElementList *) = 0;
+ virtual void endVisit(PatternElementList *) = 0;
- virtual bool visit(PatternElement *) { return true; }
- virtual void endVisit(PatternElement *) {}
+ virtual bool visit(PatternPropertyList *) = 0;
+ virtual void endVisit(PatternPropertyList *) = 0;
- virtual bool visit(PatternProperty *) { return true; }
- virtual void endVisit(PatternProperty *) {}
+ virtual bool visit(PatternElement *) = 0;
+ virtual void endVisit(PatternElement *) = 0;
- virtual bool visit(Elision *) { return true; }
- virtual void endVisit(Elision *) {}
+ virtual bool visit(PatternProperty *) = 0;
+ virtual void endVisit(PatternProperty *) = 0;
- virtual bool visit(NestedExpression *) { return true; }
- virtual void endVisit(NestedExpression *) {}
+ virtual bool visit(Elision *) = 0;
+ virtual void endVisit(Elision *) = 0;
- virtual bool visit(IdentifierPropertyName *) { return true; }
- virtual void endVisit(IdentifierPropertyName *) {}
+ virtual bool visit(NestedExpression *) = 0;
+ virtual void endVisit(NestedExpression *) = 0;
- virtual bool visit(StringLiteralPropertyName *) { return true; }
- virtual void endVisit(StringLiteralPropertyName *) {}
+ virtual bool visit(IdentifierPropertyName *) = 0;
+ virtual void endVisit(IdentifierPropertyName *) = 0;
- virtual bool visit(NumericLiteralPropertyName *) { return true; }
- virtual void endVisit(NumericLiteralPropertyName *) {}
+ virtual bool visit(StringLiteralPropertyName *) = 0;
+ virtual void endVisit(StringLiteralPropertyName *) = 0;
- virtual bool visit(ComputedPropertyName *) { return true; }
- virtual void endVisit(ComputedPropertyName *) {}
+ virtual bool visit(NumericLiteralPropertyName *) = 0;
+ virtual void endVisit(NumericLiteralPropertyName *) = 0;
- virtual bool visit(ArrayMemberExpression *) { return true; }
- virtual void endVisit(ArrayMemberExpression *) {}
+ virtual bool visit(ComputedPropertyName *) = 0;
+ virtual void endVisit(ComputedPropertyName *) = 0;
- virtual bool visit(FieldMemberExpression *) { return true; }
- virtual void endVisit(FieldMemberExpression *) {}
+ virtual bool visit(ArrayMemberExpression *) = 0;
+ virtual void endVisit(ArrayMemberExpression *) = 0;
- virtual bool visit(TaggedTemplate *) { return true; }
- virtual void endVisit(TaggedTemplate *) {}
+ virtual bool visit(FieldMemberExpression *) = 0;
+ virtual void endVisit(FieldMemberExpression *) = 0;
- virtual bool visit(NewMemberExpression *) { return true; }
- virtual void endVisit(NewMemberExpression *) {}
+ virtual bool visit(TaggedTemplate *) = 0;
+ virtual void endVisit(TaggedTemplate *) = 0;
- virtual bool visit(NewExpression *) { return true; }
- virtual void endVisit(NewExpression *) {}
+ virtual bool visit(NewMemberExpression *) = 0;
+ virtual void endVisit(NewMemberExpression *) = 0;
- virtual bool visit(CallExpression *) { return true; }
- virtual void endVisit(CallExpression *) {}
+ virtual bool visit(NewExpression *) = 0;
+ virtual void endVisit(NewExpression *) = 0;
- virtual bool visit(ArgumentList *) { return true; }
- virtual void endVisit(ArgumentList *) {}
+ virtual bool visit(CallExpression *) = 0;
+ virtual void endVisit(CallExpression *) = 0;
- virtual bool visit(PostIncrementExpression *) { return true; }
- virtual void endVisit(PostIncrementExpression *) {}
+ virtual bool visit(ArgumentList *) = 0;
+ virtual void endVisit(ArgumentList *) = 0;
- virtual bool visit(PostDecrementExpression *) { return true; }
- virtual void endVisit(PostDecrementExpression *) {}
+ virtual bool visit(PostIncrementExpression *) = 0;
+ virtual void endVisit(PostIncrementExpression *) = 0;
- virtual bool visit(DeleteExpression *) { return true; }
- virtual void endVisit(DeleteExpression *) {}
+ virtual bool visit(PostDecrementExpression *) = 0;
+ virtual void endVisit(PostDecrementExpression *) = 0;
- virtual bool visit(VoidExpression *) { return true; }
- virtual void endVisit(VoidExpression *) {}
+ virtual bool visit(DeleteExpression *) = 0;
+ virtual void endVisit(DeleteExpression *) = 0;
- virtual bool visit(TypeOfExpression *) { return true; }
- virtual void endVisit(TypeOfExpression *) {}
+ virtual bool visit(VoidExpression *) = 0;
+ virtual void endVisit(VoidExpression *) = 0;
- virtual bool visit(PreIncrementExpression *) { return true; }
- virtual void endVisit(PreIncrementExpression *) {}
+ virtual bool visit(TypeOfExpression *) = 0;
+ virtual void endVisit(TypeOfExpression *) = 0;
- virtual bool visit(PreDecrementExpression *) { return true; }
- virtual void endVisit(PreDecrementExpression *) {}
+ virtual bool visit(PreIncrementExpression *) = 0;
+ virtual void endVisit(PreIncrementExpression *) = 0;
- virtual bool visit(UnaryPlusExpression *) { return true; }
- virtual void endVisit(UnaryPlusExpression *) {}
+ virtual bool visit(PreDecrementExpression *) = 0;
+ virtual void endVisit(PreDecrementExpression *) = 0;
- virtual bool visit(UnaryMinusExpression *) { return true; }
- virtual void endVisit(UnaryMinusExpression *) {}
+ virtual bool visit(UnaryPlusExpression *) = 0;
+ virtual void endVisit(UnaryPlusExpression *) = 0;
- virtual bool visit(TildeExpression *) { return true; }
- virtual void endVisit(TildeExpression *) {}
+ virtual bool visit(UnaryMinusExpression *) = 0;
+ virtual void endVisit(UnaryMinusExpression *) = 0;
- virtual bool visit(NotExpression *) { return true; }
- virtual void endVisit(NotExpression *) {}
+ virtual bool visit(TildeExpression *) = 0;
+ virtual void endVisit(TildeExpression *) = 0;
- virtual bool visit(BinaryExpression *) { return true; }
- virtual void endVisit(BinaryExpression *) {}
+ virtual bool visit(NotExpression *) = 0;
+ virtual void endVisit(NotExpression *) = 0;
- virtual bool visit(ConditionalExpression *) { return true; }
- virtual void endVisit(ConditionalExpression *) {}
+ virtual bool visit(BinaryExpression *) = 0;
+ virtual void endVisit(BinaryExpression *) = 0;
- virtual bool visit(Expression *) { return true; }
- virtual void endVisit(Expression *) {}
+ virtual bool visit(ConditionalExpression *) = 0;
+ virtual void endVisit(ConditionalExpression *) = 0;
- virtual bool visit(Block *) { return true; }
- virtual void endVisit(Block *) {}
+ virtual bool visit(Expression *) = 0;
+ virtual void endVisit(Expression *) = 0;
- virtual bool visit(StatementList *) { return true; }
- virtual void endVisit(StatementList *) {}
+ virtual bool visit(Block *) = 0;
+ virtual void endVisit(Block *) = 0;
- virtual bool visit(VariableStatement *) { return true; }
- virtual void endVisit(VariableStatement *) {}
+ virtual bool visit(StatementList *) = 0;
+ virtual void endVisit(StatementList *) = 0;
- virtual bool visit(VariableDeclarationList *) { return true; }
- virtual void endVisit(VariableDeclarationList *) {}
+ virtual bool visit(VariableStatement *) = 0;
+ virtual void endVisit(VariableStatement *) = 0;
- virtual bool visit(EmptyStatement *) { return true; }
- virtual void endVisit(EmptyStatement *) {}
+ virtual bool visit(VariableDeclarationList *) = 0;
+ virtual void endVisit(VariableDeclarationList *) = 0;
- virtual bool visit(ExpressionStatement *) { return true; }
- virtual void endVisit(ExpressionStatement *) {}
+ virtual bool visit(EmptyStatement *) = 0;
+ virtual void endVisit(EmptyStatement *) = 0;
- virtual bool visit(IfStatement *) { return true; }
- virtual void endVisit(IfStatement *) {}
+ virtual bool visit(ExpressionStatement *) = 0;
+ virtual void endVisit(ExpressionStatement *) = 0;
- virtual bool visit(DoWhileStatement *) { return true; }
- virtual void endVisit(DoWhileStatement *) {}
+ virtual bool visit(IfStatement *) = 0;
+ virtual void endVisit(IfStatement *) = 0;
- virtual bool visit(WhileStatement *) { return true; }
- virtual void endVisit(WhileStatement *) {}
+ virtual bool visit(DoWhileStatement *) = 0;
+ virtual void endVisit(DoWhileStatement *) = 0;
- virtual bool visit(ForStatement *) { return true; }
- virtual void endVisit(ForStatement *) {}
+ virtual bool visit(WhileStatement *) = 0;
+ virtual void endVisit(WhileStatement *) = 0;
- virtual bool visit(ForEachStatement *) { return true; }
- virtual void endVisit(ForEachStatement *) {}
+ virtual bool visit(ForStatement *) = 0;
+ virtual void endVisit(ForStatement *) = 0;
- virtual bool visit(ContinueStatement *) { return true; }
- virtual void endVisit(ContinueStatement *) {}
+ virtual bool visit(ForEachStatement *) = 0;
+ virtual void endVisit(ForEachStatement *) = 0;
- virtual bool visit(BreakStatement *) { return true; }
- virtual void endVisit(BreakStatement *) {}
+ virtual bool visit(ContinueStatement *) = 0;
+ virtual void endVisit(ContinueStatement *) = 0;
- virtual bool visit(ReturnStatement *) { return true; }
- virtual void endVisit(ReturnStatement *) {}
+ virtual bool visit(BreakStatement *) = 0;
+ virtual void endVisit(BreakStatement *) = 0;
- virtual bool visit(YieldExpression *) { return true; }
- virtual void endVisit(YieldExpression *) {}
+ virtual bool visit(ReturnStatement *) = 0;
+ virtual void endVisit(ReturnStatement *) = 0;
- virtual bool visit(WithStatement *) { return true; }
- virtual void endVisit(WithStatement *) {}
+ virtual bool visit(YieldExpression *) = 0;
+ virtual void endVisit(YieldExpression *) = 0;
- virtual bool visit(SwitchStatement *) { return true; }
- virtual void endVisit(SwitchStatement *) {}
+ virtual bool visit(WithStatement *) = 0;
+ virtual void endVisit(WithStatement *) = 0;
- virtual bool visit(CaseBlock *) { return true; }
- virtual void endVisit(CaseBlock *) {}
+ virtual bool visit(SwitchStatement *) = 0;
+ virtual void endVisit(SwitchStatement *) = 0;
- virtual bool visit(CaseClauses *) { return true; }
- virtual void endVisit(CaseClauses *) {}
+ virtual bool visit(CaseBlock *) = 0;
+ virtual void endVisit(CaseBlock *) = 0;
- virtual bool visit(CaseClause *) { return true; }
- virtual void endVisit(CaseClause *) {}
+ virtual bool visit(CaseClauses *) = 0;
+ virtual void endVisit(CaseClauses *) = 0;
- virtual bool visit(DefaultClause *) { return true; }
- virtual void endVisit(DefaultClause *) {}
+ virtual bool visit(CaseClause *) = 0;
+ virtual void endVisit(CaseClause *) = 0;
- virtual bool visit(LabelledStatement *) { return true; }
- virtual void endVisit(LabelledStatement *) {}
+ virtual bool visit(DefaultClause *) = 0;
+ virtual void endVisit(DefaultClause *) = 0;
- virtual bool visit(ThrowStatement *) { return true; }
- virtual void endVisit(ThrowStatement *) {}
+ virtual bool visit(LabelledStatement *) = 0;
+ virtual void endVisit(LabelledStatement *) = 0;
- virtual bool visit(TryStatement *) { return true; }
- virtual void endVisit(TryStatement *) {}
+ virtual bool visit(ThrowStatement *) = 0;
+ virtual void endVisit(ThrowStatement *) = 0;
- virtual bool visit(Catch *) { return true; }
- virtual void endVisit(Catch *) {}
+ virtual bool visit(TryStatement *) = 0;
+ virtual void endVisit(TryStatement *) = 0;
- virtual bool visit(Finally *) { return true; }
- virtual void endVisit(Finally *) {}
+ virtual bool visit(Catch *) = 0;
+ virtual void endVisit(Catch *) = 0;
- virtual bool visit(FunctionDeclaration *) { return true; }
- virtual void endVisit(FunctionDeclaration *) {}
+ virtual bool visit(Finally *) = 0;
+ virtual void endVisit(Finally *) = 0;
- virtual bool visit(FunctionExpression *) { return true; }
- virtual void endVisit(FunctionExpression *) {}
+ virtual bool visit(FunctionDeclaration *) = 0;
+ virtual void endVisit(FunctionDeclaration *) = 0;
- virtual bool visit(FormalParameterList *) { return true; }
- virtual void endVisit(FormalParameterList *) {}
+ virtual bool visit(FunctionExpression *) = 0;
+ virtual void endVisit(FunctionExpression *) = 0;
- virtual bool visit(ClassExpression *) { return true; }
- virtual void endVisit(ClassExpression *) {}
+ virtual bool visit(FormalParameterList *) = 0;
+ virtual void endVisit(FormalParameterList *) = 0;
- virtual bool visit(ClassDeclaration *) { return true; }
- virtual void endVisit(ClassDeclaration *) {}
+ virtual bool visit(ClassExpression *) = 0;
+ virtual void endVisit(ClassExpression *) = 0;
- virtual bool visit(ClassElementList *) { return true; }
- virtual void endVisit(ClassElementList *) {}
+ virtual bool visit(ClassDeclaration *) = 0;
+ virtual void endVisit(ClassDeclaration *) = 0;
- virtual bool visit(Program *) { return true; }
- virtual void endVisit(Program *) {}
+ virtual bool visit(ClassElementList *) = 0;
+ virtual void endVisit(ClassElementList *) = 0;
- virtual bool visit(NameSpaceImport *) { return true; }
- virtual void endVisit(NameSpaceImport *) {}
+ virtual bool visit(Program *) = 0;
+ virtual void endVisit(Program *) = 0;
- virtual bool visit(ImportSpecifier *) { return true; }
- virtual void endVisit(ImportSpecifier *) {}
+ virtual bool visit(NameSpaceImport *) = 0;
+ virtual void endVisit(NameSpaceImport *) = 0;
- virtual bool visit(ImportsList *) { return true; }
- virtual void endVisit(ImportsList *) {}
+ virtual bool visit(ImportSpecifier *) = 0;
+ virtual void endVisit(ImportSpecifier *) = 0;
- virtual bool visit(NamedImports *) { return true; }
- virtual void endVisit(NamedImports *) {}
+ virtual bool visit(ImportsList *) = 0;
+ virtual void endVisit(ImportsList *) = 0;
- virtual bool visit(FromClause *) { return true; }
- virtual void endVisit(FromClause *) {}
+ virtual bool visit(NamedImports *) = 0;
+ virtual void endVisit(NamedImports *) = 0;
- virtual bool visit(ImportClause *) { return true; }
- virtual void endVisit(ImportClause *) {}
+ virtual bool visit(FromClause *) = 0;
+ virtual void endVisit(FromClause *) = 0;
- virtual bool visit(ImportDeclaration *) { return true; }
- virtual void endVisit(ImportDeclaration *) {}
+ virtual bool visit(ImportClause *) = 0;
+ virtual void endVisit(ImportClause *) = 0;
- virtual bool visit(ExportSpecifier *) { return true; }
- virtual void endVisit(ExportSpecifier *) {}
+ virtual bool visit(ImportDeclaration *) = 0;
+ virtual void endVisit(ImportDeclaration *) = 0;
- virtual bool visit(ExportsList *) { return true; }
- virtual void endVisit(ExportsList *) {}
+ virtual bool visit(ExportSpecifier *) = 0;
+ virtual void endVisit(ExportSpecifier *) = 0;
- virtual bool visit(ExportClause *) { return true; }
- virtual void endVisit(ExportClause *) {}
+ virtual bool visit(ExportsList *) = 0;
+ virtual void endVisit(ExportsList *) = 0;
- virtual bool visit(ExportDeclaration *) { return true; }
- virtual void endVisit(ExportDeclaration *) {}
+ virtual bool visit(ExportClause *) = 0;
+ virtual void endVisit(ExportClause *) = 0;
- virtual bool visit(ModuleItem *) { return true; }
- virtual void endVisit(ModuleItem *) {}
+ virtual bool visit(ExportDeclaration *) = 0;
+ virtual void endVisit(ExportDeclaration *) = 0;
- virtual bool visit(ESModule *) { return true; }
- virtual void endVisit(ESModule *) {}
+ virtual bool visit(ESModule *) = 0;
+ virtual void endVisit(ESModule *) = 0;
- virtual bool visit(DebuggerStatement *) { return true; }
- virtual void endVisit(DebuggerStatement *) {}
+ virtual bool visit(DebuggerStatement *) = 0;
+ virtual void endVisit(DebuggerStatement *) = 0;
- virtual bool visit(Type *) { return true; }
- virtual void endVisit(Type *) {}
+ virtual bool visit(Type *) = 0;
+ virtual void endVisit(Type *) = 0;
- virtual bool visit(TypeArgumentList *) { return true; }
- virtual void endVisit(TypeArgumentList *) {}
+ virtual bool visit(TypeArgumentList *) = 0;
+ virtual void endVisit(TypeArgumentList *) = 0;
- virtual bool visit(TypeAnnotation *) { return true; }
- virtual void endVisit(TypeAnnotation *) {}
+ virtual bool visit(TypeAnnotation *) = 0;
+ virtual void endVisit(TypeAnnotation *) = 0;
- virtual void throwRecursionDepthError() {}
+ virtual void throwRecursionDepthError() = 0;
quint16 recursionDepth() const { return m_recursionDepth; }
@@ -406,6 +411,339 @@ protected:
friend class RecursionDepthCheck;
};
+class QML_PARSER_EXPORT Visitor: public BaseVisitor
+{
+public:
+ Visitor(quint16 parentRecursionDepth = 0);
+
+ bool preVisit(Node *) override { return true; }
+ void postVisit(Node *) override {}
+
+ // Ui
+ bool visit(UiProgram *) override { return true; }
+ bool visit(UiHeaderItemList *) override { return true; }
+ bool visit(UiPragma *) override { return true; }
+ bool visit(UiImport *) override { return true; }
+ bool visit(UiPublicMember *) override { return true; }
+ bool visit(UiSourceElement *) override { return true; }
+ bool visit(UiObjectDefinition *) override { return true; }
+ bool visit(UiObjectInitializer *) override { return true; }
+ bool visit(UiObjectBinding *) override { return true; }
+ bool visit(UiScriptBinding *) override { return true; }
+ bool visit(UiArrayBinding *) override { return true; }
+ bool visit(UiParameterList *) override { return true; }
+ bool visit(UiObjectMemberList *) override { return true; }
+ bool visit(UiArrayMemberList *) override { return true; }
+ bool visit(UiQualifiedId *) override { return true; }
+ bool visit(UiEnumDeclaration *) override { return true; }
+ bool visit(UiEnumMemberList *) override { return true; }
+ bool visit(UiVersionSpecifier *) override { return true; }
+ bool visit(UiInlineComponent *) override { return true; }
+ bool visit(UiAnnotation *) override { return true; }
+ bool visit(UiAnnotationList *) override { return true; }
+ bool visit(UiRequired *) override { return true; }
+
+ void endVisit(UiProgram *) override {}
+ void endVisit(UiImport *) override {}
+ void endVisit(UiHeaderItemList *) override {}
+ void endVisit(UiPragma *) override {}
+ void endVisit(UiPublicMember *) override {}
+ void endVisit(UiSourceElement *) override {}
+ void endVisit(UiObjectDefinition *) override {}
+ void endVisit(UiObjectInitializer *) override {}
+ void endVisit(UiObjectBinding *) override {}
+ void endVisit(UiScriptBinding *) override {}
+ void endVisit(UiArrayBinding *) override {}
+ void endVisit(UiParameterList *) override {}
+ void endVisit(UiObjectMemberList *) override {}
+ void endVisit(UiArrayMemberList *) override {}
+ void endVisit(UiQualifiedId *) override {}
+ void endVisit(UiEnumDeclaration *) override {}
+ void endVisit(UiEnumMemberList *) override {}
+ void endVisit(UiVersionSpecifier *) override {}
+ void endVisit(UiInlineComponent *) override {}
+ void endVisit(UiAnnotation *) override {}
+ void endVisit(UiAnnotationList *) override {}
+ void endVisit(UiRequired *) override {}
+
+ // QmlJS
+ bool visit(ThisExpression *) override { return true; }
+ void endVisit(ThisExpression *) override {}
+
+ bool visit(IdentifierExpression *) override { return true; }
+ void endVisit(IdentifierExpression *) override {}
+
+ bool visit(NullExpression *) override { return true; }
+ void endVisit(NullExpression *) override {}
+
+ bool visit(TrueLiteral *) override { return true; }
+ void endVisit(TrueLiteral *) override {}
+
+ bool visit(FalseLiteral *) override { return true; }
+ void endVisit(FalseLiteral *) override {}
+
+ bool visit(SuperLiteral *) override { return true; }
+ void endVisit(SuperLiteral *) override {}
+
+ bool visit(StringLiteral *) override { return true; }
+ void endVisit(StringLiteral *) override {}
+
+ bool visit(TemplateLiteral *) override { return true; }
+ void endVisit(TemplateLiteral *) override {}
+
+ bool visit(NumericLiteral *) override { return true; }
+ void endVisit(NumericLiteral *) override {}
+
+ bool visit(RegExpLiteral *) override { return true; }
+ void endVisit(RegExpLiteral *) override {}
+
+ bool visit(ArrayPattern *) override { return true; }
+ void endVisit(ArrayPattern *) override {}
+
+ bool visit(ObjectPattern *) override { return true; }
+ void endVisit(ObjectPattern *) override {}
+
+ bool visit(PatternElementList *) override { return true; }
+ void endVisit(PatternElementList *) override {}
+
+ bool visit(PatternPropertyList *) override { return true; }
+ void endVisit(PatternPropertyList *) override {}
+
+ bool visit(PatternElement *) override { return true; }
+ void endVisit(PatternElement *) override {}
+
+ bool visit(PatternProperty *) override { return true; }
+ void endVisit(PatternProperty *) override {}
+
+ bool visit(Elision *) override { return true; }
+ void endVisit(Elision *) override {}
+
+ bool visit(NestedExpression *) override { return true; }
+ void endVisit(NestedExpression *) override {}
+
+ bool visit(IdentifierPropertyName *) override { return true; }
+ void endVisit(IdentifierPropertyName *) override {}
+
+ bool visit(StringLiteralPropertyName *) override { return true; }
+ void endVisit(StringLiteralPropertyName *) override {}
+
+ bool visit(NumericLiteralPropertyName *) override { return true; }
+ void endVisit(NumericLiteralPropertyName *) override {}
+
+ bool visit(ComputedPropertyName *) override { return true; }
+ void endVisit(ComputedPropertyName *) override {}
+
+ bool visit(ArrayMemberExpression *) override { return true; }
+ void endVisit(ArrayMemberExpression *) override {}
+
+ bool visit(FieldMemberExpression *) override { return true; }
+ void endVisit(FieldMemberExpression *) override {}
+
+ bool visit(TaggedTemplate *) override { return true; }
+ void endVisit(TaggedTemplate *) override {}
+
+ bool visit(NewMemberExpression *) override { return true; }
+ void endVisit(NewMemberExpression *) override {}
+
+ bool visit(NewExpression *) override { return true; }
+ void endVisit(NewExpression *) override {}
+
+ bool visit(CallExpression *) override { return true; }
+ void endVisit(CallExpression *) override {}
+
+ bool visit(ArgumentList *) override { return true; }
+ void endVisit(ArgumentList *) override {}
+
+ bool visit(PostIncrementExpression *) override { return true; }
+ void endVisit(PostIncrementExpression *) override {}
+
+ bool visit(PostDecrementExpression *) override { return true; }
+ void endVisit(PostDecrementExpression *) override {}
+
+ bool visit(DeleteExpression *) override { return true; }
+ void endVisit(DeleteExpression *) override {}
+
+ bool visit(VoidExpression *) override { return true; }
+ void endVisit(VoidExpression *) override {}
+
+ bool visit(TypeOfExpression *) override { return true; }
+ void endVisit(TypeOfExpression *) override {}
+
+ bool visit(PreIncrementExpression *) override { return true; }
+ void endVisit(PreIncrementExpression *) override {}
+
+ bool visit(PreDecrementExpression *) override { return true; }
+ void endVisit(PreDecrementExpression *) override {}
+
+ bool visit(UnaryPlusExpression *) override { return true; }
+ void endVisit(UnaryPlusExpression *) override {}
+
+ bool visit(UnaryMinusExpression *) override { return true; }
+ void endVisit(UnaryMinusExpression *) override {}
+
+ bool visit(TildeExpression *) override { return true; }
+ void endVisit(TildeExpression *) override {}
+
+ bool visit(NotExpression *) override { return true; }
+ void endVisit(NotExpression *) override {}
+
+ bool visit(BinaryExpression *) override { return true; }
+ void endVisit(BinaryExpression *) override {}
+
+ bool visit(ConditionalExpression *) override { return true; }
+ void endVisit(ConditionalExpression *) override {}
+
+ bool visit(Expression *) override { return true; }
+ void endVisit(Expression *) override {}
+
+ bool visit(Block *) override { return true; }
+ void endVisit(Block *) override {}
+
+ bool visit(StatementList *) override { return true; }
+ void endVisit(StatementList *) override {}
+
+ bool visit(VariableStatement *) override { return true; }
+ void endVisit(VariableStatement *) override {}
+
+ bool visit(VariableDeclarationList *) override { return true; }
+ void endVisit(VariableDeclarationList *) override {}
+
+ bool visit(EmptyStatement *) override { return true; }
+ void endVisit(EmptyStatement *) override {}
+
+ bool visit(ExpressionStatement *) override { return true; }
+ void endVisit(ExpressionStatement *) override {}
+
+ bool visit(IfStatement *) override { return true; }
+ void endVisit(IfStatement *) override {}
+
+ bool visit(DoWhileStatement *) override { return true; }
+ void endVisit(DoWhileStatement *) override {}
+
+ bool visit(WhileStatement *) override { return true; }
+ void endVisit(WhileStatement *) override {}
+
+ bool visit(ForStatement *) override { return true; }
+ void endVisit(ForStatement *) override {}
+
+ bool visit(ForEachStatement *) override { return true; }
+ void endVisit(ForEachStatement *) override {}
+
+ bool visit(ContinueStatement *) override { return true; }
+ void endVisit(ContinueStatement *) override {}
+
+ bool visit(BreakStatement *) override { return true; }
+ void endVisit(BreakStatement *) override {}
+
+ bool visit(ReturnStatement *) override { return true; }
+ void endVisit(ReturnStatement *) override {}
+
+ bool visit(YieldExpression *) override { return true; }
+ void endVisit(YieldExpression *) override {}
+
+ bool visit(WithStatement *) override { return true; }
+ void endVisit(WithStatement *) override {}
+
+ bool visit(SwitchStatement *) override { return true; }
+ void endVisit(SwitchStatement *) override {}
+
+ bool visit(CaseBlock *) override { return true; }
+ void endVisit(CaseBlock *) override {}
+
+ bool visit(CaseClauses *) override { return true; }
+ void endVisit(CaseClauses *) override {}
+
+ bool visit(CaseClause *) override { return true; }
+ void endVisit(CaseClause *) override {}
+
+ bool visit(DefaultClause *) override { return true; }
+ void endVisit(DefaultClause *) override {}
+
+ bool visit(LabelledStatement *) override { return true; }
+ void endVisit(LabelledStatement *) override {}
+
+ bool visit(ThrowStatement *) override { return true; }
+ void endVisit(ThrowStatement *) override {}
+
+ bool visit(TryStatement *) override { return true; }
+ void endVisit(TryStatement *) override {}
+
+ bool visit(Catch *) override { return true; }
+ void endVisit(Catch *) override {}
+
+ bool visit(Finally *) override { return true; }
+ void endVisit(Finally *) override {}
+
+ bool visit(FunctionDeclaration *) override { return true; }
+ void endVisit(FunctionDeclaration *) override {}
+
+ bool visit(FunctionExpression *) override { return true; }
+ void endVisit(FunctionExpression *) override {}
+
+ bool visit(FormalParameterList *) override { return true; }
+ void endVisit(FormalParameterList *) override {}
+
+ bool visit(ClassExpression *) override { return true; }
+ void endVisit(ClassExpression *) override {}
+
+ bool visit(ClassDeclaration *) override { return true; }
+ void endVisit(ClassDeclaration *) override {}
+
+ bool visit(ClassElementList *) override { return true; }
+ void endVisit(ClassElementList *) override {}
+
+ bool visit(Program *) override { return true; }
+ void endVisit(Program *) override {}
+
+ bool visit(NameSpaceImport *) override { return true; }
+ void endVisit(NameSpaceImport *) override {}
+
+ bool visit(ImportSpecifier *) override { return true; }
+ void endVisit(ImportSpecifier *) override {}
+
+ bool visit(ImportsList *) override { return true; }
+ void endVisit(ImportsList *) override {}
+
+ bool visit(NamedImports *) override { return true; }
+ void endVisit(NamedImports *) override {}
+
+ bool visit(FromClause *) override { return true; }
+ void endVisit(FromClause *) override {}
+
+ bool visit(ImportClause *) override { return true; }
+ void endVisit(ImportClause *) override {}
+
+ bool visit(ImportDeclaration *) override { return true; }
+ void endVisit(ImportDeclaration *) override {}
+
+ bool visit(ExportSpecifier *) override { return true; }
+ void endVisit(ExportSpecifier *) override {}
+
+ bool visit(ExportsList *) override { return true; }
+ void endVisit(ExportsList *) override {}
+
+ bool visit(ExportClause *) override { return true; }
+ void endVisit(ExportClause *) override {}
+
+ bool visit(ExportDeclaration *) override { return true; }
+ void endVisit(ExportDeclaration *) override {}
+
+ bool visit(ESModule *) override { return true; }
+ void endVisit(ESModule *) override {}
+
+ bool visit(DebuggerStatement *) override { return true; }
+ void endVisit(DebuggerStatement *) override {}
+
+ bool visit(Type *) override { return true; }
+ void endVisit(Type *) override {}
+
+ bool visit(TypeArgumentList *) override { return true; }
+ void endVisit(TypeArgumentList *) override {}
+
+ bool visit(TypeAnnotation *) override { return true; }
+ void endVisit(TypeAnnotation *) override {}
+};
+
} } // namespace AST
QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h b/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h
new file mode 100644
index 0000000000..1e6e86971c
--- /dev/null
+++ b/src/libs/qmljs/parser/qmljsdiagnosticmessage_p.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 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 <QtCore/qlogging.h>
+#include <QtCore/qstring.h>
+#include "qmljsglobal_p.h"
+#include "qmljs/qmljsconstants.h"
+
+// Include the API version here, to avoid complications when querying it for the
+// QmlSourceLocation -> line/column change.
+
+
+#include "qmljssourcelocation_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace QmlJS {
+class DiagnosticMessage
+{
+public:
+ QString message;
+ Severity::Enum kind = Severity::Error;
+ SourceLocation loc;
+ static Severity::Enum qtMsgTypeToKind(QtMsgType msgType) {
+ switch (msgType) {
+ case QtDebugMsg:
+ return Severity::Hint;
+ case QtWarningMsg:
+ return Severity::Warning;
+ case QtCriticalMsg:
+ return Severity::Error;
+ case QtFatalMsg:
+ return Severity::Error;
+ case QtInfoMsg:
+ return Severity::MaybeWarning;
+ }
+ }
+ DiagnosticMessage() {}
+ DiagnosticMessage(Severity::Enum kind, SourceLocation loc, QString message):
+ message(message), kind(kind), loc(loc)
+ { }
+
+ bool isError() const
+ {
+ return kind == Severity::Error;
+ }
+
+ bool isWarning() const
+ {
+ return kind == Severity::Warning;
+ }
+
+ bool isValid() const
+ {
+ return !message.isEmpty();
+ }
+};
+} // namespace QmlJS
+
+Q_DECLARE_TYPEINFO(QmlJS::DiagnosticMessage, Q_MOVABLE_TYPE);
+
+QT_END_NAMESPACE
+
diff --git a/src/libs/qmljs/parser/qmljsengine_p.cpp b/src/libs/qmljs/parser/qmljsengine_p.cpp
index f38d801a02..1a2b0fd222 100644
--- a/src/libs/qmljs/parser/qmljsengine_p.cpp
+++ b/src/libs/qmljs/parser/qmljsengine_p.cpp
@@ -109,9 +109,9 @@ void Engine::setCode(const QString &code)
{ _code = code; }
void Engine::addComment(int pos, int len, int line, int col)
-{ if (len > 0) _comments.append(QmlJS::AST::SourceLocation(pos, len, line, col)); }
+{ if (len > 0) _comments.append(QmlJS::SourceLocation(pos, len, line, col)); }
-QList<QmlJS::AST::SourceLocation> Engine::comments() const
+QList<QmlJS::SourceLocation> Engine::comments() const
{ return _comments; }
Lexer *Engine::lexer() const
diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h
index 2321c5aa8f..28d5913679 100644
--- a/src/libs/qmljs/parser/qmljsengine_p.h
+++ b/src/libs/qmljs/parser/qmljsengine_p.h
@@ -37,8 +37,9 @@
//
#include "qmljsglobal_p.h"
-#include "qmljsastfwd_p.h"
-#include "qmljsmemorypool_p.h"
+#include "qmljs/parser/qmljssourcelocation_p.h"
+
+#include "qmljs/parser/qmljsmemorypool_p.h"
#include <QString>
#include <QSet>
@@ -61,49 +62,28 @@ public:
virtual void importFile(const QString &jsfile, const QString &module, int line, int column)
{
- Q_UNUSED(jsfile)
- Q_UNUSED(module)
- Q_UNUSED(line)
- Q_UNUSED(column)
+ Q_UNUSED(jsfile);
+ Q_UNUSED(module);
+ Q_UNUSED(line);
+ Q_UNUSED(column);
}
virtual void importModule(const QString &uri, const QString &version, const QString &module, int line, int column)
{
- Q_UNUSED(uri)
- Q_UNUSED(version)
- Q_UNUSED(module)
- Q_UNUSED(line)
- Q_UNUSED(column)
+ Q_UNUSED(uri);
+ Q_UNUSED(version);
+ Q_UNUSED(module);
+ Q_UNUSED(line);
+ Q_UNUSED(column);
}
};
-
-class QML_PARSER_EXPORT DiagnosticMessage
-{
-public:
-
- DiagnosticMessage() {}
-
- DiagnosticMessage(Severity::Enum kind, const AST::SourceLocation &loc, const QString &message)
- : kind(kind), loc(loc), message(message) {}
-
- bool isWarning() const
- { return kind == Severity::Warning; }
-
- bool isError() const
- { return kind == Severity::Error; }
-
- Severity::Enum kind = Severity::Error;
- AST::SourceLocation loc;
- QString message;
-};
-
class QML_PARSER_EXPORT Engine
{
Lexer *_lexer;
Directives *_directives;
MemoryPool _pool;
- QList<AST::SourceLocation> _comments;
+ QList<SourceLocation> _comments;
QString _extraCode;
QString _code;
@@ -115,7 +95,7 @@ public:
const QString &code() const { return _code; }
void addComment(int pos, int len, int line, int col);
- QList<AST::SourceLocation> comments() const;
+ QList<SourceLocation> comments() const;
Lexer *lexer() const;
void setLexer(Lexer *lexer);
diff --git a/src/libs/qmljs/parser/qmljsgrammar.cpp b/src/libs/qmljs/parser/qmljsgrammar.cpp
index e0fdfd0103..d468b9d6dc 100644
--- a/src/libs/qmljs/parser/qmljsgrammar.cpp
+++ b/src/libs/qmljs/parser/qmljsgrammar.cpp
@@ -3,9 +3,8 @@
** Copyright (C) 2016 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
@@ -22,15 +21,10 @@
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
+***************************************************************************/
// This file was generated by qlalr - DO NOT EDIT!
#include "qmljsgrammar_p.h"
-QT_BEGIN_NAMESPACE
-
const char *const QmlJSGrammar::spell [] = {
"end of file", "&", "&&", "&=", "break", "case", "catch", ":", ",", "continue",
"default", "delete", "/", "/=", "do", ".", "else", "=", "==", "===",
@@ -41,1270 +35,1474 @@ 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", "(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
+ "@", "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"
+#endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO
+
};
const short QmlJSGrammar::lhs [] = {
- 130, 130, 130, 130, 130, 130, 131, 137, 137, 140,
- 140, 140, 140, 143, 145, 145, 141, 146, 142, 149,
- 149, 142, 142, 142, 148, 139, 138, 152, 152, 153,
- 153, 154, 154, 151, 134, 134, 134, 134, 157, 157,
- 159, 159, 159, 159, 159, 159, 159, 159, 159, 134,
- 167, 167, 167, 167, 168, 168, 169, 169, 169, 169,
- 134, 134, 170, 134, 134, 171, 134, 134, 134, 172,
- 172, 134, 173, 134, 134, 134, 174, 134, 134, 175,
- 134, 134, 134, 134, 134, 155, 134, 179, 179, 179,
- 179, 150, 150, 150, 150, 150, 150, 150, 150, 150,
- 150, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 180, 181, 182, 182, 183, 183, 183,
- 184, 185, 185, 186, 186, 186, 186, 186, 186, 186,
- 186, 186, 186, 186, 195, 195, 195, 195, 187, 187,
- 187, 187, 187, 187, 193, 193, 188, 188, 188, 200,
- 200, 200, 200, 200, 202, 202, 199, 199, 203, 189,
- 189, 189, 158, 205, 158, 205, 207, 207, 208, 206,
- 207, 207, 211, 211, 213, 210, 213, 210, 213, 215,
- 215, 216, 216, 216, 216, 216, 216, 216, 216, 216,
- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
- 216, 216, 216, 216, 216, 216, 216, 216, 216, 214,
- 217, 209, 218, 219, 218, 219, 194, 220, 220, 194,
- 147, 221, 147, 147, 222, 147, 147, 147, 147, 223,
- 225, 225, 226, 147, 226, 226, 226, 226, 226, 224,
- 224, 224, 227, 227, 227, 227, 228, 228, 229, 229,
- 229, 229, 229, 230, 230, 230, 230, 230, 230, 230,
- 230, 231, 231, 232, 232, 233, 233, 233, 234, 234,
- 234, 235, 235, 235, 235, 236, 237, 236, 237, 238,
- 238, 238, 238, 238, 236, 239, 240, 239, 240, 241,
- 241, 241, 241, 242, 243, 242, 243, 244, 245, 244,
- 245, 246, 247, 246, 247, 248, 249, 248, 249, 250,
- 251, 250, 251, 252, 253, 252, 253, 204, 201, 204,
- 201, 204, 201, 204, 201, 204, 201, 258, 258, 258,
- 258, 258, 258, 258, 258, 258, 258, 258, 258, 133,
- 196, 133, 196, 259, 260, 259, 260, 132, 132, 132,
- 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
- 132, 269, 269, 269, 270, 270, 274, 274, 262, 262,
- 261, 161, 279, 279, 280, 280, 278, 278, 281, 281,
- 282, 283, 272, 286, 288, 178, 284, 285, 287, 289,
- 284, 285, 287, 289, 293, 290, 291, 292, 293, 290,
- 291, 292, 294, 294, 295, 295, 295, 296, 296, 296,
- 297, 297, 298, 298, 300, 299, 299, 299, 301, 301,
- 197, 197, 198, 198, 162, 156, 160, 163, 163, 277,
- 277, 277, 277, 277, 277, 302, 302, 277, 277, 303,
- 303, 303, 303, 263, 263, 264, 264, 265, 164, 165,
- 304, 304, 307, 307, 305, 305, 308, 306, 266, 309,
- 309, 267, 166, 166, 166, 310, 311, 312, 312, 268,
- 313, 273, 177, 275, 275, 190, 190, 318, 314, 314,
- 314, 314, 314, 319, 319, 320, 315, 317, 316, 256,
- 257, 256, 257, 321, 321, 322, 212, 212, 212, 212,
- 326, 323, 325, 327, 176, 276, 276, 192, 192, 324,
- 254, 255, 254, 255, 254, 255, 271, 191, 332, 191,
- 332, 329, 331, 333, 328, 328, 330, 330, 334, 334,
- 335, 335, 335, 135, 135, 336, 136, 338, 337, 337,
- 339, 339, 340, 340, 340, 341, 341, 343, 343, 343,
- 343, 343, 346, 347, 348, 348, 348, 344, 350, 350,
- 351, 351, 345, 349, 352, 342, 342, 342, 342, 342,
- 342, 342, 342, 353, 353, 353, 354, 354, 355, 355,
- 356
+ 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, 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
};
const short QmlJSGrammar::rhs [] = {
2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
1, 2, 2, 1, 1, 1, 3, 1, 2, 3,
- 1, 3, 5, 4, 2, 0, 1, 1, 2, 1,
- 3, 2, 3, 2, 1, 6, 5, 4, 4, 5,
+ 1, 3, 5, 4, 2, 0, 1, 1, 3, 2,
+ 2, 1, 2, 2, 1, 1, 2, 1, 3, 2,
+ 3, 2, 2, 1, 1, 6, 5, 4, 5, 6,
3, 3, 3, 2, 2, 2, 2, 2, 2, 3,
1, 1, 1, 3, 0, 1, 3, 2, 5, 4,
- 6, 3, 7, 1, 2, 4, 1, 2, 2, 0,
- 1, 2, 6, 1, 2, 2, 11, 1, 2, 8,
- 1, 2, 1, 1, 1, 1, 5, 1, 3, 3,
- 5, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 6, 3, 7, 1, 2, 4, 1, 2, 2, 3,
+ 3, 0, 1, 3, 1, 2, 6, 1, 2, 2,
+ 11, 1, 2, 8, 1, 2, 1, 1, 1, 1,
+ 5, 4, 1, 3, 3, 5, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 4, 1, 1,
- 2, 1, 0, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 2, 3, 5, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 3, 5, 1,
- 2, 2, 4, 4, 1, 2, 0, 1, 2, 2,
- 3, 4, 1, 1, 3, 3, 1, 1, 2, 3,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 4, 1, 1, 2, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 2, 3, 5, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 3, 5, 1, 2, 2, 4,
+ 4, 1, 2, 0, 1, 2, 2, 3, 4, 1,
+ 1, 3, 3, 1, 1, 2, 3, 3, 1, 1,
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, 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, 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, 1, 1, 1, 1, 1, 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
+};
+
+
+#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, 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
+};
+
+const int QmlJSGrammar::rule_index [] = {
+ 0, 3, 6, 9, 12, 15, 18, 21, 23, 25,
+ 27, 29, 32, 35, 37, 39, 41, 45, 47, 50,
+ 54, 56, 60, 66, 71, 74, 75, 77, 79, 83,
+ 86, 89, 91, 94, 97, 99, 101, 104, 106, 110,
+ 113, 117, 120, 123, 125, 127, 134, 140, 145, 151,
+ 158, 162, 166, 170, 173, 176, 179, 182, 185, 188,
+ 192, 194, 196, 198, 202, 203, 205, 209, 212, 218,
+ 223, 230, 234, 242, 244, 247, 252, 254, 257, 260,
+ 264, 268, 269, 271, 275, 277, 280, 287, 289, 292,
+ 295, 307, 309, 312, 321, 323, 326, 328, 330, 332,
+ 334, 340, 345, 347, 351, 355, 361, 363, 365, 367,
+ 369, 371, 373, 375, 377, 379, 381, 383, 385, 387,
+ 389, 391, 393, 395, 397, 399, 401, 403, 405, 407,
+ 409, 411, 413, 415, 419, 424, 426, 428, 431, 433,
+ 434, 436, 438, 440, 442, 444, 446, 448, 450, 452,
+ 454, 456, 460, 463, 467, 473, 475, 477, 479, 481,
+ 483, 485, 487, 489, 493, 497, 503, 505, 508, 511,
+ 516, 521, 523, 526, 527, 529, 532, 535, 539, 544,
+ 546, 548, 552, 556, 558, 560, 563, 567, 571, 573,
+ 575, 577, 579, 581, 583, 585, 587, 589, 591, 593,
+ 595, 597, 599, 601, 603, 605, 607, 609, 611, 613,
+ 615, 617, 619, 621, 623, 625, 627, 629, 631, 633,
+ 635, 637, 639, 641, 643, 645, 647, 649, 651, 653,
+ 655, 657, 659, 661, 663, 665, 667, 671, 674, 677,
+ 678, 679, 681, 683, 685, 687, 691, 695, 697, 699,
+ 704, 709, 713, 717, 721, 723, 729, 731, 733, 736,
+ 739, 742, 747, 752, 757, 762, 766, 767, 769, 772,
+ 774, 777, 781, 786, 788, 790, 792, 795, 798, 801,
+ 804, 806, 809, 812, 815, 818, 821, 824, 827, 829,
+ 833, 835, 839, 841, 843, 845, 847, 851, 855, 857,
+ 861, 865, 869, 871, 873, 877, 881, 883, 885, 887,
+ 889, 891, 895, 899, 903, 905, 907, 909, 911, 915,
+ 919, 921, 923, 925, 927, 929, 931, 935, 939, 941,
+ 943, 947, 951, 953, 955, 959, 963, 965, 967, 971,
+ 975, 977, 979, 983, 987, 989, 991, 995, 999, 1001,
+ 1003, 1009, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1031,
+ 1035, 1039, 1043, 1045, 1047, 1049, 1051, 1053, 1055, 1057,
+ 1059, 1061, 1063, 1065, 1067, 1069, 1071, 1075, 1079, 1080,
+ 1081, 1083, 1085, 1089, 1092, 1095, 1098, 1101, 1104, 1107,
+ 1110, 1113, 1116, 1119, 1122, 1125, 1128, 1130, 1132, 1134,
+ 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1152, 1154, 1157,
+ 1159, 1164, 1166, 1168, 1170, 1172, 1174, 1177, 1180, 1183,
+ 1186, 1189, 1191, 1193, 1195, 1197, 1201, 1205, 1209, 1213,
+ 1217, 1221, 1225, 1229, 1232, 1235, 1238, 1241, 1245, 1249,
+ 1250, 1252, 1255, 1258, 1260, 1265, 1267, 1271, 1273, 1277,
+ 1280, 1283, 1288, 1293, 1297, 1300, 1303, 1306, 1307, 1309,
+ 1311, 1312, 1315, 1323, 1329, 1337, 1345, 1351, 1361, 1371,
+ 1381, 1383, 1385, 1393, 1401, 1405, 1409, 1412, 1415, 1418,
+ 1422, 1425, 1429, 1433, 1439, 1445, 1449, 1455, 1457, 1460,
+ 1461, 1463, 1468, 1472, 1476, 1478, 1482, 1486, 1490, 1494,
+ 1499, 1505, 1508, 1510, 1512, 1515, 1517, 1527, 1537, 1539,
+ 1548, 1558, 1567, 1569, 1570, 1572, 1574, 1577, 1581, 1583,
+ 1587, 1589, 1591, 1593, 1595, 1600, 1605, 1613, 1621, 1623,
+ 1625, 1626, 1635, 1645, 1654, 1664, 1666, 1668, 1670, 1672,
+ 1681, 1683, 1691, 1700, 1708, 1710, 1712, 1714, 1718, 1722,
+ 1725, 1728, 1735, 1742, 1748, 1754, 1756, 1758, 1760, 1762,
+ 1763, 1766, 1767, 1769, 1771, 1774, 1776, 1779, 1781, 1782,
+ 1784, 1786, 1788, 1790, 1791, 1793, 1795, 1798, 1801, 1804,
+ 1806, 1810, 1813, 1815, 1817, 1819, 1823, 1827, 1829, 1833,
+ 1836, 1840, 1845, 1848, 1850, 1854, 1856, 1860, 1862, 1864,
+ 1865, 1869, 1873, 1876, 1879, 1882, 1888, 1894, 1899, 1902,
+ 1906, 1911, 1913, 1917, 1919, 1923
};
+#endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO
const short QmlJSGrammar::action_default [] = {
- 0, 0, 436, 436, 436, 0, 26, 0, 282, 127,
- 332, 0, 350, 504, 308, 316, 312, 258, 130, 328,
- 134, 304, 274, 3, 129, 131, 125, 114, 259, 126,
- 320, 324, 241, 238, 279, 257, 240, 128, 231, 132,
- 297, 287, 0, 112, 535, 0, 145, 146, 141, 109,
- 0, 0, 107, 102, 0, 157, 0, 0, 0, 143,
- 0, 0, 227, 139, 142, 111, 106, 0, 0, 103,
- 105, 113, 108, 104, 110, 144, 232, 0, 124, 0,
- 140, 0, 0, 521, 133, 272, 264, 330, 0, 0,
- 134, 125, 259, 281, 261, 260, 0, 277, 278, 276,
- 275, 280, 506, 0, 500, 0, 436, 497, 387, 0,
- 385, 436, 383, 499, 333, 0, 351, 309, 317, 313,
- 365, 363, 329, 364, 371, 360, 305, 361, 0, 125,
- 362, 379, 368, 259, 321, 325, 296, 366, 286, 380,
- 0, 0, 0, 436, 0, 0, 0, 0, 355, 435,
- 0, 0, 0, 391, 0, 0, 522, 369, 370, 0,
- 0, 359, 367, 331, 506, 0, 501, 0, 436, 0,
- 503, 498, 0, 307, 0, 300, 302, 301, 303, 298,
- 0, 293, 291, 0, 294, 292, 290, 288, 0, 0,
- 0, 284, 285, 283, 295, 0, 315, 0, 311, 437,
- 15, 0, 16, 353, 436, 0, 469, 470, 0, 0,
- 471, 481, 0, 115, 489, 494, 123, 224, 490, 491,
- 0, 0, 415, 157, 0, 122, 224, 86, 0, 0,
- 119, 121, 120, 0, 0, 244, 237, 180, 181, 182,
- 183, 184, 216, 210, 185, 212, 186, 187, 188, 189,
- 190, 218, 217, 191, 192, 193, 194, 195, 219, 196,
- 197, 211, 198, 199, 213, 200, 214, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 215, 0, 234, 0,
- 0, 236, 0, 233, 0, 0, 250, 251, 0, 253,
- 0, 252, 255, 0, 256, 239, 254, 235, 0, 116,
- 0, 0, 118, 117, 429, 226, 0, 222, 430, 492,
- 495, 493, 123, 0, 436, 0, 482, 431, 432, 224,
- 421, 416, 174, 175, 115, 173, 0, 0, 0, 179,
- 177, 426, 417, 422, 413, 0, 224, 224, 427, 428,
- 0, 220, 0, 419, 423, 158, 433, 155, 414, 157,
- 424, 433, 425, 434, 420, 156, 418, 0, 347, 340,
- 0, 345, 346, 344, 343, 349, 342, 341, 338, 339,
- 348, 337, 335, 0, 319, 0, 0, 323, 0, 0,
- 327, 0, 456, 457, 0, 454, 455, 480, 0, 0,
- 0, 0, 0, 0, 441, 440, 354, 356, 0, 0,
- 259, 0, 0, 390, 389, 0, 0, 0, 352, 355,
- 0, 357, 355, 0, 436, 443, 0, 446, 447, 0,
- 436, 449, 0, 0, 0, 336, 0, 436, 448, 334,
- 123, 392, 452, 397, 450, 406, 0, 123, 0, 401,
- 223, 225, 405, 0, 221, 409, 410, 355, 0, 355,
- 0, 436, 445, 123, 453, 399, 394, 451, 407, 411,
- 0, 123, 0, 403, 223, 355, 0, 355, 0, 436,
- 444, 381, 358, 436, 0, 382, 373, 0, 375, 0,
- 376, 372, 0, 374, 0, 514, 386, 0, 489, 512,
- 0, 0, 436, 520, 0, 515, 513, 123, 393, 0,
- 398, 224, 0, 402, 535, 0, 0, 537, 532, 0,
- 539, 538, 0, 541, 0, 107, 543, 108, 0, 534,
- 527, 533, 540, 542, 489, 488, 0, 123, 0, 436,
- 0, 507, 0, 0, 123, 0, 436, 0, 509, 0,
- 0, 496, 511, 0, 123, 0, 436, 0, 510, 0,
- 489, 0, 123, 0, 436, 0, 508, 536, 0, 0,
- 436, 439, 436, 438, 0, 458, 0, 0, 0, 460,
- 465, 463, 466, 0, 0, 464, 465, 0, 461, 0,
- 462, 436, 468, 0, 436, 467, 0, 472, 0, 473,
- 474, 0, 0, 475, 0, 478, 479, 0, 0, 476,
- 477, 0, 0, 436, 442, 0, 0, 436, 459, 526,
- 0, 524, 123, 0, 395, 400, 224, 408, 412, 0,
- 404, 396, 502, 0, 384, 0, 306, 0, 299, 0,
- 289, 0, 314, 0, 310, 0, 0, 250, 243, 249,
- 0, 248, 0, 247, 0, 318, 0, 0, 322, 0,
- 0, 326, 250, 0, 245, 250, 0, 246, 535, 0,
- 0, 537, 0, 528, 537, 0, 530, 265, 264, 0,
- 489, 489, 0, 123, 0, 436, 0, 486, 0, 123,
- 0, 436, 0, 487, 0, 489, 489, 0, 0, 436,
- 0, 518, 0, 0, 436, 0, 519, 168, 167, 172,
- 164, 0, 0, 160, 169, 0, 161, 166, 162, 0,
- 171, 150, 0, 158, 0, 157, 148, 0, 153, 154,
- 0, 149, 159, 151, 152, 147, 0, 0, 136, 137,
- 433, 135, 0, 138, 269, 263, 241, 242, 271, 268,
- 262, 0, 0, 228, 230, 0, 229, 270, 267, 266,
- 525, 0, 523, 0, 273, 0, 0, 6, 550, 547,
- 551, 436, 555, 0, 0, 554, 553, 552, 580, 578,
- 575, 0, 0, 579, 577, 0, 568, 573, 0, 583,
- 0, 531, 582, 0, 484, 377, 0, 516, 378, 581,
- 535, 489, 0, 123, 0, 436, 0, 485, 489, 0,
- 0, 436, 0, 517, 0, 537, 0, 529, 587, 0,
- 589, 584, 0, 585, 588, 586, 0, 590, 576, 574,
- 0, 563, 558, 557, 559, 560, 0, 0, 556, 0,
- 561, 562, 0, 569, 571, 0, 565, 0, 572, 0,
- 566, 570, 567, 0, 564, 5, 545, 436, 2, 0,
- 84, 83, 0, 0, 481, 514, 103, 105, 113, 104,
- 35, 4, 81, 64, 67, 78, 74, 0, 85, 0,
- 489, 0, 123, 0, 436, 0, 483, 0, 69, 68,
- 76, 53, 52, 51, 0, 0, 53, 0, 0, 0,
- 54, 0, 99, 97, 92, 100, 96, 93, 95, 101,
- 98, 94, 63, 0, 66, 436, 0, 70, 44, 45,
- 46, 48, 0, 0, 49, 47, 42, 436, 43, 387,
- 142, 144, 163, 0, 0, 0, 39, 178, 40, 176,
- 165, 0, 170, 41, 73, 71, 0, 0, 0, 88,
- 0, 87, 90, 0, 91, 0, 89, 53, 0, 0,
- 0, 0, 0, 0, 0, 0, 30, 0, 0, 0,
- 31, 77, 0, 34, 32, 28, 0, 33, 29, 0,
- 436, 0, 241, 0, 0, 80, 0, 82, 65, 79,
- 75, 53, 0, 0, 0, 0, 0, 0, 436, 0,
- 241, 0, 72, 0, 0, 0, 62, 55, 0, 53,
- 56, 0, 0, 0, 57, 0, 0, 0, 0, 59,
- 60, 0, 61, 58, 436, 0, 0, 50, 157, 0,
- 0, 36, 37, 0, 38, 8, 0, 0, 9, 0,
+ 0, 0, 461, 461, 461, 0, 26, 0, 299, 144,
+ 357, 0, 375, 529, 329, 337, 333, 275, 147, 349,
+ 353, 151, 325, 291, 3, 146, 148, 142, 131, 276,
+ 143, 341, 345, 258, 255, 296, 274, 257, 145, 248,
+ 149, 318, 304, 0, 128, 560, 130, 0, 162, 163,
+ 158, 125, 0, 0, 123, 118, 0, 174, 0, 0,
+ 0, 160, 0, 0, 244, 156, 159, 127, 122, 0,
+ 0, 119, 121, 129, 124, 120, 126, 161, 249, 0,
+ 141, 0, 157, 0, 0, 546, 150, 316, 289, 281,
+ 355, 0, 0, 151, 142, 276, 298, 278, 277, 0,
+ 294, 295, 293, 292, 297, 531, 0, 525, 0, 461,
+ 522, 412, 0, 410, 461, 408, 524, 358, 0, 376,
+ 330, 338, 334, 390, 388, 350, 354, 389, 396, 385,
+ 326, 386, 0, 142, 387, 404, 393, 276, 342, 346,
+ 317, 391, 303, 405, 0, 0, 0, 461, 0, 0,
+ 0, 0, 380, 460, 0, 0, 0, 416, 0, 0,
+ 547, 394, 395, 315, 0, 0, 384, 392, 356, 531,
+ 0, 526, 0, 461, 0, 528, 523, 0, 328, 0,
+ 321, 323, 322, 324, 319, 0, 0, 310, 308, 0,
+ 311, 309, 307, 305, 0, 0, 0, 301, 302, 300,
+ 100, 0, 0, 136, 313, 137, 0, 0, 261, 254,
+ 197, 198, 199, 200, 201, 233, 227, 202, 229, 203,
+ 204, 205, 206, 207, 235, 234, 208, 209, 210, 211,
+ 212, 236, 213, 214, 228, 215, 216, 230, 217, 231,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 232,
+ 0, 0, 251, 378, 0, 0, 253, 0, 250, 0,
+ 0, 267, 268, 0, 270, 0, 269, 272, 0, 273,
+ 256, 271, 252, 0, 133, 0, 0, 135, 134, 312,
+ 0, 336, 0, 332, 0, 0, 0, 0, 352, 348,
+ 0, 344, 0, 340, 462, 15, 16, 461, 0, 494,
+ 495, 0, 0, 496, 506, 0, 132, 514, 519, 140,
+ 241, 515, 516, 0, 0, 440, 174, 0, 139, 241,
+ 138, 454, 243, 0, 239, 455, 517, 520, 518, 140,
+ 0, 461, 0, 507, 456, 457, 241, 446, 441, 191,
+ 192, 132, 190, 0, 0, 0, 196, 194, 451, 442,
+ 447, 438, 0, 241, 241, 452, 453, 0, 237, 0,
+ 444, 448, 175, 458, 172, 439, 174, 449, 458, 450,
+ 459, 445, 173, 443, 0, 372, 365, 0, 370, 371,
+ 369, 368, 374, 367, 366, 363, 364, 373, 362, 360,
+ 0, 481, 482, 0, 479, 480, 505, 0, 0, 0,
+ 0, 0, 0, 466, 465, 379, 381, 0, 0, 276,
+ 0, 0, 415, 414, 0, 0, 0, 377, 380, 0,
+ 382, 380, 0, 461, 468, 0, 471, 472, 0, 461,
+ 474, 0, 0, 0, 361, 0, 461, 473, 359, 140,
+ 417, 477, 422, 475, 431, 0, 140, 0, 426, 240,
+ 242, 430, 0, 238, 434, 435, 380, 0, 380, 0,
+ 461, 470, 140, 478, 424, 419, 476, 432, 436, 0,
+ 140, 0, 428, 240, 380, 0, 380, 0, 461, 469,
+ 406, 383, 461, 0, 407, 398, 0, 400, 0, 401,
+ 397, 0, 399, 0, 539, 411, 0, 514, 537, 0,
+ 0, 461, 545, 0, 540, 538, 140, 418, 0, 423,
+ 241, 0, 427, 560, 0, 0, 562, 557, 0, 564,
+ 563, 0, 566, 0, 123, 568, 124, 0, 559, 552,
+ 558, 565, 567, 514, 513, 0, 140, 0, 461, 0,
+ 532, 0, 0, 140, 0, 461, 0, 534, 0, 0,
+ 521, 536, 0, 140, 0, 461, 0, 535, 0, 514,
+ 0, 140, 0, 461, 0, 533, 561, 0, 0, 461,
+ 464, 461, 463, 0, 483, 0, 0, 0, 485, 490,
+ 488, 491, 0, 0, 489, 490, 0, 486, 0, 487,
+ 461, 493, 0, 461, 492, 0, 497, 0, 498, 499,
+ 0, 0, 500, 0, 503, 504, 0, 0, 501, 502,
+ 0, 0, 461, 467, 0, 0, 461, 484, 551, 0,
+ 549, 140, 0, 420, 425, 241, 433, 437, 0, 429,
+ 421, 527, 0, 409, 0, 327, 0, 320, 0, 0,
+ 306, 314, 0, 335, 0, 331, 0, 0, 267, 260,
+ 266, 0, 265, 0, 264, 0, 0, 0, 0, 351,
+ 347, 0, 343, 0, 339, 267, 0, 262, 267, 0,
+ 263, 560, 0, 0, 562, 0, 553, 562, 0, 555,
+ 282, 281, 0, 514, 514, 0, 140, 0, 461, 0,
+ 511, 0, 140, 0, 461, 0, 512, 0, 514, 514,
+ 0, 0, 461, 0, 543, 0, 0, 461, 0, 544,
+ 185, 184, 189, 181, 0, 0, 177, 186, 0, 178,
+ 183, 179, 0, 188, 167, 0, 175, 0, 174, 165,
+ 0, 170, 171, 0, 166, 176, 168, 169, 164, 0,
+ 0, 153, 154, 458, 152, 0, 155, 286, 280, 258,
+ 259, 288, 285, 279, 0, 0, 245, 247, 0, 246,
+ 287, 284, 283, 550, 0, 548, 0, 290, 0, 0,
+ 6, 575, 572, 576, 461, 580, 0, 0, 579, 578,
+ 577, 605, 603, 600, 0, 0, 604, 602, 0, 593,
+ 598, 0, 608, 0, 556, 607, 0, 509, 402, 0,
+ 541, 403, 606, 560, 514, 0, 140, 0, 461, 0,
+ 510, 514, 0, 0, 461, 0, 542, 0, 562, 0,
+ 554, 612, 0, 614, 609, 0, 610, 613, 611, 0,
+ 615, 601, 599, 0, 588, 583, 582, 584, 585, 0,
+ 0, 581, 0, 586, 587, 0, 594, 596, 0, 590,
+ 0, 597, 0, 591, 595, 592, 0, 589, 5, 570,
+ 461, 2, 0, 98, 97, 0, 130, 0, 0, 506,
+ 539, 119, 121, 129, 120, 4, 32, 0, 45, 44,
+ 95, 74, 77, 92, 88, 0, 85, 99, 0, 514,
+ 0, 140, 0, 461, 0, 508, 28, 31, 0, 0,
+ 0, 30, 29, 40, 36, 0, 41, 37, 0, 0,
+ 102, 0, 42, 0, 0, 79, 78, 90, 63, 62,
+ 61, 0, 0, 63, 0, 0, 0, 64, 0, 117,
+ 114, 112, 107, 115, 111, 108, 110, 116, 113, 109,
+ 73, 0, 76, 461, 0, 82, 54, 55, 56, 58,
+ 0, 0, 59, 57, 52, 461, 53, 412, 159, 161,
+ 180, 0, 0, 0, 0, 195, 0, 193, 182, 50,
+ 49, 0, 187, 51, 87, 83, 0, 80, 0, 0,
+ 0, 0, 0, 103, 0, 101, 105, 0, 106, 0,
+ 104, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 38, 0, 0, 39, 91, 0, 461, 0, 258, 0,
+ 0, 94, 0, 96, 75, 93, 89, 63, 0, 0,
+ 0, 0, 0, 0, 461, 0, 258, 0, 0, 108,
+ 86, 84, 81, 0, 72, 65, 0, 63, 66, 0,
+ 0, 0, 67, 0, 0, 0, 0, 69, 70, 0,
+ 71, 68, 33, 43, 461, 0, 0, 60, 174, 0,
+ 0, 46, 47, 0, 48, 8, 0, 0, 9, 0,
11, 0, 10, 1, 25, 18, 14, 0, 17, 13,
- 12, 27, 7, 19, 0, 21, 0, 0, 24, 0,
- 20, 22, 0, 0, 23, 591
+ 12, 27, 0, 35, 7, 34, 19, 0, 21, 0,
+ 0, 24, 0, 20, 22, 0, 0, 23, 616
};
const short QmlJSGrammar::goto_default [] = {
- 7, 1033, 110, 23, 861, 845, 757, 1029, 1042, 1025,
- 1028, 1032, 1030, 1037, 27, 902, 1034, 32, 1031, 1046,
- 903, 860, 966, 955, 963, 957, 108, 918, 923, 907,
- 127, 471, 125, 130, 162, 139, 158, 948, 1001, 1000,
- 863, 864, 934, 866, 865, 862, 851, 850, 161, 938,
- 26, 13, 300, 231, 225, 226, 38, 29, 9, 37,
- 24, 18, 25, 39, 84, 20, 128, 218, 356, 714,
- 712, 116, 345, 724, 12, 701, 922, 700, 697, 305,
- 924, 514, 513, 325, 322, 323, 238, 441, 458, 435,
- 744, 42, 36, 33, 288, 35, 17, 287, 133, 86,
- 85, 22, 34, 96, 8, 138, 136, 40, 180, 126,
- 21, 174, 14, 117, 16, 119, 15, 118, 30, 134,
- 31, 135, 19, 122, 87, 163, 10, 114, 422, 398,
- 564, 472, 121, 123, 120, 137, 132, 157, 124, 477,
- 481, 476, 483, 478, 789, 785, 788, 131, 113, 111,
- 112, 482, 159, 402, 431, 498, 406, 456, 160, 614,
- 433, 455, 615, 439, 217, 326, 342, 321, 343, 320,
- 344, 215, 416, 399, 569, 573, 576, 572, 571, 206,
- 589, 590, 597, 209, 525, 106, 493, 622, 526, 219,
- 542, 115, 103, 685, 494, 495, 543, 479, 659, 507,
- 509, 520, 782, 512, 511, 510, 846, 759, 758, 761,
- 760, 756, 755, 820, 774, 823, 822, 824, 825, 834,
- 835, 833, 778, 769, 809, 808, 0
+ 7, 1073, 113, 24, 875, 858, 770, 1069, 1084, 1065,
+ 1068, 1072, 1070, 1077, 28, 942, 1074, 33, 1071, 1089,
+ 1027, 1081, 898, 897, 912, 876, 877, 878, 905, 999,
+ 911, 879, 111, 956, 961, 945, 131, 480, 129, 134,
+ 167, 143, 162, 978, 1039, 1038, 881, 882, 974, 886,
+ 884, 883, 880, 864, 863, 166, 982, 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
};
const short QmlJSGrammar::action_index [] = {
- 411, 3072, 372, 153, -130, 2475, 205, 152, 274, -130,
- -130, 80, -130, -130, 150, 115, 77, 488, -130, -130,
- 68, 463, -130, 142, -130, -130, 67, -130, 1520, -130,
- 144, 190, 484, -130, 377, -130, -130, -130, -130, -130,
- 596, 385, 363, -130, 959, 2834, -130, -130, -130, -130,
- 1058, 1073, -130, -130, 6123, 3432, 4387, 2834, 2834, -130,
- 2355, 2834, -130, -130, -130, -130, -130, 2834, 2834, -130,
- -130, -130, -130, -130, -130, -130, -130, 3072, -130, 2834,
- -130, 2834, 2834, 4146, -130, -130, 78, -130, 2834, 2834,
- -130, -130, 251, 391, -130, -130, 2834, -130, -130, -130,
- -130, 400, -130, 3191, -130, 108, -130, -130, 6501, 91,
- -130, 428, -130, -130, -130, 66, -130, 139, 90, 62,
- -130, -130, -130, -130, -130, -130, 458, -130, 368, 216,
- -130, -130, -130, 1438, 135, 176, 550, -130, 418, -130,
- 1172, 1094, 196, -130, 110, 109, 479, 104, 2953, -130,
- 98, 2953, 109, -130, 112, 141, 4027, -130, -130, 1311,
- 229, -130, -130, -130, -130, 3908, -130, 147, -130, 120,
- -130, -130, 2834, 445, 2834, -130, -130, -130, -130, 512,
- 2834, -130, -130, 2834, -130, -130, -130, 342, 2834, 2834,
- 2834, 231, 246, 197, 305, 2834, 119, 2834, 175, -130,
- -130, 2953, -130, -130, -130, 6375, -130, -130, 156, 747,
- -130, -130, 137, -130, 1638, -130, 166, 155, -130, 161,
- 94, 1211, 5619, 159, 2119, -130, 151, 373, 228, 2237,
- -130, -130, 128, 4989, 2953, -130, -130, -130, -130, -130,
- -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
- -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
- -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
- -130, -130, -130, -130, -130, -130, -130, 221, -130, 4989,
- 2953, -130, 367, -130, 478, 129, 3670, 149, 118, -130,
- 2953, 3551, -130, 2953, -130, -130, -130, -130, 2119, -130,
- 270, 2119, -130, -130, -130, -130, 2953, -130, -130, 1413,
- -130, -130, 158, 124, -130, 113, -130, -130, -130, 138,
- -130, 146, -130, -130, 219, -130, 73, 103, 2953, -130,
- -130, -130, 5619, -130, -130, 1311, 102, 97, -130, -130,
- 60, -130, 57, 100, -130, 96, 1398, -130, -130, 95,
- -130, 1538, -130, -130, -130, -130, -130, 2953, -130, -130,
- 2953, -130, -130, -130, -130, -130, -130, -130, -130, -130,
- -130, -130, -130, 2834, 58, 2834, 2953, 99, 93, 2953,
- -130, 198, -130, -130, 206, -130, -130, -130, 6249, 15,
- 61, 2953, 209, 366, -130, -130, 4625, 89, 54, 199,
- 1765, 1311, 48, -130, -130, 1311, 43, 3072, -130, 2953,
- 42, 87, 2953, 40, -130, -130, 2953, -130, -130, 266,
- -130, -130, 3072, 2953, 3072, -130, 275, -130, -130, -130,
- 85, 81, 71, -130, 365, -130, 1311, 92, 117, -130,
- 116, -130, -130, 3072, -130, -130, -130, 2953, 75, 2953,
- 74, -130, -130, 125, 114, -130, 245, 354, -130, -130,
- 1311, 106, 114, -130, 111, 2953, 59, 2953, 65, -130,
- -130, -130, -130, -130, 72, -130, -130, 262, -130, 861,
- -130, -130, 1311, -130, 840, -130, -130, 88, 1538, -130,
- 64, 82, -130, -130, 63, -130, -130, 105, 101, 107,
- -130, 107, 1311, -130, 20, 173, 2001, 5871, -130, 183,
- -130, 5871, 5745, -130, 174, 5619, -130, 5619, 5619, 145,
- -130, -130, -130, -130, 1638, -130, 132, 180, -30, -130,
- 131, -130, 160, 130, 186, 162, -130, 163, -130, 169,
- 1311, -130, -130, 171, 192, 170, -130, 165, -130, 168,
- 1638, 148, 188, 164, -130, 143, -130, -130, 2953, 204,
- -130, 167, -130, -130, 227, -130, 2953, 241, 157, -130,
- 185, -130, 184, 248, 2953, -130, 181, 178, -130, 127,
- -130, -130, -130, 240, -130, -130, 322, -130, 224, 189,
- -130, 177, 179, -130, 1311, -130, -130, 172, 182, -130,
- -130, 2953, 296, -130, -130, 2953, 301, -130, -130, -130,
- 2953, -130, 194, 154, 195, -130, 2, -130, -130, 1311,
- -130, -130, -130, 6501, -130, 2834, 443, 2834, 462, 2834,
- 415, 2834, -67, 2834, 30, 4989, 2953, 3670, -130, -130,
- 256, -130, -26, -130, 2834, -8, 2834, 2953, 1, -7,
- 3072, -130, 3670, -57, -130, 3670, -54, -130, -91, -22,
- -22, 5871, -44, -130, 5871, 23, -130, -130, -130, 38,
- 1523, 1538, 14, 70, 44, -130, 24, -130, 31, 76,
- 51, -130, 37, -130, 5, 1287, 1259, -19, 10, -130,
- -6, -130, -13, 16, -130, 3, -130, -130, 332, -130,
- -130, 290, 273, -130, -130, 5997, -130, -130, -130, 2953,
- -130, -130, 321, 4268, 254, 79, -130, 4506, -130, -130,
- 3072, -130, -130, -130, -130, -130, -32, 294, -130, -130,
- 3789, -130, -24, -130, -130, -130, 491, -130, -130, -130,
- -130, 340, 3072, -130, -130, 358, -130, -130, -130, -130,
- -130, 3072, -130, 2834, -130, 257, 255, -130, -130, -130,
- -130, 239, -130, 570, 1235, -130, -130, -130, -130, -65,
- -130, 5241, -71, -130, -130, -52, -130, -130, 3310, -130,
- 396, -130, -130, 1007, -130, -130, 941, -130, -130, -130,
- 1111, 1638, -56, 0, -23, -130, -42, -130, 1638, 9,
- 45, -130, 33, -130, 12, 5871, -2, -130, -130, 211,
- -27, -130, 5493, -130, -130, -130, 4989, -130, -130, -130,
- -31, -130, 56, -130, -130, -130, 5367, -51, -130, 187,
- -130, -130, -61, -130, -130, 200, -130, 773, -130, 5115,
- -130, -130, -130, 700, -130, -130, -130, 123, -130, 835,
- -130, -130, -38, -3, -9, -12, 331, -46, -47, -10,
- -130, -130, -130, -130, -130, -130, -130, 346, -130, 21,
- 1638, 6, 52, 27, -130, 8, -130, 344, -130, -130,
- -130, 32, -130, -130, 811, 311, -130, 220, 4, 546,
- -130, 218, -130, -130, -130, -130, -130, -130, -130, -130,
- -130, -130, -130, 333, -130, -130, 4744, 222, -130, -130,
- -130, -130, -33, 2953, -130, -130, -130, -130, -130, 6627,
- 11, 19, -130, 265, 28, 295, -130, -130, -130, -130,
- -130, 2953, -130, -130, -130, -130, -20, -28, 210, 50,
- 36, -130, 55, 26, -130, 34, -130, 53, 811, 361,
- 212, 696, 490, 22, 1883, 217, -130, 29, 1883, 213,
- -130, -130, 2595, -130, -130, -130, 2715, -130, -130, 352,
- -130, 4744, 536, -5, 191, -130, 315, -130, -130, -130,
- -130, -1, 633, 335, 226, 575, 329, 47, -130, 4744,
- 524, 330, -130, 811, 225, 320, -130, 1011, 49, 41,
- 39, -17, 693, 316, 25, 911, 46, 669, 308, 69,
- -130, 233, -130, -130, -130, 1883, 4863, -130, 3432, 35,
- 207, -130, -130, -25, -130, -130, 1883, 720, 223, 1883,
- -130, 405, -130, -130, -130, 436, -130, 244, -130, -130,
- -130, -130, -130, -130, 582, 7, 291, 260, -130, -29,
- -130, -130, 696, 237, -130, -130,
+ 430, 3137, 359, 14, -134, 2520, 182, 21, 252, -134,
+ -134, -74, -134, -134, 22, -23, -56, 498, -134, 265,
+ -134, -68, 609, -134, 23, -134, -134, -67, -134, 1527,
+ -134, 30, -15, 504, -134, 358, -134, -134, -134, -134,
+ -134, 545, 369, 493, -134, 1248, -134, 2891, -134, -134,
+ -134, -134, 1045, 1144, -134, -134, 6158, 3878, 4619, 2891,
+ 2891, -134, 2152, 2891, -134, -134, -134, -134, -134, 2891,
+ 2891, -134, -134, -134, -134, -134, -134, -134, -134, 3137,
+ -134, 2891, -134, 2891, 2891, 3383, -134, -134, -134, 0,
+ -134, 2891, 2891, -134, -134, 227, 426, -134, -134, 2891,
+ -134, -134, -134, -134, 419, -134, 3506, -134, 59, -134,
+ -134, 6808, 45, -134, 391, -134, -134, -134, -10, -134,
+ 87, 46, 6, -134, -134, 268, -134, -134, -134, -134,
+ 491, -134, 342, 326, -134, -134, -134, 1330, 94, 49,
+ 573, -134, 321, -134, 1560, 1402, 267, -134, 66, 70,
+ 434, 68, 3014, -134, 69, 3014, 73, -134, 71, 74,
+ 4250, -134, -134, -134, 1194, 222, -134, -134, -134, -134,
+ 4373, -134, 81, -134, 86, -134, -134, 2891, 478, 2891,
+ -134, -134, -134, -134, 593, 2891, 2274, -134, -134, 2891,
+ -134, -134, -134, 408, 2891, 2891, 2891, 190, 214, 221,
+ 435, 209, 2396, -134, -134, 122, 5118, 3014, -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,
+ 220, 3014, -134, -134, 5118, 3014, -134, 293, -134, 492,
+ 137, 3260, 129, 131, -134, 3014, 4001, -134, 3014, -134,
+ -134, -134, -134, 2274, -134, 318, 2274, -134, -134, 345,
+ 2891, 139, 2891, 144, 3014, 2891, 146, 3014, -134, 142,
+ 2891, 152, 2891, 147, -134, -134, -134, -134, 6548, -134,
+ -134, 149, 936, -134, -134, 158, -134, 1664, -134, 167,
+ 168, -134, 169, 170, 1352, 5768, 171, 2274, -134, 173,
+ -134, -134, -134, 3014, -134, -134, 1664, -134, -134, 180,
+ 178, -134, 179, -134, -134, -134, 189, -134, 199, -134,
+ -134, 206, -134, 181, 202, 3014, -134, -134, -134, 5768,
+ -134, -134, 1456, 187, 185, -134, -134, 177, -134, 176,
+ 192, -134, 191, 1664, -134, -134, 174, -134, 1664, -134,
+ -134, -134, -134, -134, 3014, -134, -134, 3014, -134, -134,
+ -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
+ 226, -134, -134, 228, -134, -134, -134, 6418, 164, 161,
+ 3014, 276, 323, -134, -134, 4742, 162, 151, 201, 1642,
+ 1169, 145, -134, -134, 1163, 140, 3137, -134, 3014, 138,
+ 136, 3014, 130, -134, -134, 3014, -134, -134, 238, -134,
+ -134, 3137, 3014, 3137, -134, 215, -134, -134, -134, 121,
+ 246, 113, -134, 344, -134, 1456, 111, 100, -134, 97,
+ -134, -134, 3137, -134, -134, -134, 3014, 78, 3014, 61,
+ -134, -134, 120, 82, -134, 83, 361, -134, -134, 1352,
+ 120, 65, -134, 63, 3014, 18, 3014, 7, -134, -134,
+ -134, -134, -134, 11, -134, -134, 200, -134, 907, -134,
+ -134, 1456, -134, 733, -134, -134, 26, 1664, -134, -5,
+ 24, -134, -134, -3, -134, -134, 120, 39, 35, -134,
+ 32, 1352, -134, -61, 10, 1908, 6028, -134, -22, -134,
+ 6028, 5898, -134, -12, 5768, -134, 5768, 5768, -19, -134,
+ -134, -134, -134, 1664, -134, -49, 120, -26, -134, -50,
+ -134, -32, -60, -7, -33, -134, -54, -134, -31, 1352,
+ -134, -134, -53, 120, -24, -134, -46, -134, -25, 1664,
+ -47, 120, -18, -134, -40, -134, -134, 3014, 272, -134,
+ 8, -134, -134, 248, -134, 3014, 320, -4, -134, 28,
+ -134, 29, 319, 3014, -134, 33, 34, -134, -14, -134,
+ -134, -134, 232, -134, -134, 441, -134, 374, 36, -134,
+ 13, 19, -134, 1219, -134, -134, -2, 27, -134, -134,
+ 3014, 328, -134, -134, 3014, 217, -134, -134, -134, 3014,
+ -134, 120, 50, 62, -134, 55, -134, -134, 1345, -134,
+ -134, -134, 6808, -134, 2891, 609, 2891, 549, 2891, 2274,
+ 365, -134, 2891, 15, 2891, 89, 5118, 3014, 3260, -134,
+ -134, 317, -134, 58, -134, 3014, 2891, 90, 3137, -134,
+ 64, 2891, 98, 2891, 72, 3260, 76, -134, 3260, 84,
+ -134, 9, 88, 91, 6028, 92, -134, 6028, 93, -134,
+ -134, -134, 96, 1664, 1664, 102, 112, 105, -134, 104,
+ -134, 107, 119, 108, -134, 109, -134, 110, 1664, 1664,
+ 116, 123, -134, 118, -134, 124, 125, -134, 126, -134,
+ -134, 418, -134, -134, 298, 302, -134, -134, 6288, -134,
+ -134, -134, 3014, -134, -134, 327, 4127, 184, 160, -134,
+ 4496, -134, -134, 3137, -134, -134, -134, -134, -134, 154,
+ 294, -134, -134, 3752, -134, 159, -134, -134, -134, 483,
+ -134, -134, -134, -134, 403, 3137, -134, -134, 355, -134,
+ -134, -134, -134, -134, 3137, -134, 2891, -134, 197, 195,
+ -134, -134, -134, -134, 348, -134, 557, 1531, -134, -134,
+ -134, -134, 175, -134, 5638, 175, -134, -134, 172, -134,
+ -134, 3629, -134, 429, -134, -134, 1101, -134, -134, 979,
+ -134, -134, -134, 961, 1664, 165, 166, 157, -134, 163,
+ -134, 1664, 156, 155, -134, 153, -134, 150, 6028, 148,
+ -134, -134, 307, -112, -134, 5378, -134, -134, -134, 5118,
+ -134, -134, -134, 141, -134, 143, -134, -134, -134, 5508,
+ 20, -134, 303, -134, -134, 16, -134, -134, 315, -134,
+ 857, -134, 5248, -134, -134, -134, 803, -134, -134, -134,
+ 134, -134, 936, -134, -134, 135, 133, 203, 132, 216,
+ 211, 407, 127, 580, 128, -134, -134, 2520, -134, -134,
+ -134, -134, -134, -134, -134, 347, -134, -134, 115, 1664,
+ 114, 117, 106, -134, 99, -134, -134, -134, 196, 101,
+ 2768, -134, -134, -134, -134, 2644, -134, -134, 103, 1786,
+ -134, 95, -134, 414, 85, -134, -134, -134, 75, -134,
+ -134, 651, 390, -134, 251, 79, 713, -134, 235, -134,
+ -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
+ -134, 339, -134, -134, 4988, 277, -134, -134, -134, -134,
+ 60, 3014, -134, -134, -134, -134, -134, 6678, 80, 77,
+ -134, 300, 67, 364, 240, -134, 231, -134, -134, -134,
+ -134, 3014, -134, -134, -134, -134, 409, -134, 705, 205,
+ 51, 53, 218, 56, 47, -134, 54, 44, -134, 17,
+ -134, 41, 632, 349, 204, 607, 351, 43, 1786, 207,
+ -134, 1786, 193, -134, -134, 346, -134, 4988, 525, 42,
+ 188, -134, 353, -134, -134, -134, -134, 37, 832, 400,
+ 292, 713, 335, 57, -134, 4988, 531, 256, -8, 337,
+ -134, -134, -134, 363, -134, 875, 52, 48, 40, -11,
+ 832, 389, 31, 806, 38, 832, 410, 25, -134, 224,
+ -134, -134, -134, -134, -134, 1786, 4865, -134, 3878, 5,
+ 308, -134, -134, 2, -134, -134, 1786, 1040, 230, 2030,
+ -134, 396, -134, -134, -134, 439, -134, 250, -134, -134,
+ -134, -134, 2030, -134, -134, -134, -134, 713, 4, 379,
+ 208, -134, -30, -134, -134, 600, 186, -134, -134,
- -227, 229, 225, 224, 237, 781, -227, -227, -227, -227,
- -227, -227, -227, -227, -227, -227, -227, 97, -227, -227,
- -227, 67, -227, -227, -227, -227, -227, -227, -227, -227,
- -227, -227, 101, -227, -227, -227, -227, -227, -227, -227,
- 71, -227, -227, -227, 216, 559, -227, -227, -227, -227,
- 211, 209, -227, -227, 255, 177, 176, 567, 571, -227,
- 590, 776, -227, -227, -227, -227, -227, 603, 611, -227,
- -227, -227, -227, -227, -227, -227, -227, 353, -227, 622,
- -227, 545, 627, 348, -227, -227, -227, -227, 336, 363,
- -227, -227, -227, -227, -227, -227, 356, -227, -227, -227,
- -227, -227, -227, 335, -227, -227, 0, -227, 145, -227,
- -227, 201, -227, -227, -227, -227, -227, -227, -227, -227,
- -227, -227, -227, -227, -227, -227, -227, -227, 155, -227,
- -227, -227, -227, 70, -227, -227, -227, -227, -227, -227,
- 204, 203, 154, 214, -227, -227, 138, -227, 119, -227,
- -227, 98, 57, -227, -227, -227, 43, -227, -227, 278,
- 51, -227, -227, -227, -135, 8, -227, -104, -64, -91,
- -227, -227, 599, -227, 500, -227, -227, -227, -227, -227,
- 525, -227, -227, 529, -227, -227, -227, -227, 527, 522,
- 524, -227, -227, -227, -227, 499, -227, 469, -227, -227,
- -227, 45, -227, -227, 268, 53, -227, -227, -34, 157,
- -227, -227, -227, -227, 280, -227, -227, 61, -227, -227,
- -227, 265, 260, 5, 663, -227, 21, 41, -227, 470,
- -227, -227, -227, 156, 106, -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, -227, -227, -227, -227, -227, -227, 161,
- 128, -227, -227, -227, 133, -227, 78, -227, -227, -227,
- 76, 88, -227, 87, -227, -227, -227, -227, 752, -227,
- -227, 762, -227, -227, -227, -227, 55, -227, -227, 376,
- -227, -227, 105, -19, -43, -49, -227, -227, -227, 64,
- -227, -227, -227, -227, -227, -227, -227, -227, 73, -227,
- -227, -227, 434, -227, -227, 340, 65, 104, -227, -227,
- -227, -227, -227, -227, -227, -227, 466, -227, -227, 136,
- -227, 534, -227, -227, -227, -227, -227, 121, -227, -227,
- 125, -227, -227, -227, -227, -227, -227, -227, -227, -227,
- -227, -227, -227, 425, -227, 432, 103, -227, -227, 109,
- -227, 162, -227, -227, 166, -227, -227, -227, 132, -227,
- -227, 117, -227, 69, -227, -227, 659, -227, -227, -227,
- -87, 317, -227, -227, -227, 313, -227, 438, -227, 147,
- -227, -227, 144, -227, 207, -227, 12, -227, -227, -227,
- 200, -227, 447, 62, 455, -227, -227, 212, -227, -227,
- 74, -227, 60, -227, -227, -227, 299, 75, 17, -227,
- 44, -227, -227, 457, -227, -227, -227, 134, -227, 135,
- -227, 422, -227, 58, 49, -227, -227, -227, -227, -227,
- 419, 56, 48, -227, -227, 227, -227, 190, -227, 266,
- -227, -227, -227, -41, -227, -227, -227, 86, -227, 234,
- -227, -227, 399, -227, 238, -227, -227, -94, 294, -227,
- -227, -88, -227, -227, -227, -227, -227, 47, -227, 46,
- -227, -227, 490, -227, -100, -227, 316, 50, -227, -227,
- -227, 179, 226, -227, -227, 228, -227, 231, 241, -227,
- -227, -227, -227, -227, 222, -227, -227, 72, -172, -62,
- -75, -227, -227, -227, 68, -66, -65, -67, -227, -227,
- 347, -227, -227, -227, 63, -68, -71, -101, -227, -111,
- 349, -227, 38, -105, -117, -119, -227, -227, 9, -227,
- 273, -227, 288, -227, 54, -227, 7, -227, -227, -227,
- -227, -227, -110, -227, -1, -227, -115, -227, -227, -227,
- -227, -76, -227, -227, -53, -227, 77, -227, -227, -90,
- -227, -227, 59, -227, 304, -227, -227, -227, 52, -227,
- -227, 42, -227, 298, -227, 40, -227, 300, -227, -227,
- 16, -227, 39, 10, -227, -227, 99, -227, -227, 360,
- -227, -227, -227, 139, -227, 633, 80, 634, 79, 354,
- -227, 668, -227, 680, -227, 170, 110, 150, -227, -227,
- -227, -227, -227, -227, 685, -227, 686, 102, -227, -227,
- 334, -227, 163, -227, -227, 164, -227, -227, 81, -9,
- 83, 178, 85, -227, 165, 82, -227, -227, -227, -227,
- 292, 319, -227, 96, -33, -40, -39, -227, -227, 90,
- -54, -45, -47, -227, -51, 326, 329, -227, -52, -57,
- -61, -227, -227, -10, -23, -28, -227, -227, 89, -227,
- -227, -227, -227, -227, -227, 385, -227, -227, -227, 91,
- -227, -227, -227, 84, -227, 94, -227, 198, -227, -227,
- 397, -227, -227, -227, -227, -227, -227, -227, -227, -227,
- 325, -227, -227, -227, -227, -227, 93, -227, -227, -227,
- -227, -227, 402, -227, -227, 66, -227, -227, -227, -227,
- -227, 400, -227, 391, -227, 1, -13, -227, -227, -227,
- -227, 281, -227, 277, 338, -227, -227, -227, -227, -227,
- -227, 195, -155, -227, -227, -153, -227, -227, -8, -227,
- 492, -227, -227, 186, -227, -227, 321, -227, -227, -227,
- 310, 296, -227, -24, -156, -154, -157, -227, 289, -227,
- -162, -160, -159, -227, -161, 174, -158, -227, -227, -227,
- -227, -227, 263, -227, -227, -227, 167, -227, -227, -227,
- -170, -227, -227, -227, -227, -227, 302, -227, -227, 100,
- -227, -227, -227, -227, -227, -227, -227, 308, -227, 352,
- -227, -227, -227, 282, -227, -227, -227, 275, -227, 247,
- -227, -227, 342, -227, 153, 245, -227, 526, -26, -227,
- -227, -227, -227, -227, -227, -227, -227, -227, -227, -227,
- 344, -227, -35, -180, -182, -177, -227, -20, -227, -227,
- -227, -227, -227, -227, -227, 33, -227, -227, -227, 4,
- -227, -227, -227, -227, -227, -227, -227, -227, -227, -227,
- -227, -227, -227, 26, -227, 14, 973, 22, -227, -227,
- -227, -227, -4, -5, -227, -227, -227, 173, -227, 6,
- -227, -227, -227, -227, -227, -22, -227, -227, -227, -227,
- -227, -60, -227, -227, -227, -227, -227, -227, -227, -227,
- -227, -227, -227, -227, -227, -227, -227, -227, 28, 24,
- -227, 25, -227, -227, 669, -227, -227, -227, 679, 11,
- -227, -227, 817, -227, -227, -227, 782, -227, -227, 37,
- 32, 827, -11, 23, 36, -227, -30, -227, -227, -227,
- -227, -227, 2, -16, -227, -14, -227, -227, -25, 803,
- -55, -18, -227, -6, -15, -12, -227, 267, -227, -227,
- -227, -227, 29, 27, -227, 210, -227, 35, 34, -227,
- -227, 20, -227, -227, 196, 690, 853, -227, 725, 18,
- -227, -227, -227, 15, -227, -227, 395, 19, 220, 591,
- -227, 13, -227, -227, -227, 3, -227, 197, -227, -227,
- -227, -227, -227, -227, 30, -227, 31, -7, -227, -227,
- -227, -227, -2, -3, -227, -227
+ -238, 221, 177, 179, 208, 796, -238, -238, -238, -238,
+ -238, -238, -238, -238, -238, -238, -238, -53, -238, -238,
+ -238, -238, -96, -238, -238, -238, -238, -238, -238, -238,
+ -238, -238, -238, -44, -238, -238, -238, -238, -238, -238,
+ -238, -89, -238, -238, -238, 160, -238, 691, -238, -238,
+ -238, -238, 166, 168, -238, -238, 292, 150, 159, 644,
+ 635, -238, 632, 576, -238, -238, -238, -238, -238, 565,
+ 554, -238, -238, -238, -238, -238, -238, -238, -238, 520,
+ -238, 533, -238, 593, 675, 492, -238, -238, -238, -238,
+ -238, 512, 498, -238, -238, -238, -238, -238, -238, 472,
+ -238, -238, -238, -238, -238, -238, 462, -238, -238, -152,
+ -238, -11, -238, -238, 215, -238, -238, -238, -238, -238,
+ -238, -238, -238, -238, -238, -238, -238, -238, -238, -238,
+ -238, -238, 34, -238, -238, -238, -238, -88, -238, -238,
+ -238, -238, -238, -238, 234, 240, 40, 255, -238, -238,
+ 211, -238, -16, -238, -238, -7, 41, -238, -238, -238,
+ 6, -238, -238, -238, 351, 72, -238, -238, -238, -114,
+ 19, -238, -95, -72, -69, -238, -238, 415, -238, 529,
+ -238, -238, -238, -238, -238, 524, 735, -238, -238, 460,
+ -238, -238, -238, -238, 404, 391, 375, -238, -238, -238,
+ 63, -238, 481, -238, -238, -238, 258, 62, -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, 64, -238, -238, 250, 66, -238, -238, -238, 69,
+ -238, 67, -238, -238, -238, 68, 70, -238, 71, -238,
+ -238, -238, -238, 788, -238, -238, 799, -238, -238, -238,
+ 373, -238, 541, -238, 76, 354, -238, 77, -238, -238,
+ 361, -238, 362, -238, -238, -238, -238, 261, 101, -238,
+ -238, 106, 201, -238, -238, -238, -238, 313, -238, -238,
+ 74, -238, -238, -238, 307, 304, 84, 806, -238, 83,
+ -238, -238, -238, 90, -238, -238, 461, -238, -238, 119,
+ -9, -8, -14, -238, -238, -238, 92, -238, -238, -238,
+ -238, -238, -238, -238, -238, 108, -238, -238, -238, 505,
+ -238, -238, 300, 95, 96, -238, -238, -238, -238, -238,
+ -238, -238, -238, 448, -238, -238, 136, -238, 653, -238,
+ -238, -238, -238, -238, 118, -238, -238, 123, -238, -238,
+ -238, -238, -238, -238, -238, -238, -238, -238, -238, -238,
+ 183, -238, -238, 184, -238, -238, -238, 143, -238, -238,
+ 131, -238, 187, -238, -238, 652, -238, -238, -238, 20,
+ 337, -238, -238, -238, 283, -238, 348, -238, 140, -238,
+ -238, 141, -238, 214, -238, 122, -238, -238, -238, 205,
+ -238, 494, 117, 504, -238, -238, 219, -238, -238, 120,
+ -238, 91, -238, -238, -238, 302, 116, 89, -238, 85,
+ -238, -238, 456, -238, -238, -238, 171, -238, 172, -238,
+ 239, -238, 103, 82, -238, -238, -238, -238, -238, 367,
+ 100, 82, -238, -238, 175, -238, 188, -238, 260, -238,
+ -238, -238, 7, -238, -238, -238, 135, -238, 226, -238,
+ -238, 359, -238, 248, -238, -238, -57, 296, -238, -238,
+ -52, -238, -238, -238, -238, -238, 75, -238, 50, -238,
+ -238, 407, -238, -66, -238, 262, 81, -238, -238, -238,
+ 257, 246, -238, -238, 244, -238, 242, 233, -238, -238,
+ -238, -238, -238, 237, -238, -238, 59, -68, -70, -74,
+ -238, -238, -238, 58, -73, -75, -79, -238, -238, 267,
+ -238, -238, -238, 55, -80, -82, -85, -238, -93, 329,
+ -238, 47, -91, -97, -99, -238, -238, 31, -238, 206,
+ -238, 272, -238, 79, -238, 18, -238, -238, -238, -238,
+ -238, -103, -238, 17, -238, -101, -238, -238, -238, -238,
+ -76, -238, -238, -77, -238, 65, -238, -238, -115, -238,
+ -238, 42, -238, 339, -238, -238, -238, 38, -238, -238,
+ -1, -238, 270, -238, -5, -238, 266, -238, -238, -13,
+ -238, 5, -22, -238, -238, -33, -238, -238, 381, -238,
+ -238, -238, 1, -238, 612, -64, 621, -62, 459, 983,
+ -238, -238, 648, -238, 682, -238, 186, -30, 164, -238,
+ -238, -238, -238, -238, -238, -37, 664, -238, 323, -238,
+ -238, 563, -238, 590, -238, 153, -238, -238, 152, -238,
+ -238, -174, -176, -178, 162, -184, -238, 158, -187, -238,
+ -238, -238, -238, 290, 288, -238, -40, -175, -177, -179,
+ -238, -238, -45, -180, -183, -186, -238, -194, 286, 279,
+ -238, -190, -200, -202, -238, -238, -193, -203, -205, -238,
+ -238, -86, -238, -238, -238, -238, -238, -238, 353, -238,
+ -238, -238, -71, -238, -238, -238, -67, -238, -63, -238,
+ 142, -238, -238, 389, -238, -238, -238, -238, -238, -238,
+ -238, -238, -238, 253, -238, -238, -238, -238, -238, -38,
+ -238, -238, -238, -238, -238, 454, -238, -238, -55, -238,
+ -238, -238, -238, -238, 398, -238, 399, -238, 37, 39,
+ -238, -238, -238, -238, 331, -238, 319, 327, -238, -238,
+ -238, -238, -238, -238, 216, -155, -238, -238, -153, -238,
+ -238, -4, -238, 458, -238, -238, 222, -238, -238, 356,
+ -238, -238, -238, 349, 345, -238, 26, -104, -102, -105,
+ -238, 341, -238, -98, -106, -100, -238, -110, 220, -109,
+ -238, -238, -238, -238, -238, 309, -238, -238, -238, 228,
+ -238, -238, -238, -107, -238, -238, -238, -238, -238, 320,
+ -238, -238, 60, -238, -238, -238, -238, -238, -238, -238,
+ 265, -238, 363, -238, -238, -238, 294, -238, -238, -238,
+ 254, -238, 252, -238, -238, -238, -238, 343, -238, 212,
+ 209, 114, 400, 109, -238, -238, -238, 857, -238, -238,
+ -238, -238, -238, -238, -238, -238, -238, -238, -238, 298,
+ -238, 107, -24, -23, -25, -238, -238, -238, 151, -238,
+ 853, -238, -238, -238, -238, 820, -238, -238, -238, 686,
+ -238, -238, -238, 154, 147, -238, -238, -238, -238, -238,
+ -238, 185, 163, -238, -238, -238, 173, -238, 170, -238,
+ -238, -238, -238, -238, -238, -238, -238, -238, -238, -238,
+ -238, -238, -238, 139, 770, 149, -238, -238, -238, -238,
+ 130, 127, -238, -238, -238, 224, -238, 102, -238, -238,
+ -238, -238, -238, 78, 138, -238, 360, -238, -238, -238,
+ -238, 73, -238, -238, -238, -238, -238, -238, 121, -238,
+ -238, -238, -238, -238, -238, -238, -238, -238, -238, -238,
+ -238, -238, 113, 88, -238, 112, 115, -238, 729, -238,
+ -238, 640, 111, -238, -238, -238, 80, 922, 43, 86,
+ 87, -238, 53, -238, -238, -238, -238, -238, 61, 33,
+ -238, 51, 54, -238, 30, 896, -10, 45, 12, -238,
+ -238, -238, -238, 35, -238, 232, -238, -238, -238, -238,
+ 28, 4, -238, 207, -238, 24, -3, -238, -238, 23,
+ -238, -238, -238, -238, 204, 657, 881, -238, 762, 15,
+ -238, -238, -238, 13, -238, -238, 530, 22, 223, 804,
+ -238, 16, -238, -238, -238, -41, -238, 14, -238, -238,
+ -238, -238, 745, -238, -238, -238, -238, 3, -238, 0,
+ -6, -238, -238, -238, -238, -12, 137, -238, -238
};
const short QmlJSGrammar::action_info [] = {
- 650, 917, 939, 644, 107, 654, 793, 224, 657, 962,
- 506, 107, 508, 521, 937, 171, 633, 777, -178, 306,
- 995, 1050, 1049, 991, 976, 489, -176, 936, 670, 962,
- 729, 625, 877, 775, 890, 931, 643, 983, 733, 775,
- 888, 631, 489, 688, 107, 1011, 508, 1005, -92, 693,
- 107, 496, 837, 1008, 988, 521, 1003, 954, 870, 224,
- 496, 107, 843, 962, 829, 171, 942, 945, 872, 962,
- 885, 800, 943, 775, 944, 671, 673, 224, 107, 107,
- 521, 171, 946, 224, 888, 107, 816, 347, 306, 436,
- 496, 949, 224, 679, 171, 201, 390, 407, 391, 224,
- 379, 373, 414, 347, 355, 412, 465, 195, 349, 502,
- 335, 447, 224, 224, 306, 348, 107, 409, 341, 306,
- 496, 506, 467, -546, 306, 489, 491, 469, 443, 475,
- 334, 443, 224, 443, 443, 566, 451, 373, 449, 195,
- 172, 558, 107, 473, 753, 197, 644, 396, 171, 601,
- 407, 625, 1055, -544, 332, 306, 312, 291, 107, 297,
- 633, 164, -115, -505, 631, 224, 298, 347, 306, 309,
- 171, 306, 306, 224, 214, 102, 172, 171, 605, 211,
- 295, 107, -110, 562, 580, 581, 574, 224, 171, 574,
- 574, 570, 534, 224, 527, 224, 107, 533, 107, 224,
- 496, 224, 197, 619, 107, 489, 540, 508, 839, 592,
- 552, 524, 201, 473, 594, 958, 473, 201, 940, 812,
- 171, 826, 171, 204, 0, 958, -180, 888, 375, 201,
- 591, 417, 376, 544, 598, 888, 0, 951, 88, -548,
- 521, 888, 646, 279, 592, 889, 647, 584, 201, 201,
- 89, 985, 827, 460, 202, 200, 0, 840, 577, 202,
- 200, 202, 200, 280, 201, 1021, 560, 941, 813, 202,
- 200, 393, 88, 925, 201, 959, 202, 200, 301, 278,
- 709, 202, 200, 201, 89, 202, 200, 88, 202, 200,
- 202, 200, 202, 200, 94, 302, 202, 200, 705, 89,
- 202, 200, 730, 568, 201, 578, 95, 202, 200, 201,
- 524, -115, 725, 418, 641, 88, 1026, 1027, 202, 200,
- 202, 200, 926, 202, 200, 202, 200, 89, 420, 715,
- 201, 188, -180, 189, 1026, 1027, 953, 427, 886, -180,
- 905, 886, 763, 927, 190, 981, 886, 706, 407, 306,
- 764, 720, 928, 1014, 202, 200, 731, 997, 603, 970,
- 886, 947, -223, 607, 929, 886, 407, 0, 188, -180,
- 189, 443, -549, -224, 881, 201, 201, 0, 279, 716,
- 962, 190, 306, 202, 200, 202, 200, 883, 233, 97,
- 883, 886, 202, 200, 883, 883, 202, 200, 280, 882,
- 655, 0, 882, 97, 1052, 0, 882, 882, 234, 883,
- 883, 188, 97, 189, 883, 202, 200, -223, 485, 211,
- 0, 882, 882, 883, 190, 283, 882, 0, -224, 202,
- 200, 202, 200, -388, 0, 882, 98, 0, -388, 0,
- 883, 188, 99, 189, 188, 0, 189, 0, 742, 743,
- 98, 233, 882, 0, 190, 1045, 99, 190, 0, 98,
- 395, 175, 176, 175, 176, 99, 742, 743, 202, 200,
- 0, 234, 0, 1015, 0, 763, 175, 176, 0, 62,
- 77, 175, 176, 764, 0, -388, 181, 182, 0, 177,
- 178, 177, 178, 233, 0, 184, 790, 953, 185, 233,
- 186, 485, 211, 635, 177, 178, 233, 0, 0, 177,
- 178, 0, 0, 234, 0, 286, 0, 0, 1044, 234,
- 0, 652, 0, 636, 0, 637, 234, 0, 286, 6,
- 5, 4, 1, 3, 2, 0, 181, 182, 0, 233,
- 0, 0, 62, 77, 183, 184, 0, 0, 185, 0,
- 186, 233, 0, 202, 200, 0, 0, 0, -86, 234,
- 0, 652, 0, 0, 0, 0, 0, 403, 404, 0,
- -86, 234, 0, 652, 181, 182, 894, 0, 0, 484,
- 770, 0, 183, 184, 62, 77, 185, 0, 186, 0,
- 62, 77, 485, 211, 62, 77, 0, 62, 77, 0,
- 0, 0, 0, 0, 771, 894, 0, 0, 0, 0,
- 0, 0, 894, 0, 0, 0, 897, 901, 898, 0,
- 181, 182, 0, 0, 0, 0, 0, 0, 0, 184,
- 62, 77, 185, 0, 186, 772, 0, 0, 0, 0,
- 0, 0, 62, 77, 0, 897, 901, 898, 888, 153,
- 892, 899, 897, 901, 898, 0, 0, 0, 403, 404,
- 895, 893, 900, 894, 0, 0, 0, 0, 0, 0,
- 484, 0, 0, 896, 0, 0, 0, 0, 0, 892,
- 899, 0, 0, 0, 888, 0, 892, 899, 0, 895,
- 893, 900, 0, 0, 0, 0, 895, 893, 900, 894,
- 0, 0, 896, 897, 901, 898, 0, 0, 888, 896,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 894, 0, 0, 894, 0, 0, 0,
- 53, 0, 0, 0, 0, 0, 0, 892, 899, 897,
- 901, 898, 0, 0, 0, 0, 0, 895, 893, 900,
- 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 896, 0, 0, 897, 901, 898, 897, 901, 898, 0,
- 69, 73, 70, 892, 899, 0, 0, 53, 0, 0,
- 0, 0, 0, 895, 893, 900, 0, 0, 0, 0,
- 69, 73, 70, 0, 0, 0, 896, 892, 899, 0,
- 892, 899, 74, 53, 49, 71, 0, 895, 893, 900,
- 895, 893, 900, 43, 65, 52, 72, 69, 73, 70,
- 896, 0, 74, 896, 49, 71, 888, 66, 0, 0,
- 0, 0, 0, 43, 65, 52, 72, 0, 0, 0,
- 0, 894, 0, 69, 73, 70, 0, 66, 0, 74,
- 0, 49, 71, 0, 0, 0, 0, 0, 0, 0,
- 43, 65, 52, 72, 0, 53, 0, 0, 0, 0,
- 53, 0, 0, 0, 66, 74, 0, 49, 71, 0,
- 0, 897, 901, 898, 0, 0, 43, 65, 52, 72,
- 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
- 66, 0, 0, 0, 0, 69, 73, 70, 0, 0,
- 69, 73, 70, 0, 0, 892, 899, 0, 0, 0,
- 0, 0, 0, 0, 0, 895, 893, 900, 0, 0,
- 0, 69, 73, 70, 0, 0, 0, 74, 896, 49,
- 71, 999, 74, 0, 49, 71, 0, 0, 43, 65,
- 52, 72, 0, 43, 65, 52, 72, 0, 0, 0,
- 0, 0, 66, 74, 0, 49, 71, 66, 0, 0,
- 0, 53, 0, 0, 43, 65, 52, 72, 489, 0,
- 0, 897, 901, 898, 0, 0, 0, 0, 66, 53,
- 883, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 882, 0, 0, 0, 0, 0, 0, 0,
- 0, 69, 73, 70, 0, 892, 899, 0, 0, 0,
- 0, 0, 0, 0, 0, 895, 893, 900, 0, 69,
- 73, 70, 0, 0, 0, 0, 0, 53, 896, 0,
- 0, 999, 0, 74, 791, 49, 71, 0, 0, 0,
- 0, 0, 0, 0, 43, 65, 52, 72, 0, 0,
- 506, 74, 0, 49, 71, 0, 0, 0, 66, 0,
- 0, 0, 43, 65, 52, 72, 0, 69, 73, 70,
- 0, 897, 901, 898, 0, 0, 66, 0, 53, 0,
- 883, 0, 0, 0, 0, 670, 0, 0, 0, 0,
- 0, 0, 882, 53, 0, 0, 0, 0, 0, 74,
- 489, 49, 71, 0, 0, 892, 899, 0, 0, 0,
- 43, 65, 52, 72, 53, 895, 893, 900, 69, 73,
- 70, 0, 0, 0, 66, 0, 0, 0, 896, 0,
- 0, 53, 0, 69, 73, 70, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 202, 200, 0,
- 74, 0, 49, 71, 69, 73, 70, 0, 0, 0,
- 0, 43, 65, 52, 72, 74, 0, 49, 71, 0,
- 0, 69, 73, 70, 0, 66, 43, 65, 52, 72,
- 0, 0, 0, 0, 0, 0, 74, 0, 49, 71,
- 66, 0, 53, 0, 0, 0, 0, 43, 65, 52,
- 72, 0, 506, 74, 0, 49, 71, 0, 0, 0,
- 0, 66, 0, 0, 43, 65, 52, 72, 0, 0,
- 0, 0, 0, 0, 0, 202, 200, 0, 66, 0,
- 0, 53, 69, 73, 70, 222, 223, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 53, 0, 0, 0, 826,
- 0, 0, 0, 0, 74, 0, 49, 71, 0, 0,
- 0, 69, 73, 70, 0, 43, 65, 52, 72, 53,
- 0, 0, 0, 222, 223, 0, 0, 0, 0, 66,
- 827, 0, 0, 0, 777, 69, 73, 70, 0, 0,
- 0, 0, 0, 74, 0, 49, 71, 53, 0, 0,
- 0, 222, 223, 0, 43, 65, 52, 72, 0, 69,
- 73, 70, 0, 0, 0, 0, 0, 74, 66, 49,
- 71, 53, 0, 0, 0, 222, 223, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 221, 69, 73, 70,
- 0, 74, 66, 49, 71, 0, 0, 0, 0, 0,
- 0, 0, 43, 65, 52, 72, 0, 0, 0, 0,
- 0, 69, 73, 70, 221, 0, 66, 0, 0, 74,
- 0, 49, 71, 0, 0, 0, 0, 0, 0, 0,
- 43, 65, 52, 72, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 74, 66, 49, 71, 0, 0, 0,
- 0, 0, 0, 0, 43, 65, 52, 72, 53, 0,
- 0, 0, 222, 223, 0, 0, 0, 0, 66, 0,
- 0, 358, 0, 53, 0, 0, 0, 222, 223, 0,
- 0, 359, 0, 0, 0, 360, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 361, 0, 362, 69, 73,
- 70, 0, 0, 0, 0, 0, 0, 0, 363, 0,
- 364, 94, 0, 69, 73, 70, 0, 0, 0, 365,
- 0, 0, 366, 95, 0, 221, 0, 0, 367, 0,
- 74, 0, 49, 71, 0, 369, 368, 0, 0, 0,
- 221, 43, 65, 52, 72, 74, 0, 49, 71, 0,
- 0, 0, 370, 358, 0, 66, 43, 65, 52, 72,
- 0, 0, 0, 359, 0, 0, 0, 424, 0, 0,
- 66, 0, 0, 0, 0, 0, 0, 361, 0, 362,
- 0, 0, 0, 53, 0, 0, 0, 222, 223, 0,
- 363, 0, 364, 94, 0, 0, 0, 0, 53, 0,
- 0, 365, 222, 223, 366, 95, 0, 0, 0, 0,
- 367, 0, 0, 0, 0, 0, 0, 369, 368, 0,
- 0, 0, 0, 69, 73, 70, 0, 0, 0, 0,
- 0, 0, 0, 0, 370, 0, 0, 0, 69, 73,
- 70, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 221, 0, 0, 0, 0, 74, 0, 49, 71, 0,
- 0, 0, 0, 0, 0, 221, 43, 65, 52, 72,
- 74, 0, 49, 71, 0, 0, 0, 0, 0, 0,
- 66, 43, 65, 52, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 66, 0, 0, 53, 0,
- 0, 0, 222, 223, 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, 69, 73,
- 70, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 221, 0, 0, 0, 0,
- 74, 0, 49, 71, 0, 0, 0, 0, 0, 0,
- 0, 43, 65, 52, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 66, 0, 0, 358, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 359, 0,
- 0, 0, 424, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 361, 0, 362, 0, 0, 417, 0, 0,
- 0, 0, 0, 0, 0, 363, 0, 364, 94, 0,
- 0, 0, 0, 0, 0, 0, 365, 0, 0, 366,
- 95, 0, 0, 0, 0, 367, 0, 0, 0, 0,
- 0, 0, 369, 368, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 370,
+ 317, 110, 543, 176, 829, 542, 549, 176, 110, 553,
+ 110, 176, 498, 536, -569, 561, 110, 505, -126, 1092,
+ 1093, 1098, 105, 634, 571, 533, 642, 644, -530, -132,
+ 579, 416, 663, 583, 583, 530, 900, 661, 583, 900,
+ 925, 590, 515, 589, 517, 1046, 925, 511, 1043, 323,
+ 603, 1049, 323, 482, 505, -107, 601, 500, 110, 1041,
+ 607, 482, 976, 498, 1024, 990, 766, 323, 484, 478,
+ 628, 987, 323, 989, 971, 1019, 900, 986, 998, 993,
+ 452, 476, 452, 983, -193, 981, 169, -195, 177, 282,
+ 634, 469, 988, 110, 955, 280, 292, 658, 644, 452,
+ 663, 290, 176, 405, 482, 567, 575, 482, 610, 927,
+ 909, 614, 515, 922, 452, 110, 661, 452, 317, 317,
+ 654, 642, 517, 460, 317, 517, 317, 317, 317, 900,
+ 323, 902, 850, 684, -571, 0, 856, 266, 667, 110,
+ 110, 458, 110, 176, 251, 177, 670, 498, 0, 530,
+ 530, 842, 889, 287, 292, 976, 176, 110, 1033, 110,
+ 273, 176, 980, 908, 686, 896, 176, 272, 364, 692,
+ 416, 0, 304, 317, 317, 505, 891, 326, 701, 364,
+ 0, 0, 364, 505, 517, 323, 706, 317, 0, 110,
+ 323, 110, 423, 270, 290, 307, 280, 1012, 400, 372,
+ 366, 421, 323, 474, 323, 530, 323, 349, 456, 352,
+ 505, 899, 110, -197, 418, 1001, 742, 0, 813, 925,
+ 176, 746, 282, 251, 254, 251, 984, 806, 251, 995,
+ 900, 91, 329, 426, 365, 358, 176, 0, 351, 593,
+ 251, 790, 738, 92, 255, 399, 251, 788, 498, 296,
+ 295, 296, 295, 683, 445, 91, 296, 295, 296, 295,
+ 296, 295, 91, 296, 295, 1002, 925, 92, 296, 295,
+ 97, 296, 295, 913, 92, 985, 926, 436, 252, 616,
+ 251, 788, 98, 733, 251, 296, 295, 296, 295, 296,
+ 295, 296, 295, 91, 296, 295, 1066, 1067, 296, 295,
+ 429, 251, 743, 296, 295, 92, 718, 925, 963, 722,
+ 914, 296, 295, 296, 295, 825, 1001, 1021, 427, 296,
+ 295, 655, -197, 852, 284, 251, 276, 44, 251, 586,
+ 296, 295, 44, 297, 569, 728, 251, 839, 402, 533,
+ 296, 295, 997, 277, 1066, 1067, 943, 194, -573, 195,
+ 251, 258, -241, 1006, 1054, 719, 744, 964, 997, -574,
+ 196, 323, 656, 416, 826, 285, 1061, 923, 840, -240,
+ 100, 194, 853, 195, 0, 652, 587, 0, 452, 923,
+ 600, 900, 577, 1017, 196, 729, 296, 295, 0, 0,
+ 612, 194, 0, 195, 601, 194, -413, 195, 296, 295,
+ 1035, -413, 296, 295, 196, 296, 295, -241, 196, 296,
+ 295, 416, 965, 0, 296, 295, 920, 101, 404, 923,
+ 923, 966, -132, 102, -240, -197, 296, 295, 920, 919,
+ 923, 100, 920, 967, 194, 323, 195, 991, 100, 923,
+ 923, 919, 296, 295, 918, 919, 1088, 196, -413, 251,
+ 206, 494, 304, 776, 206, -197, 494, 304, 0, 296,
+ 295, 0, 777, 0, 776, 0, 755, 756, 920, 920,
+ 207, 0, 0, 777, 207, 0, 0, 1055, 101, 920,
+ 0, 919, 919, 0, 102, 101, 920, 0, 920, 920,
+ 0, 102, 919, 920, 0, 1095, 180, 181, 206, 919,
+ 0, 919, 919, 0, 296, 295, 919, 206, 254, 180,
+ 181, 0, 1087, 646, 755, 756, 0, 0, 207, 206,
+ 261, 0, 412, 413, 182, 183, 0, 207, 255, 261,
+ 668, 803, 0, 647, 0, 648, 493, 182, 183, 207,
+ 206, 665, 0, 0, 64, 79, 206, 0, 64, 79,
+ 0, 6, 5, 4, 1, 3, 2, 0, 0, -100,
+ 207, 0, 665, 0, 0, -100, 207, 783, 665, 187,
+ 188, 0, 0, 187, 188, 0, 0, 0, 190, 494,
+ 304, 191, 190, 192, 0, 191, 0, 192, 0, 0,
+ 1028, 784, 64, 79, 0, 0, 0, 187, 188, 0,
+ 0, 64, 79, 0, 0, 189, 190, 64, 79, 191,
+ 932, 192, 0, 64, 79, 0, 0, 187, 188, 0,
+ 0, 0, 785, 0, 0, 189, 190, 180, 181, 191,
+ 932, 192, 0, 0, 64, 79, 157, 932, 0, 0,
+ 64, 79, 0, 0, 0, 412, 413, 925, 0, 0,
+ 1029, 939, 936, 0, 0, 182, 183, 0, 0, 493,
+ 0, 639, 932, 0, 0, 639, 925, 0, 0, 0,
+ 935, 939, 936, 0, 0, 0, 0, 935, 939, 936,
+ 0, 932, 0, 0, 0, 0, 930, 937, 929, 186,
+ 0, 0, 0, 0, 0, 0, 0, 933, 931, 938,
+ 0, 0, 935, 939, 936, 0, 930, 937, 929, 186,
+ 0, 0, 0, 930, 937, 929, 0, 933, 931, 938,
+ 925, 935, 939, 936, 933, 931, 938, 0, 0, 0,
+ 934, 0, 0, 0, 0, 932, 0, 934, 930, 937,
+ 929, 0, 0, 932, 0, 0, 0, 0, 0, 933,
+ 931, 938, 0, 0, 0, 0, 0, 930, 937, 929,
+ 0, 0, 934, 55, 0, 0, 0, 0, 933, 931,
+ 938, 0, 0, 0, 0, 935, 939, 936, 0, 0,
+ 0, 934, 0, 935, 939, 936, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 71, 75, 72, 0, 0, 0, 0,
+ 0, 930, 937, 929, 0, 0, 0, 0, 0, 930,
+ 937, 929, 933, 931, 938, 0, 0, 0, 0, 0,
+ 933, 931, 938, 55, 0, 934, 1037, 76, 0, 51,
+ 73, 46, 0, 934, 0, 0, 0, 925, 0, 44,
+ 67, 54, 74, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 932, 68, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 71, 75, 72, 935, 939, 936, 0,
+ 0, 0, 0, 0, 0, 920, 0, 55, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 919, 0,
+ 0, 0, 935, 939, 936, 1037, 0, 76, 0, 51,
+ 73, 46, 930, 937, 929, 0, 0, 0, 0, 44,
+ 67, 54, 74, 933, 931, 938, 0, 71, 75, 72,
+ 0, 0, 0, 68, 0, 0, 934, 55, 930, 937,
+ 929, 0, 0, 0, 0, 935, 939, 936, 0, 933,
+ 931, 938, 0, 0, 920, 0, 0, 0, 0, 0,
+ 0, 76, 934, 51, 73, 46, 55, 919, 0, 0,
+ 0, 0, 0, 44, 67, 54, 74, 71, 75, 72,
+ 0, 930, 937, 929, 0, 0, 0, 68, 0, 0,
+ 0, 55, 933, 931, 938, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 934, 71, 75, 72, 55,
+ 0, 76, 0, 51, 73, 46, 498, 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, 0, 0, 0, 71,
+ 75, 72, 44, 67, 54, 74, 0, 0, 0, 0,
+ 0, 0, 0, 0, 515, 76, 68, 51, 73, 46,
+ 55, 0, 0, 0, 0, 55, 0, 44, 67, 54,
+ 74, 0, 683, 76, 0, 51, 73, 46, 0, 0,
+ 0, 68, 0, 0, 0, 44, 67, 54, 74, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 71, 75, 72, 0, 0, 71, 75, 72, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 418,
+ 0, 55, 0, 0, 0, 0, 0, 0, 804, 0,
+ 0, 0, 0, 0, 76, 0, 51, 73, 46, 76,
+ 0, 51, 73, 46, 0, 0, 44, 67, 54, 74,
+ 0, 44, 67, 54, 74, 0, 0, 0, 0, 0,
+ 68, 71, 75, 72, 55, 68, 0, 0, 0, 0,
+ 0, 498, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 55, 0, 0, 0, 315, 316, 55,
+ 0, 0, 0, 315, 316, 76, 0, 51, 73, 46,
+ 0, 0, 0, 0, 71, 75, 72, 44, 67, 54,
+ 74, 0, 0, 0, 55, 0, 0, 0, 315, 316,
+ 0, 68, 0, 71, 75, 72, 0, 0, 0, 71,
+ 75, 72, 0, 0, 0, 0, 0, 0, 76, 55,
+ 51, 73, 46, 315, 316, 0, 0, 0, 0, 0,
+ 44, 67, 54, 74, 71, 75, 72, 76, 0, 51,
+ 73, 46, 0, 76, 68, 51, 73, 46, 55, 44,
+ 67, 54, 74, 0, 0, 44, 67, 54, 74, 71,
+ 75, 72, 0, 68, 0, 0, 0, 0, 76, 68,
+ 51, 73, 46, 0, 0, 0, 0, 0, 0, 0,
+ 44, 67, 54, 74, 0, 0, 0, 0, 71, 75,
+ 72, 0, 0, 76, 68, 51, 73, 46, 0, 0,
+ 0, 0, 0, 375, 0, 44, 67, 54, 74, 0,
+ 0, 0, 0, 376, 0, 0, 0, 377, 0, 68,
+ 0, 515, 76, 0, 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, 0, 46, 47, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 50, 0, 0, 0,
- 0, 0, 0, 53, 0, 0, 0, 54, 55, 0,
- 56, 0, 0, 0, 0, 0, 0, 229, 0, 0,
- 0, 64, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 0, 76, 0, 51, 73,
+ 46, 0, 0, 0, 0, 0, 0, 0, 44, 67,
+ 54, 74, 0, 0, 0, 0, 71, 75, 72, 0,
+ 375, 0, 68, 0, 0, 0, 0, 0, 0, 0,
+ 376, 0, 0, 0, 433, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 378, 0, 379, 0, 0, 0,
+ 76, 55, 51, 73, 46, 839, 0, 380, 0, 381,
+ 97, 0, 44, 67, 54, 74, 0, 0, 382, 0,
+ 0, 383, 98, 0, 0, 0, 68, 384, 0, 0,
+ 55, 0, 0, 0, 386, 385, 840, 0, 0, 0,
+ 790, 71, 75, 72, 0, 0, 0, 0, 0, 0,
+ 0, 387, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 296, 295, 0, 0, 0, 0, 0,
+ 71, 75, 72, 0, 0, 76, 0, 51, 73, 46,
+ 0, 0, 0, 0, 0, 375, 0, 44, 67, 54,
+ 74, 0, 0, 0, 0, 376, 0, 0, 0, 433,
+ 0, 68, 0, 0, 76, 0, 51, 73, 46, 378,
+ 0, 379, 0, 0, 426, 0, 44, 67, 54, 74,
+ 0, 0, 380, 0, 381, 97, 0, 0, 0, 0,
+ 68, 0, 0, 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, 0, 0, 0,
+ 0, 0, 0, 0, 71, 75, 72, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 75, 69, 73, 70, 0, 78, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 63, 80,
- 48, 0, 0, 0, 0, 59, 0, 0, 0, 0,
- 0, 0, 76, 44, 0, 74, 0, 49, 71, 62,
- 77, 0, 0, 0, 0, 0, 43, 65, 52, 72,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 427,
+ 0, 0, 0, 314, 0, 0, 0, 0, 76, 0,
+ 51, 73, 46, 0, 0, 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,
- 66, 0, 0, 46, 47, 0, 0, 0, 0, 0,
- 0, 0, 0, 51, 50, 0, 0, 0, 0, 0,
- 0, 53, 0, 0, 0, 54, 55, 0, 56, 0,
- 0, 0, 0, 0, 0, 60, 0, 0, 0, 64,
+ 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,
- 75, 69, 73, 70, 0, 78, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 63, 80, 48, 0,
- 0, 0, 0, 59, 0, 0, 0, 0, 0, 0,
- 76, 44, 0, 74, 0, 49, 71, 62, 77, 0,
- 0, 0, 0, 0, 43, 65, 52, 72, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
- 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 51, 50, 0, 0, 0, 0, 0, 0, 53,
- 0, 0, 0, 54, 55, 0, 56, 0, 0, 0,
- 0, 0, 0, 229, 0, 0, 0, 64, 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 75, 69,
- 73, 70, 0, 78, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 80, 48, 0, 0, 0,
- 230, 59, 0, 0, 0, 0, 0, 0, 76, 44,
- 0, 74, 0, 49, 71, 62, 77, 0, 0, 0,
- 0, 0, 43, 65, 52, 72, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 0, 0, 46,
- 47, 0, 285, 0, 0, 0, 0, 0, 0, 51,
- 50, 0, 0, 0, 0, 0, 0, 53, 0, 0,
- 0, 54, 55, 0, 56, 0, 0, 0, 0, 0,
- 0, 229, 0, 0, 0, 64, 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, 0, 0, 0, 0, 0, 75, 69, 73, 70,
- 0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 63, 80, 48, 0, 0, 0, 0, 59,
- 0, 0, 0, 0, 0, 0, 76, 44, 0, 74,
- 0, 49, 71, 62, 77, 0, 0, 0, 0, 0,
- 43, 65, 52, 72, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 0, 0, 46, 47, 0,
- 285, 0, 0, 0, 0, 0, 0, 51, 50, 0,
- 0, 0, 0, 0, 0, 53, 0, 0, 0, 54,
- 55, 0, 56, 0, 0, 0, 0, 0, 0, 60,
- 0, 0, 0, 64, 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, 0, 75, 69, 73, 70, 0, 78,
+ 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, 203, 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, 0, 0, 0,
- 63, 80, 48, 0, 0, 0, 0, 59, 0, 0,
- 0, 0, 0, 0, 76, 44, 0, 74, 0, 49,
- 71, 62, 77, 0, 0, 0, 0, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 852, 0, 46, 47, 0,
- 0, 0, 0, 0, 0, 0, 0, 855, 854, 0,
- 0, 0, 0, 0, 0, 53, 0, 0, 0, 54,
- 55, 0, 56, 0, 0, 0, 0, 0, 0, 229,
- 0, 0, 0, 64, 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,
+ 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, 75, 856, 859, 857, 0, 78,
- 0, 0, 0, 0, 153, 0, 0, 0, 0, 0,
- 63, 80, 48, 0, 0, 0, 0, 59, 0, 0,
- 0, 853, 0, 0, 76, 44, 0, 74, 0, 49,
- 858, 62, 77, 0, 0, 0, 0, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 852, 0, 46, 47, 0,
- 0, 0, 0, 0, 0, 0, 0, 855, 854, 0,
- 0, 0, 0, 0, 0, 53, 0, 0, 0, 54,
- 55, 0, 56, 0, 0, 0, 0, 0, 0, 229,
- 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,
- 0, 0, 964, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 856, 859, 857, 0, 78,
- 0, 0, 0, 0, 153, 0, 0, 0, 0, 0,
- 63, 80, 48, 0, 0, 0, 0, 59, 0, 0,
- 0, 853, 0, 0, 76, 44, 0, 74, 0, 49,
- 858, 62, 77, 0, 0, 0, 0, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 852, 0, 46, 47, 0,
- 0, 0, 0, 0, 0, 0, 0, 855, 854, 0,
- 0, 0, 0, 0, 0, 53, 0, 0, 0, 54,
- 55, 0, 56, 0, 0, 0, 0, 0, 0, 229,
- 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,
- 0, 0, 967, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 856, 859, 857, 0, 78,
- 0, 0, 0, 0, 153, 0, 0, 0, 0, 0,
- 63, 80, 48, 0, 0, 0, 0, 59, 0, 0,
- 0, 853, 0, 0, 76, 44, 0, 74, 0, 49,
- 858, 62, 77, 0, 0, 0, 0, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 45, 46, 47, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 50, 0, 0,
- 0, 0, 0, 0, 53, 0, 0, 0, 54, 55,
- 0, 56, 0, 0, 0, 57, 0, 58, 60, 61,
- 0, 0, 64, 0, 0, 0, 0, 67, 0, 68,
+ 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,
- 0, 0, 0, 75, 69, 73, 70, 0, 78, 0,
- 79, 0, 81, 0, 82, 0, 0, 0, 0, 63,
- 80, 48, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 0, 76, 44, 0, 74, 0, 49, 71,
- 62, 77, 0, 0, 0, 0, 0, 43, 65, 52,
- 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 66, 0, 0, 45, 46, 47, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 50, 0, 0, 0,
- 0, 0, 0, 53, 0, 0, 0, 54, 55, 0,
- 56, 0, 0, 0, 57, 0, 58, 60, 61, 0,
- 0, 64, 0, 0, 0, 0, 67, 0, 68, 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, 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, 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, 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,
- 0, 0, 75, 69, 73, 70, 0, 78, 0, 79,
- 0, 81, 0, 82, 0, 0, 0, 0, 63, 80,
- 48, 0, 0, 0, 0, 59, 0, 0, 0, 0,
- 0, 156, 76, 44, 0, 74, 0, 49, 71, 62,
- 77, 0, 0, 0, 0, 0, 43, 65, 52, 72,
+ 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, 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,
- 66, 0, 0, 45, 46, 47, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 50, 0, 0, 0, 0,
- 0, 0, 53, 0, 0, 0, 54, 55, 0, 56,
- 0, 0, 0, 57, 0, 58, 60, 61, 0, 0,
- 64, 0, 0, 0, 0, 67, 0, 68, 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, 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,
+ 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,
- 0, 75, 69, 73, 70, 0, 78, 0, 79, 0,
- 81, 0, 82, 0, 0, 0, 0, 63, 80, 48,
- 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,
- 83, 76, 44, 0, 74, 0, 49, 71, 62, 77,
- 0, 0, 0, 0, 0, 43, 65, 52, 72, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
- 0, 0, 45, 46, 47, 0, 0, 0, 0, 0,
- 0, 0, 0, 51, 50, 0, 0, 0, 0, 0,
- 0, 53, 0, 0, 0, 54, 55, 0, 56, 0,
- 0, 0, 57, 0, 58, 60, 61, 0, 0, 64,
- 0, 0, 0, 0, 67, 0, 68, 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, 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, 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, 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,
- 75, 69, 73, 70, 0, 78, 0, 79, 0, 81,
- 0, 82, 0, 0, 0, 0, 63, 80, 48, 0,
- 0, 0, 0, 59, 0, 0, 0, 0, 0, 83,
- 76, 44, 0, 74, 0, 49, 71, 62, 77, 0,
- 0, 0, 0, 0, 43, 65, 52, 72, 0, 0,
- 0, 0, 0, 0, 0, 0, 105, 0, 66, 0,
- 0, 45, 46, 47, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 50, 0, 0, 0, 0, 0, 0,
- 53, 0, 0, 0, 54, 55, 0, 56, 0, 0,
- 0, 57, 0, 58, 60, 61, 0, 0, 64, 0,
- 0, 0, 0, 67, 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
- 69, 73, 70, 0, 78, 0, 79, 0, 81, 0,
- 82, 0, 0, 0, 0, 63, 80, 48, 0, 0,
- 0, 0, 59, 0, 0, 0, 0, 0, 156, 76,
- 44, 0, 74, 0, 49, 71, 62, 77, 0, 0,
- 0, 0, 0, 43, 65, 52, 72, 0, 0, 0,
- 0, 0, 0, 0, 780, 0, 0, 66, 0, 0,
- 347, 0, 0, 45, 46, 47, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 50, 0, 0, 0, 0,
- 0, 0, 53, 0, 0, 0, 54, 55, 0, 56,
- 0, 0, 0, 57, 0, 58, 60, 61, 0, 0,
- 64, 0, 0, 0, 0, 67, 0, 68, 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, 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, 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, 0, 0, 0, 0,
- 0, 75, 69, 73, 70, 0, 78, 0, 79, 0,
- 81, 0, 82, 0, 0, 0, 0, 63, 80, 48,
- 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,
- 156, 76, 44, 0, 74, 0, 49, 71, 62, 77,
- 0, 0, 0, 0, 0, 43, 65, 52, 72, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
- 0, 0, 45, 46, 47, 0, 0, 0, 0, 0,
- 0, 0, 0, 51, 50, 0, 0, 0, 0, 0,
- 0, 53, 0, 0, 0, 54, 55, 0, 56, 0,
- 0, 0, 57, 0, 58, 60, 61, 0, 0, 64,
- 0, 0, 0, 0, 67, 0, 68, 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, 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, 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,
+ 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,
- 75, 69, 73, 70, 0, 78, 0, 79, 0, 81,
- 0, 82, 0, 0, 0, 0, 63, 80, 48, 0,
- 0, 0, 0, 59, 0, 0, 0, 0, 293, 156,
- 76, 44, 0, 74, 0, 49, 71, 62, 77, 0,
- 0, 0, 0, 0, 43, 65, 52, 72, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
- 0, 45, 46, 47, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 50, 0, 0, 0, 0, 0, 0,
- 53, 0, 0, 0, 54, 55, 0, 56, 0, 0,
- 0, 57, 0, 58, 60, 61, 0, 0, 64, 0,
- 0, 0, 0, 67, 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
- 69, 73, 70, 0, 78, 0, 79, 0, 81, 0,
- 82, 0, 0, 0, 0, 63, 80, 48, 0, 0,
- 0, 0, 59, 0, 0, 0, 0, 290, 156, 76,
- 44, 0, 74, 0, 49, 71, 62, 77, 0, 0,
- 0, 0, 0, 43, 65, 52, 72, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
- 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 51, 50, 0, 0, 0, 0, 0, 0, 53,
- 0, 0, 0, 54, 55, 0, 56, 0, 0, 0,
- 57, 0, 58, 60, 61, 0, 0, 64, 0, 0,
- 0, 0, 67, 0, 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 75, 69,
- 73, 70, 0, 78, 0, 79, 0, 81, 0, 82,
- 0, 0, 0, 0, 63, 80, 48, 0, 0, 0,
- 0, 59, 0, 0, 0, 0, 221, 156, 76, 44,
- 0, 74, 0, 49, 71, 62, 77, 0, 0, 0,
- 0, 0, 43, 65, 52, 72, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 0, 0, 45,
- 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
- 51, 50, 0, 0, 0, 0, 0, 0, 53, 0,
- 0, 0, 54, 55, 0, 56, 0, 0, 0, 57,
- 0, 58, 60, 61, 0, 0, 64, 0, 0, 0,
- 0, 67, 0, 68, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 75, 69, 73,
- 70, 0, 78, 0, 79, 0, 81, 0, 82, 0,
- 0, 0, 0, 63, 80, 48, 0, 0, 0, 0,
- 59, 0, 0, 0, 0, 0, 156, 76, 44, 0,
- 74, 0, 49, 71, 62, 77, 0, 0, 0, 0,
- 0, 43, 65, 52, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 167, 0, 66, 0, 0, 45, 46,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 50, 0, 0, 0, 0, 0, 0, 53, 0, 0,
- 0, 54, 55, 0, 56, 0, 0, 0, 57, 0,
- 58, 60, 61, 0, 0, 64, 0, 0, 0, 0,
- 67, 0, 68, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 610, 0, 0, 0, 75, 69, 73, 70,
- 0, 78, 0, 79, 0, 81, 0, 82, 0, 0,
- 0, 0, 63, 80, 48, 0, 0, 0, 0, 59,
- 0, 0, 0, 0, 0, 156, 76, 44, 0, 74,
- 0, 49, 71, 62, 77, 0, 0, 0, 0, 0,
- 43, 65, 52, 72, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 0, 0, 45, 46, 47,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 50,
- 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
- 54, 55, 0, 56, 0, 0, 0, 57, 0, 58,
- 60, 61, 0, 0, 64, 0, 0, 0, 0, 67,
- 0, 68, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 751, 0, 0, 0, 75, 69, 73, 70, 0,
- 78, 0, 79, 0, 81, 0, 82, 0, 0, 0,
- 0, 63, 80, 48, 0, 0, 0, 0, 59, 0,
- 0, 0, 0, 0, 83, 76, 44, 0, 74, 0,
- 49, 71, 62, 77, 0, 0, 0, 0, 0, 43,
- 65, 52, 72, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 66, 0, 0, 355, 0, 0, 45,
- 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
- 51, 50, 0, 0, 0, 0, 0, 0, 53, 0,
- 0, 0, 54, 55, 0, 56, 0, 0, 0, 57,
- 0, 58, 60, 61, 0, 0, 64, 0, 0, 0,
- 0, 67, 0, 68, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 75, 69, 73,
- 70, 0, 78, 0, 79, 0, 81, 0, 82, 0,
- 0, 0, 0, 63, 80, 48, 0, 0, 0, 0,
- 59, 0, 0, 0, 0, 0, 156, 76, 44, 0,
- 74, 0, 49, 71, 62, 77, 0, 0, 0, 0,
- 0, 43, 65, 52, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 66, 0, 0, 45, 46,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 50, 0, 0, 0, 0, 0, 0, 53, 0, 0,
- 0, 54, 55, 0, 56, 0, 0, 0, 57, 0,
- 58, 60, 61, 0, 0, 64, 0, 0, 0, 0,
- 67, 0, 68, 0, 0, 0, 0, 0, 0, 728,
- 0, 0, 0, 0, 0, 0, 75, 69, 73, 70,
- 0, 78, 0, 79, 0, 81, 0, 82, 0, 0,
- 0, 0, 63, 80, 48, 0, 0, 0, 0, 59,
- 0, 0, 0, 0, 221, 156, 76, 44, 0, 74,
- 0, 49, 71, 62, 77, 0, 0, 0, 0, 0,
- 43, 65, 52, 72, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 0, 0, 45, 46, 47,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 50,
- 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
- 54, 55, 0, 56, 0, 0, 0, 57, 0, 58,
- 60, 61, 0, 0, 64, 0, 0, 0, 0, 67,
- 0, 68, 0, 0, 721, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 75, 69, 73, 70, 0,
- 78, 0, 79, 0, 81, 0, 82, 0, 0, 0,
- 0, 63, 80, 48, 0, 0, 0, 0, 59, 0,
- 0, 0, 0, 720, 156, 76, 44, 0, 74, 0,
- 49, 71, 62, 77, 0, 0, 0, 0, 0, 43,
- 65, 52, 72, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 66, 0, 0, 45, 46, 47, 0,
- 0, 0, 0, 0, 0, 0, 0, 51, 50, 0,
- 0, 0, 0, 0, 0, 53, 0, 0, 0, 54,
- 55, 0, 56, 0, 0, 0, 57, 0, 58, 60,
- 61, 0, 0, 64, 0, 0, 0, 0, 67, 0,
- 68, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 75, 69, 73, 70, 0, 78,
- 0, 79, 0, 81, 153, 82, 0, 0, 0, 0,
- 63, 80, 48, 403, 404, 0, 0, 59, 0, 0,
- 0, 0, 0, 83, 76, 44, 0, 74, 0, 49,
- 71, 62, 77, 0, 0, 0, 0, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 45, 46, 47, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 50, 0, 0,
- 0, 0, 0, 0, 53, 147, 0, 0, 54, 55,
- 0, 56, 0, 0, 0, 57, 0, 58, 60, 61,
- 0, 0, 64, 0, 0, 0, 0, 67, 0, 68,
- 0, 0, 0, 0, 0, 0, 0, 149, 0, 0,
- 0, 0, 0, 75, 69, 73, 70, 150, 78, 0,
- 79, 152, 81, 0, 82, 0, 155, 0, 0, 63,
- 80, 48, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 156, 76, 44, 0, 74, 0, 49, 71,
- 62, 77, 0, 0, 0, 0, 0, 43, 65, 52,
- 72, 0, 0, 0, 0, 0, 0, 0, 913, 912,
- 0, 66, 0, 0, 45, 46, 47, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 50, 0, 0, 0,
- 0, 0, 0, 53, 147, 0, 0, 54, 1018, 0,
- 56, 0, 0, 0, 57, 0, 58, 60, 61, 0,
- 0, 64, 0, 0, 0, 0, 67, 0, 68, 0,
- 0, 0, 0, 0, 0, 0, 149, 0, 0, 0,
- 0, 0, 75, 69, 73, 70, 150, 78, 0, 79,
- 152, 81, 0, 82, 0, 155, 0, 0, 63, 80,
- 48, 0, 0, 0, 0, 59, 0, 0, 0, 0,
- 0, 156, 76, 44, 0, 74, 0, 49, 71, 62,
- 77, 0, 0, 0, 0, 0, 43, 65, 52, 72,
- 0, 0, 0, 0, 0, 0, 0, 913, 912, 0,
- 66, 0, 0, 239, 240, 241, 0, 0, 244, 246,
- 247, 0, 0, 248, 0, 249, 0, 0, 0, 254,
- 255, 0, 256, 0, 0, 0, 0, 0, 0, 53,
- 257, 259, 260, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 262, 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,
- 265, 0, 0, 0, 0, 0, 0, 0, 0, 69,
- 73, 70, 267, 268, 269, 0, 271, 272, 273, 274,
- 275, 276, 0, 0, 263, 270, 253, 243, 261, 245,
- 264, 0, 0, 0, 0, 250, 0, 0, 266, 242,
- 252, 74, 251, 49, 71, 0, 0, 0, 0, 0,
- 258, 0, 43, 65, 52, 72, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 0, 0, 239,
- 240, 241, 0, 0, 244, 246, 247, 0, 0, 248,
- 0, 249, 0, 0, 0, 254, 255, 0, 256, 0,
- 0, 0, 0, 0, 0, 53, 257, 259, 260, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 262,
+ 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,
+ 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, 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, 0, 842, 0, 0, 0, 265, 0, 0, 0,
- 0, 0, 0, 0, 0, 69, 73, 70, 267, 268,
- 269, 0, 271, 272, 273, 274, 275, 276, 0, 0,
- 263, 270, 253, 243, 261, 245, 264, 0, 0, 0,
- 0, 250, 0, 0, 266, 242, 252, 74, 251, 49,
- 71, 0, 0, 0, 0, 0, 258, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 239, 240, 241, 0, 0,
- 244, 246, 247, 0, 0, 248, 0, 249, 0, 0,
- 0, 254, 255, 0, 256, 0, 0, 0, 0, 0,
- 0, 53, 257, 259, 260, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 262, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 811, 0,
- 0, 0, 265, 0, 0, 0, 0, 0, 0, 0,
- 0, 69, 73, 70, 267, 268, 269, 0, 271, 272,
- 273, 274, 275, 276, 0, 0, 263, 270, 253, 243,
- 261, 245, 264, 0, 0, 0, 0, 250, 0, 0,
- 266, 242, 252, 74, 251, 49, 71, 0, 0, 0,
- 0, 0, 258, 0, 43, 65, 52, 72, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
- 0, 239, 240, 241, 0, 0, 244, 246, 247, 0,
- 0, 248, 0, 249, 0, 0, 0, 254, 255, 0,
- 256, 0, 0, 0, 0, 0, 0, 53, 257, 259,
- 260, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 262, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 836, 0, 0, 0, 265, 0,
- 0, 0, 0, 0, 0, 0, 0, 69, 73, 70,
- 267, 268, 269, 0, 271, 272, 273, 274, 275, 276,
- 0, 0, 263, 270, 253, 243, 261, 245, 264, 0,
- 0, 0, 0, 250, 0, 0, 266, 242, 252, 74,
- 251, 49, 71, 0, 0, 0, 0, 0, 258, 0,
- 43, 65, 52, 72, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 0, 0, 239, 240, 241,
- 0, 0, 244, 246, 247, 0, 0, 248, 0, 249,
- 0, 0, 0, 254, 255, 0, 256, 0, 0, 0,
- 0, 0, 0, 53, 257, 259, 260, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 262, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 815, 0, 0, 0, 265, 0, 0, 0, 0, 0,
- 0, 0, 0, 69, 73, 70, 267, 268, 269, 0,
- 271, 272, 273, 274, 275, 276, 0, 0, 263, 270,
- 253, 243, 261, 245, 264, 0, 0, 0, 0, 250,
- 0, 0, 266, 242, 252, 74, 251, 49, 71, 0,
- 0, 0, 0, 0, 258, 0, 43, 65, 52, 72,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66, 0, 0, 239, 240, 241, 0, 0, 244, 246,
- 247, 0, 0, 248, 0, 249, 0, 0, 0, 254,
- 255, 0, 256, 0, 0, 0, 0, 0, 0, 53,
- 257, 259, 260, 0, 328, 0, 0, 0, 0, 0,
- 0, 0, 0, 262, 0, 0, 0, 329, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 265, 0, 0, 0, 0, 0, 0, 0, 330, 69,
- 73, 70, 267, 268, 269, 0, 271, 272, 273, 274,
- 275, 276, 0, 0, 263, 270, 253, 243, 261, 245,
- 264, 0, 0, 0, 0, 250, 0, 0, 266, 242,
- 252, 74, 251, 49, 71, 0, 0, 0, 0, 0,
- 258, 0, 43, 65, 52, 72, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 0, 0, 239,
- 240, 241, 0, 0, 244, 246, 247, 0, 0, 248,
- 0, 249, 0, 0, 0, 254, 255, 0, 256, 0,
- 0, 0, 0, 0, 0, 53, 257, 259, 260, 0,
- 328, 0, 0, 0, 0, 0, 0, 0, 0, 262,
- 0, 0, 0, 329, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 265, 0, 0, 0,
- 518, 0, 0, 0, 330, 69, 73, 70, 267, 268,
- 269, 0, 271, 272, 273, 274, 275, 276, 0, 0,
- 263, 270, 253, 243, 261, 245, 264, 0, 0, 0,
- 0, 250, 0, 0, 266, 242, 252, 74, 251, 49,
- 71, 0, 0, 0, 0, 0, 258, 0, 43, 65,
- 515, 517, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 239, 240, 241, 0, 0,
- 244, 246, 247, 0, 0, 248, 0, 249, 0, 0,
- 0, 254, 255, 0, 256, 0, 0, 0, 0, 0,
- 0, 53, 257, 259, 260, 0, 328, 0, 0, 0,
- 0, 0, 0, 0, 0, 262, 0, 0, 0, 329,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 265, 0, 516, 0, 518, 0, 0, 0,
- 330, 69, 73, 70, 267, 268, 269, 0, 271, 272,
- 273, 274, 275, 276, 0, 0, 263, 270, 253, 243,
- 261, 245, 264, 0, 0, 0, 0, 250, 0, 0,
- 266, 242, 252, 519, 251, 49, 71, 0, 0, 0,
- 0, 0, 258, 0, 43, 65, 515, 517, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
- 0, 239, 240, 241, 0, 0, 244, 246, 247, 0,
- 0, 248, 0, 249, 0, 0, 0, 254, 255, 0,
- 256, 0, 0, 0, 0, 0, 0, 53, 257, 259,
- 260, 0, 328, 0, 0, 0, 0, 0, 0, 0,
- 0, 262, 0, 0, 0, 329, 0, 0, 0, 0,
- 0, 0, 0, 0, 708, 0, 0, 0, 265, 0,
- 0, 0, 518, 0, 0, 0, 330, 69, 73, 70,
- 267, 268, 269, 0, 271, 272, 273, 274, 275, 276,
- 0, 0, 263, 270, 253, 243, 261, 245, 264, 0,
- 0, 0, 0, 250, 0, 0, 266, 242, 252, 74,
- 251, 49, 71, 0, 0, 0, 0, 0, 258, 0,
- 43, 65, 515, 517, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 66, 0, 0, 239, 240, 241,
- 0, 0, 244, 246, 247, 0, 0, 248, 0, 249,
- 0, 0, 0, 254, 255, 0, 256, 0, 0, 0,
- 0, 0, 0, 53, 257, 259, 260, 0, 328, 0,
- 0, 0, 0, 0, 0, 0, 0, 262, 0, 0,
- 0, 329, 0, 0, 0, 0, 0, 0, 0, 0,
- 703, 0, 0, 0, 265, 0, 0, 0, 518, 0,
- 0, 0, 330, 69, 73, 70, 267, 268, 269, 0,
- 271, 272, 273, 274, 275, 276, 0, 0, 263, 270,
- 253, 243, 261, 245, 264, 0, 0, 0, 0, 250,
- 0, 0, 266, 242, 252, 74, 251, 49, 71, 0,
- 0, 0, 0, 0, 258, 0, 43, 65, 515, 517,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66, 0, 0, 140, 0, 0, 0, 0, 141, 0,
- 45, 46, 47, 143, 0, 0, 0, 0, 0, 0,
- 144, 51, 50, 0, 0, 0, 0, 0, 0, 53,
- 147, 0, 0, 54, 55, 0, 56, 0, 0, 0,
- 57, 0, 58, 60, 61, 0, 0, 64, 0, 0,
- 0, 0, 67, 0, 68, 0, 0, 0, 0, 0,
- 148, 0, 149, 0, 0, 0, 0, 0, 75, 69,
- 73, 70, 150, 78, 151, 79, 152, 81, 153, 82,
- 154, 155, 0, 0, 63, 80, 48, 0, 0, 142,
- 0, 59, 0, 0, 0, 0, 0, 156, 76, 44,
- 0, 74, 0, 49, 71, 62, 77, 0, 0, 0,
- 0, 0, 43, 65, 52, 72, 0, 0, 0, 0,
- 0, 0, 0, 0, 145, 0, 66, 0, 0, 140,
- 0, 0, 0, 0, 141, 0, 45, 46, 47, 143,
- 0, 0, 0, 0, 0, 0, 144, 51, 50, 0,
- 0, 0, 0, 0, 0, 53, 147, 0, 0, 54,
- 55, 0, 56, 0, 0, 0, 57, 0, 58, 60,
- 61, 0, 0, 64, 0, 0, 0, 0, 67, 0,
- 68, 0, 0, 0, 0, 0, 148, 0, 149, 0,
- 0, 0, 0, 0, 75, 69, 73, 70, 150, 78,
- 151, 79, 152, 81, 153, 82, 154, 155, 0, 0,
- 63, 80, 48, 0, 0, 142, 0, 59, 0, 0,
- 0, 0, 0, 156, 76, 44, 0, 74, 0, 49,
- 71, 62, 77, 0, 0, 0, 0, 0, 43, 65,
- 52, 72, 0, 0, 0, 0, 0, 0, 0, 208,
- 145, 0, 66, 0, 0, 140, 0, 0, 0, 0,
- 141, 0, 45, 46, 47, 143, 0, 0, 0, 0,
- 0, 0, 144, 51, 50, 0, 0, 0, 0, 0,
- 0, 53, 147, 0, 0, 54, 55, 0, 56, 0,
- 0, 0, 57, 0, 58, 60, 61, 0, 0, 64,
- 0, 0, 0, 0, 67, 0, 68, 0, 0, 0,
- 0, 0, 148, 0, 149, 0, 0, 0, 0, 0,
- 75, 69, 73, 70, 150, 78, 151, 79, 152, 81,
- 153, 82, 154, 155, 0, 0, 63, 80, 48, 0,
- 0, 142, 0, 59, 0, 0, 0, 0, 0, 156,
- 76, 44, 0, 74, 0, 49, 71, 62, 77, 0,
- 0, 0, 0, 0, 43, 65, 52, 72, 0, 0,
- 0, 0, 0, 0, 0, 146, 145, 0, 66, 0,
- 0, 140, 0, 0, 0, 0, 141, 0, 45, 46,
- 47, 143, 0, 0, 0, 0, 0, 0, 144, 51,
- 50, 0, 0, 0, 0, 0, 0, 53, 147, 0,
- 0, 54, 55, 0, 56, 0, 0, 0, 57, 0,
- 58, 60, 61, 0, 0, 920, 0, 0, 0, 0,
- 67, 0, 68, 0, 0, 0, 0, 0, 148, 0,
- 149, 0, 0, 0, 0, 0, 921, 69, 73, 70,
- 150, 78, 151, 79, 152, 81, 153, 82, 154, 155,
- 0, 0, 63, 80, 48, 0, 0, 142, 0, 59,
- 0, 0, 0, 0, 0, 156, 76, 44, 0, 74,
- 0, 49, 71, 62, 77, 0, 0, 0, 0, 0,
- 43, 65, 52, 72, 0, 0, 0, 0, 0, 0,
- 0, 146, 145, 0, 66, 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,
+ 1058, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 235, 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, 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, 301, 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, 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, 150, 149, 0, 68, 0,
+ 0, 0,
- 904, 989, 766, 996, 875, 874, 986, 982, 1048, 235,
- 876, 932, 1054, 529, 994, 992, 765, 884, 1053, 993,
- 873, 984, 987, 801, 891, 933, 961, 916, 1043, 795,
- 797, 794, 796, 1036, 802, 1012, 803, 935, 805, 1024,
- 906, 904, 1022, 807, 828, 952, 1051, 974, 969, 1013,
- 1047, 975, 904, 235, 930, 1010, 129, 165, 971, 818,
- 579, 950, 776, 779, 1004, 583, 621, 235, 575, 565,
- 887, 1009, 582, 567, 346, 559, 556, 555, 419, 166,
- 554, 168, 550, 599, 394, 423, 548, 611, 588, 618,
- 600, 593, 587, 553, 616, 585, 170, 492, 505, 488,
- 237, 486, 501, 129, 445, 235, 606, 474, 602, 210,
- 304, 464, 531, 457, 609, 547, 203, 546, 545, 536,
- 538, 537, 169, 535, 530, 446, 307, 528, 426, 434,
- 440, 681, 442, 689, 691, 459, 459, 690, 316, 446,
- 683, 682, 686, 315, 340, 680, 676, 296, 677, 289,
- 308, 674, 675, 331, 338, 723, 746, 235, 294, 292,
- 313, 638, 710, 717, 586, 235, 314, 696, 704, 387,
- 199, 695, 277, 649, 378, 694, 640, 383, 627, 629,
- 380, 386, 129, 392, 480, 411, 109, 629, 617, 129,
- 664, 627, 371, 339, 282, 129, 372, 235, 357, 919,
- 411, 411, 421, 213, 669, 351, 237, 213, 212, 415,
- 411, 237, 1038, 411, 428, 237, 389, 237, 385, 382,
- 237, 289, 1016, 0, 237, 1017, 388, 623, 237, 237,
- 1006, 1040, 1039, 388, 289, 289, 213, 212, 388, 848,
- 388, 236, 727, 726, 642, 237, 281, 1007, 711, 713,
- 623, 623, 817, 384, 381, 639, 411, 653, 656, 213,
- 684, 213, 669, 388, 448, 450, 213, 658, 470, 718,
- 207, 719, 213, 216, 413, 561, 237, 410, 237, 660,
- 810, 237, 661, 666, 213, 487, 663, 998, 213, 504,
- 563, 237, 388, 411, 205, 213, 684, 213, 869, 388,
- 604, 623, 608, 0, 1002, 698, 350, 623, 523, 532,
- 324, 319, 539, 237, 388, 213, 317, 830, 831, 0,
- 468, 474, 549, 480, 388, 773, 388, 28, 213, 612,
- 213, 216, 213, 819, 41, 0, 702, 699, 0, 213,
- 216, 327, 213, 216, 213, 216, 213, 216, 810, 213,
- 437, 624, 324, 819, 213, 595, 741, 466, 213, 819,
- 213, 504, 0, 213, 453, 665, 91, 213, 430, 213,
- 216, 213, 487, 847, 806, 762, 213, 216, 662, 213,
- 216, 90, 878, 879, 522, 880, 91, 832, 213, 819,
- 213, 336, 353, 732, 213, 216, 203, 213, 216, 213,
- 216, 90, 324, 819, 91, 745, 91, 0, 651, 104,
- 213, 612, 1035, 91, 557, 0, 768, 0, 0, 90,
- 11, 90, 750, 0, 452, 624, 213, 216, 90, 318,
- 0, 762, 28, 28, 92, 698, 0, 832, 93, 41,
- 41, 91, 613, 311, 0, 91, 28, 0, 388, 213,
- 497, 28, 92, 41, 92, 0, 90, 100, 41, 630,
- 90, 92, 707, 438, 220, 101, 702, 699, 596, 213,
- 461, 722, 0, 799, 752, 91, 678, 454, 490, 0,
- 792, 432, 91, 0, 324, 319, 228, 284, 814, 92,
- 90, 767, 754, 0, 0, 28, 0, 90, 28, 0,
- 28, 844, 41, 672, 337, 41, 0, 41, 804, 0,
- 692, 0, 408, 687, 798, 327, 213, 216, 541, 91,
- 91, 425, 620, 92, 613, 11, 11, 838, 871, 429,
- 92, 444, 0, 353, 90, 90, 28, 551, 787, 11,
- 213, 497, 374, 41, 11, 28, 0, 310, 0, 91,
- 91, 377, 41, 28, 0, 28, 0, 821, 0, 500,
- 41, 228, 41, 499, 90, 90, 978, 92, 0, 980,
- 979, 977, 91, 841, 91, 91, 0, 91, 0, 91,
- 463, 0, 198, 462, 213, 216, 0, 90, 11, 90,
- 90, 11, 90, 11, 90, 91, 0, 92, 92, 0,
- 0, 353, 354, 333, 0, 0, 179, 736, 227, 91,
- 90, 0, 1041, 0, 196, 0, 0, 91, 0, 0,
- 92, 91, 92, 92, 90, 92, 192, 92, 193, 11,
- 187, 191, 90, 781, 194, 784, 90, 352, 11, 0,
- 91, 91, 0, 92, 668, 748, 11, 0, 11, 91,
- 503, 0, 0, 91, 499, 90, 90, 92, 668, 667,
- 0, 91, 397, 0, 90, 92, 668, 734, 90, 92,
- 668, 735, 91, 0, 0, 783, 90, 91, 0, 0,
- 227, 228, 228, 91, 91, 737, 227, 90, 232, 786,
- 956, 0, 90, 0, 0, 0, 227, 92, 90, 90,
- 960, 92, 668, 739, 0, 352, 0, 227, 173, 92,
- 668, 740, 0, 91, 0, 1023, 0, 0, 91, 91,
- 92, 668, 747, 0, 0, 92, 668, 749, 90, 91,
- 91, 92, 92, 90, 90, 91, 91, 0, 41, 41,
- 91, 628, 972, 626, 90, 90, 956, 0, 1020, 0,
- 90, 90, 0, 0, 228, 90, 0, 400, 0, 0,
- 228, 0, 0, 0, 41, 0, 92, 0, 0, 227,
- 228, 0, 0, 41, 0, 0, 0, 232, 92, 227,
- 0, 228, 632, 92, 92, 41, 968, 232, 0, 0,
- 41, 41, 634, 0, 0, 0, 711, 713, 227, 227,
- 0, 645, 91, 0, 648, 299, 867, 867, 0, 0,
- 401, 405, 91, 0, 0, 303, 0, 90, 0, 0,
- 990, 965, 0, 0, 0, 0, 91, 90, 973, 868,
- 868, 91, 91, 909, 227, 908, 910, 915, 911, 914,
- 0, 90, 867, 228, 972, 0, 90, 90, 0, 0,
- 11, 0, 973, 228, 0, 0, 0, 909, 0, 908,
- 910, 915, 911, 914, 0, 868, 0, 91, 0, 0,
- 990, 0, 228, 228, 92, 668, 738, 0, 1019, 0,
- 0, 0, 90, 909, 0, 908, 910, 915, 911, 914,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 228, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 717, 709, 708, 707, 704, 703, 702, 723, 1096, 1091,
+ 699, 736, 696, 730, 695, 1094, 694, 693, 649, 690,
+ 689, 688, 687, 1090, 636, 679, 638, 208, 676, 1078,
+ 208, 1086, 674, 208, 677, 673, 1076, 1064, 1050, 1062,
+ 1047, 657, 759, 651, 1048, 112, 133, 1042, 1051, 294,
+ 1034, 374, 778, 638, 779, 396, 636, 420, 133, 1032,
+ 1031, 208, 1025, 626, 627, 620, 595, 625, 615, 940,
+ 831, 1022, 611, 789, 792, 608, 1020, 602, 597, 609,
+ 596, 1023, 594, 591, 618, 588, 584, 630, 807, 170,
+ 592, 576, 808, 810, 574, 809, 1018, 171, 814, 815,
+ 818, 173, 1011, 820, 568, 563, 816, 565, 564, 562,
+ 1010, 559, 1007, 557, 208, 556, 555, 554, 841, 547,
+ 544, 537, 546, 545, 540, 174, 1004, 539, 538, 175,
+ 940, 994, 996, 1005, 208, 250, 455, 510, 210, 257,
+ 208, 979, 253, 514, 501, 264, 271, 497, 267, 269,
+ 495, 972, 1097, 970, 286, 288, 1030, 992, 133, 133,
+ 363, 968, 473, 973, 975, 466, 483, 954, 324, 892,
+ 325, 944, 893, 895, 894, 901, 468, 455, 449, 321,
+ 451, 330, 443, 454, 333, 940, 357, 331, 348, 332,
+ 435, 355, 356, 928, 977, 428, 388, 921, 392, 395,
+ 133, 389, 403, 432, 401, 941, 924, 430, 570, 632,
+ 861, 632, 368, 420, 420, 210, 424, 306, 671, 210,
+ 731, 437, 732, 306, 682, 306, 697, 1044, 724, 726,
+ 264, 264, 740, 739, 1080, 1079, 1056, 397, 397, 1057,
+ 397, 461, 264, 210, 420, 420, 397, 632, 420, 391,
+ 1045, 397, 1036, 669, 666, 394, 957, 398, 306, 305,
+ 303, 420, 479, 300, 489, 653, 306, 697, 617, 306,
+ 682, 397, 613, 210, 572, 1040, 0, 210, 650, 306,
+ 305, 419, 422, 306, 496, 210, 632, 397, 843, 844,
+ 210, 390, 397, 298, 306, 309, 0, 393, 397, 210,
+ 302, 210, 397, 210, 397, 306, 513, 210, 823, 306,
+ 888, 0, 457, 459, 210, 210, 475, 367, 0, 94,
+ 830, 558, 306, 832, 306, 309, 29, 370, 745, 477,
+ 548, 253, 541, 42, 93, 532, 306, 309, 775, 860,
+ 306, 462, 256, 306, 309, 306, 309, 306, 309, 711,
+ 209, 306, 832, 306, 309, 306, 309, 306, 353, 306,
+ 446, 341, 336, 632, 306, 334, 210, 566, 0, 678,
+ 306, 309, 489, 675, 786, 969, 633, 341, 832, 0,
+ 715, 712, 0, 483, 306, 832, 306, 309, 0, 915,
+ 916, 0, 344, 917, 306, 439, 306, 604, 306, 309,
+ 0, 823, 306, 309, 659, 302, 306, 513, 306, 621,
+ 711, 94, 845, 306, 496, 633, 306, 506, 94, 94,
+ 341, 832, 0, 11, 306, 470, 93, 0, 29, 417,
+ 94, 819, 94, 93, 93, 42, 0, 720, 306, 621,
+ 0, 715, 712, 0, 0, 93, 1014, 93, 94, 550,
+ 1016, 1015, 1013, 29, 0, 845, 94, 758, 463, 95,
+ 42, 94, 0, 93, 306, 506, 95, 95, 0, 781,
+ 735, 93, 94, 531, 700, 354, 93, 447, 95, 765,
+ 95, 705, 335, 685, 289, 691, 199, 93, 293, 291,
+ 0, 499, 775, 890, 29, 851, 95, 281, 259, 0,
+ 0, 42, 198, 29, 95, 306, 309, 767, 313, 95,
+ 42, 800, 441, 302, 605, 197, 94, 94, 306, 309,
+ 95, 0, 370, 754, 857, 11, 622, 0, 560, 94,
+ 509, 93, 93, 178, 508, 328, 812, 453, 94, 472,
+ 805, 0, 471, 107, 93, 827, 0, 1075, 0, 0,
+ 11, 0, 780, 93, 629, 94, 622, 834, 817, 29,
+ 811, 29, 341, 336, 95, 95, 42, 29, 42, 94,
+ 93, 640, 279, 763, 42, 434, 0, 95, 512, 201,
+ 103, 94, 508, 0, 93, 438, 94, 94, 0, 0,
+ 94, 11, 0, 344, 0, 854, 93, 29, 94, 29,
+ 11, 93, 93, 95, 42, 93, 42, 104, 0, 29,
+ 794, 94, 797, 93, 0, 0, 42, 95, 0, 0,
+ 94, 96, 94, 0, 0, 29, 93, 0, 201, 95,
+ 369, 0, 42, 94, 95, 93, 193, 93, 95, 681,
+ 760, 0, 184, 327, 0, 0, 95, 94, 93, 749,
+ 94, 0, 796, 0, 0, 406, 11, 200, 11, 95,
+ 681, 753, 93, 283, 11, 93, 799, 1003, 95, 94,
+ 95, 681, 752, 0, 200, 42, 0, 0, 94, 0,
+ 0, 95, 681, 751, 93, 350, 0, 1063, 0, 94,
+ 662, 0, 94, 93, 11, 95, 11, 94, 95, 681,
+ 761, 94, 42, 200, 93, 94, 11, 93, 0, 0,
+ 306, 309, 93, 910, 94, 664, 93, 95, 0, 0,
+ 93, 94, 11, 0, 42, 0, 95, 370, 371, 93,
+ 201, 635, 94, 42, 750, 637, 93, 0, 201, 94,
+ 95, 681, 748, 94, 0, 0, 200, 93, 94, 95,
+ 681, 747, 200, 95, 93, 201, 1000, 409, 93, 0,
+ 42, 0, 200, 93, 42, 205, 0, 0, 0, 95,
+ 1052, 643, 1085, 0, 0, 0, 42, 0, 0, 1008,
+ 95, 681, 762, 0, 201, 0, 94, 95, 0, 1000,
+ 0, 1060, 94, 660, 42, 0, 95, 681, 680, 0,
+ 0, 93, 94, 645, 0, 200, 947, 93, 946, 948,
+ 953, 949, 952, 200, 410, 414, 200, 93, 205, 0,
+ 0, 200, 0, 200, 907, 0, 885, 201, 0, 205,
+ 1082, 1083, 0, 201, 0, 369, 205, 200, 0, 0,
+ 724, 726, 0, 201, 0, 94, 0, 0, 274, 0,
+ 885, 887, 0, 94, 11, 0, 94, 904, 0, 278,
+ 93, 94, 0, 94, 0, 0, 320, 0, 93, 0,
+ 200, 93, 0, 0, 200, 887, 93, 94, 93, 0,
+ 0, 0, 1052, 885, 0, 0, 201, 885, 1053, 0,
+ 0, 0, 93, 0, 201, 0, 0, 201, 1026, 0,
+ 0, 0, 201, 0, 201, 0, 0, 0, 887, 0,
+ 94, 1059, 887, 1026, 94, 0, 0, 947, 201, 946,
+ 948, 953, 949, 952, 0, 93, 1009, 0, 0, 93,
+ 0, 0, 947, 0, 946, 948, 953, 949, 952, 1008,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 201, 1009, 0, 0, 201, 0, 0, 947, 0,
+ 946, 948, 953, 949, 952, 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, 849, 849, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 200, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 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,
- 849, 0, 0, 909, 0, 908, 910, 915, 911, 914,
+ 94, 0, 0, 641, 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,
@@ -1318,369 +1516,300 @@ 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, 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 [] = {
- 7, 34, 30, 2, 34, 62, 62, 7, 62, 34,
- 101, 34, 34, 57, 34, 57, 83, 69, 7, 17,
- 30, 50, 15, 70, 70, 37, 7, 30, 37, 34,
- 62, 1, 70, 104, 30, 7, 62, 38, 62, 104,
- 15, 49, 37, 62, 34, 62, 34, 8, 7, 62,
- 34, 57, 113, 7, 7, 57, 7, 35, 37, 7,
- 57, 34, 113, 34, 8, 57, 30, 17, 62, 34,
- 38, 62, 17, 104, 48, 37, 62, 7, 34, 34,
- 57, 57, 48, 7, 15, 34, 113, 8, 17, 8,
- 57, 38, 7, 62, 57, 8, 81, 8, 37, 7,
- 7, 2, 62, 8, 8, 63, 63, 49, 8, 8,
- 7, 63, 7, 7, 17, 58, 34, 63, 58, 17,
- 57, 101, 63, 0, 17, 37, 62, 62, 17, 57,
- 57, 17, 7, 17, 17, 37, 62, 2, 63, 49,
- 1, 37, 34, 34, 66, 83, 2, 37, 57, 37,
- 8, 1, 0, 0, 8, 17, 62, 8, 34, 30,
- 83, 95, 95, 95, 49, 7, 38, 8, 17, 8,
- 57, 17, 17, 7, 37, 95, 1, 57, 37, 23,
- 62, 34, 37, 16, 57, 7, 5, 7, 57, 5,
- 5, 34, 62, 7, 62, 7, 34, 37, 34, 7,
- 57, 7, 83, 8, 34, 37, 37, 34, 8, 20,
- 62, 37, 8, 34, 37, 8, 34, 8, 8, 8,
- 57, 34, 57, 7, -1, 8, 7, 15, 52, 8,
- 6, 32, 56, 62, 62, 15, -1, 25, 41, 0,
- 57, 15, 52, 15, 20, 25, 56, 7, 8, 8,
- 53, 25, 65, 8, 63, 64, -1, 57, 10, 63,
- 64, 63, 64, 35, 8, 58, 62, 57, 57, 63,
- 64, 62, 41, 8, 8, 58, 63, 64, 8, 58,
- 7, 63, 64, 8, 53, 63, 64, 41, 63, 64,
- 63, 64, 63, 64, 43, 25, 63, 64, 8, 53,
- 63, 64, 8, 62, 8, 57, 55, 63, 64, 8,
- 37, 95, 58, 114, 58, 41, 111, 112, 63, 64,
- 63, 64, 57, 63, 64, 63, 64, 53, 62, 8,
- 8, 26, 113, 28, 111, 112, 7, 62, 30, 7,
- 7, 30, 103, 48, 39, 30, 30, 57, 8, 17,
- 111, 97, 57, 7, 63, 64, 62, 37, 62, 7,
- 30, 30, 8, 62, 69, 30, 8, -1, 26, 37,
- 28, 17, 0, 8, 30, 8, 8, -1, 15, 58,
- 34, 39, 17, 63, 64, 63, 64, 79, 15, 12,
- 79, 30, 63, 64, 79, 79, 63, 64, 35, 91,
- 37, -1, 91, 12, 113, -1, 91, 91, 35, 79,
- 79, 26, 12, 28, 79, 63, 64, 63, 22, 23,
- -1, 91, 91, 79, 39, 58, 91, -1, 63, 63,
- 64, 63, 64, 5, -1, 91, 59, -1, 10, -1,
- 79, 26, 65, 28, 26, -1, 28, -1, 108, 109,
- 59, 15, 91, -1, 39, 50, 65, 39, -1, 59,
- 94, 18, 19, 18, 19, 65, 108, 109, 63, 64,
- -1, 35, -1, 127, -1, 103, 18, 19, -1, 106,
- 107, 18, 19, 111, -1, 57, 24, 25, -1, 46,
- 47, 46, 47, 15, -1, 33, 100, 7, 36, 15,
- 38, 22, 23, 15, 46, 47, 15, -1, -1, 46,
- 47, -1, -1, 35, -1, 37, -1, -1, 113, 35,
- -1, 37, -1, 35, -1, 37, 35, -1, 37, 118,
- 119, 120, 121, 122, 123, -1, 24, 25, -1, 15,
- -1, -1, 106, 107, 32, 33, -1, -1, 36, -1,
- 38, 15, -1, 63, 64, -1, -1, -1, 34, 35,
- -1, 37, -1, -1, -1, -1, -1, 88, 89, -1,
- 34, 35, -1, 37, 24, 25, 30, -1, -1, 100,
- 10, -1, 32, 33, 106, 107, 36, -1, 38, -1,
- 106, 107, 22, 23, 106, 107, -1, 106, 107, -1,
- -1, -1, -1, -1, 34, 30, -1, -1, -1, -1,
- -1, -1, 30, -1, -1, -1, 70, 71, 72, -1,
- 24, 25, -1, -1, -1, -1, -1, -1, -1, 33,
- 106, 107, 36, -1, 38, 65, -1, -1, -1, -1,
- -1, -1, 106, 107, -1, 70, 71, 72, 15, 79,
- 104, 105, 70, 71, 72, -1, -1, -1, 88, 89,
- 114, 115, 116, 30, -1, -1, -1, -1, -1, -1,
- 100, -1, -1, 127, -1, -1, -1, -1, -1, 104,
- 105, -1, -1, -1, 15, -1, 104, 105, -1, 114,
- 115, 116, -1, -1, -1, -1, 114, 115, 116, 30,
- -1, -1, 127, 70, 71, 72, -1, -1, 15, 127,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 30, -1, -1, 30, -1, -1, -1,
- 30, -1, -1, -1, -1, -1, -1, 104, 105, 70,
- 71, 72, -1, -1, -1, -1, -1, 114, 115, 116,
- 30, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 127, -1, -1, 70, 71, 72, 70, 71, 72, -1,
- 70, 71, 72, 104, 105, -1, -1, 30, -1, -1,
- -1, -1, -1, 114, 115, 116, -1, -1, -1, -1,
- 70, 71, 72, -1, -1, -1, 127, 104, 105, -1,
- 104, 105, 102, 30, 104, 105, -1, 114, 115, 116,
- 114, 115, 116, 113, 114, 115, 116, 70, 71, 72,
- 127, -1, 102, 127, 104, 105, 15, 127, -1, -1,
- -1, -1, -1, 113, 114, 115, 116, -1, -1, -1,
- -1, 30, -1, 70, 71, 72, -1, 127, -1, 102,
- -1, 104, 105, -1, -1, -1, -1, -1, -1, -1,
- 113, 114, 115, 116, -1, 30, -1, -1, -1, -1,
- 30, -1, -1, -1, 127, 102, -1, 104, 105, -1,
- -1, 70, 71, 72, -1, -1, 113, 114, 115, 116,
- -1, 30, -1, -1, -1, -1, -1, -1, -1, -1,
- 127, -1, -1, -1, -1, 70, 71, 72, -1, -1,
- 70, 71, 72, -1, -1, 104, 105, -1, -1, -1,
- -1, -1, -1, -1, -1, 114, 115, 116, -1, -1,
- -1, 70, 71, 72, -1, -1, -1, 102, 127, 104,
- 105, 30, 102, -1, 104, 105, -1, -1, 113, 114,
- 115, 116, -1, 113, 114, 115, 116, -1, -1, -1,
- -1, -1, 127, 102, -1, 104, 105, 127, -1, -1,
- -1, 30, -1, -1, 113, 114, 115, 116, 37, -1,
- -1, 70, 71, 72, -1, -1, -1, -1, 127, 30,
- 79, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 91, -1, -1, -1, -1, -1, -1, -1,
- -1, 70, 71, 72, -1, 104, 105, -1, -1, -1,
- -1, -1, -1, -1, -1, 114, 115, 116, -1, 70,
- 71, 72, -1, -1, -1, -1, -1, 30, 127, -1,
- -1, 30, -1, 102, 37, 104, 105, -1, -1, -1,
- -1, -1, -1, -1, 113, 114, 115, 116, -1, -1,
- 101, 102, -1, 104, 105, -1, -1, -1, 127, -1,
- -1, -1, 113, 114, 115, 116, -1, 70, 71, 72,
- -1, 70, 71, 72, -1, -1, 127, -1, 30, -1,
- 79, -1, -1, -1, -1, 37, -1, -1, -1, -1,
- -1, -1, 91, 30, -1, -1, -1, -1, -1, 102,
- 37, 104, 105, -1, -1, 104, 105, -1, -1, -1,
- 113, 114, 115, 116, 30, 114, 115, 116, 70, 71,
- 72, -1, -1, -1, 127, -1, -1, -1, 127, -1,
- -1, 30, -1, 70, 71, 72, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 63, 64, -1,
- 102, -1, 104, 105, 70, 71, 72, -1, -1, -1,
- -1, 113, 114, 115, 116, 102, -1, 104, 105, -1,
- -1, 70, 71, 72, -1, 127, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, -1, 102, -1, 104, 105,
- 127, -1, 30, -1, -1, -1, -1, 113, 114, 115,
- 116, -1, 101, 102, -1, 104, 105, -1, -1, -1,
- -1, 127, -1, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, 63, 64, -1, 127, -1,
- -1, 30, 70, 71, 72, 34, 35, -1, -1, -1,
+ 7, 34, 62, 57, 116, 37, 37, 57, 34, 62,
+ 34, 57, 37, 62, 0, 62, 34, 57, 37, 15,
+ 50, 0, 96, 1, 16, 37, 49, 83, 96, 96,
+ 34, 8, 2, 5, 5, 57, 34, 52, 5, 34,
+ 15, 7, 103, 57, 34, 7, 15, 8, 8, 17,
+ 37, 62, 17, 34, 57, 7, 20, 62, 34, 7,
+ 62, 34, 70, 37, 7, 48, 66, 17, 57, 62,
+ 8, 17, 17, 17, 7, 38, 34, 30, 35, 38,
+ 17, 63, 17, 30, 7, 34, 96, 7, 1, 83,
+ 1, 8, 48, 34, 34, 49, 2, 7, 83, 17,
+ 2, 52, 57, 37, 34, 37, 37, 34, 37, 30,
+ 7, 37, 103, 38, 17, 34, 52, 17, 7, 7,
+ 62, 49, 34, 62, 7, 34, 7, 7, 7, 34,
+ 17, 30, 116, 37, 0, -1, 116, 8, 62, 34,
+ 34, 63, 34, 57, 8, 1, 62, 37, -1, 57,
+ 57, 8, 37, 7, 2, 70, 57, 34, 30, 34,
+ 38, 57, 30, 30, 62, 30, 57, 30, 8, 62,
+ 8, -1, 23, 7, 7, 57, 62, 8, 62, 8,
+ -1, -1, 8, 57, 34, 17, 62, 7, -1, 34,
+ 17, 34, 62, 62, 52, 37, 49, 70, 37, 8,
+ 8, 63, 17, 63, 17, 57, 17, 8, 63, 7,
+ 57, 15, 34, 7, 63, 8, 62, -1, 62, 15,
+ 57, 62, 83, 8, 15, 8, 8, 62, 8, 25,
+ 34, 41, 62, 32, 58, 58, 57, -1, 57, 7,
+ 8, 69, 58, 53, 35, 81, 8, 106, 37, 63,
+ 64, 63, 64, 37, 8, 41, 63, 64, 63, 64,
+ 63, 64, 41, 63, 64, 58, 15, 53, 63, 64,
+ 43, 63, 64, 70, 53, 57, 25, 62, 58, 62,
+ 8, 106, 55, 99, 8, 63, 64, 63, 64, 63,
+ 64, 63, 64, 41, 63, 64, 114, 115, 63, 64,
+ 62, 8, 8, 63, 64, 53, 8, 15, 8, 7,
+ 107, 63, 64, 63, 64, 8, 8, 25, 117, 63,
+ 64, 56, 116, 8, 56, 8, 8, 116, 8, 10,
+ 63, 64, 116, 7, 62, 8, 8, 34, 62, 37,
+ 63, 64, 7, 25, 114, 115, 7, 26, 0, 28,
+ 8, 58, 8, 7, 7, 57, 62, 57, 7, 0,
+ 39, 17, 97, 8, 57, 97, 58, 30, 65, 8,
+ 12, 26, 57, 28, -1, 58, 57, -1, 17, 30,
+ 6, 34, 62, 30, 39, 58, 63, 64, -1, -1,
+ 62, 26, -1, 28, 20, 26, 5, 28, 63, 64,
+ 37, 10, 63, 64, 39, 63, 64, 63, 39, 63,
+ 64, 8, 48, -1, 63, 64, 79, 59, 95, 30,
+ 30, 57, 96, 65, 63, 7, 63, 64, 79, 92,
+ 30, 12, 79, 69, 26, 17, 28, 30, 12, 30,
+ 30, 92, 63, 64, 30, 92, 50, 39, 57, 8,
+ 15, 22, 23, 105, 15, 37, 22, 23, -1, 63,
+ 64, -1, 114, -1, 105, -1, 111, 112, 79, 79,
+ 35, -1, -1, 114, 35, -1, -1, 130, 59, 79,
+ -1, 92, 92, -1, 65, 59, 79, -1, 79, 79,
+ -1, 65, 92, 79, -1, 116, 18, 19, 15, 92,
+ -1, 92, 92, -1, 63, 64, 92, 15, 15, 18,
+ 19, -1, 116, 15, 111, 112, -1, -1, 35, 15,
+ 37, -1, 88, 89, 46, 47, -1, 35, 35, 37,
+ 37, 102, -1, 35, -1, 37, 102, 46, 47, 35,
+ 15, 37, -1, -1, 109, 110, 15, -1, 109, 110,
+ -1, 121, 122, 123, 124, 125, 126, -1, -1, 34,
+ 35, -1, 37, -1, -1, 34, 35, 10, 37, 24,
+ 25, -1, -1, 24, 25, -1, -1, -1, 33, 22,
+ 23, 36, 33, 38, -1, 36, -1, 38, -1, -1,
+ 10, 34, 109, 110, -1, -1, -1, 24, 25, -1,
+ -1, 109, 110, -1, -1, 32, 33, 109, 110, 36,
+ 30, 38, -1, 109, 110, -1, -1, 24, 25, -1,
+ -1, -1, 65, -1, -1, 32, 33, 18, 19, 36,
+ 30, 38, -1, -1, 109, 110, 79, 30, -1, -1,
+ 109, 110, -1, -1, -1, 88, 89, 15, -1, -1,
+ 70, 71, 72, -1, -1, 46, 47, -1, -1, 102,
+ -1, 116, 30, -1, -1, 116, 15, -1, -1, -1,
+ 70, 71, 72, -1, -1, -1, -1, 70, 71, 72,
+ -1, 30, -1, -1, -1, -1, 106, 107, 108, 116,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, 119,
+ -1, -1, 70, 71, 72, -1, 106, 107, 108, 116,
+ -1, -1, -1, 106, 107, 108, -1, 117, 118, 119,
+ 15, 70, 71, 72, 117, 118, 119, -1, -1, -1,
+ 130, -1, -1, -1, -1, 30, -1, 130, 106, 107,
+ 108, -1, -1, 30, -1, -1, -1, -1, -1, 117,
+ 118, 119, -1, -1, -1, -1, -1, 106, 107, 108,
+ -1, -1, 130, 30, -1, -1, -1, -1, 117, 118,
+ 119, -1, -1, -1, -1, 70, 71, 72, -1, -1,
+ -1, 130, -1, 70, 71, 72, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 30, -1, -1, -1, 34,
- -1, -1, -1, -1, 102, -1, 104, 105, -1, -1,
- -1, 70, 71, 72, -1, 113, 114, 115, 116, 30,
- -1, -1, -1, 34, 35, -1, -1, -1, -1, 127,
- 65, -1, -1, -1, 69, 70, 71, 72, -1, -1,
- -1, -1, -1, 102, -1, 104, 105, 30, -1, -1,
- -1, 34, 35, -1, 113, 114, 115, 116, -1, 70,
- 71, 72, -1, -1, -1, -1, -1, 102, 127, 104,
- 105, 30, -1, -1, -1, 34, 35, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, 97, 70, 71, 72,
- -1, 102, 127, 104, 105, -1, -1, -1, -1, -1,
- -1, -1, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, 70, 71, 72, 97, -1, 127, -1, -1, 102,
- -1, 104, 105, -1, -1, -1, -1, -1, -1, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 102, 127, 104, 105, -1, -1, -1,
- -1, -1, -1, -1, 113, 114, 115, 116, 30, -1,
- -1, -1, 34, 35, -1, -1, -1, -1, 127, -1,
- -1, 3, -1, 30, -1, -1, -1, 34, 35, -1,
- -1, 13, -1, -1, -1, 17, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 27, -1, 29, 70, 71,
- 72, -1, -1, -1, -1, -1, -1, -1, 40, -1,
- 42, 43, -1, 70, 71, 72, -1, -1, -1, 51,
- -1, -1, 54, 55, -1, 97, -1, -1, 60, -1,
- 102, -1, 104, 105, -1, 67, 68, -1, -1, -1,
- 97, 113, 114, 115, 116, 102, -1, 104, 105, -1,
- -1, -1, 84, 3, -1, 127, 113, 114, 115, 116,
- -1, -1, -1, 13, -1, -1, -1, 17, -1, -1,
- 127, -1, -1, -1, -1, -1, -1, 27, -1, 29,
- -1, -1, -1, 30, -1, -1, -1, 34, 35, -1,
- 40, -1, 42, 43, -1, -1, -1, -1, 30, -1,
- -1, 51, 34, 35, 54, 55, -1, -1, -1, -1,
- 60, -1, -1, -1, -1, -1, -1, 67, 68, -1,
-1, -1, -1, 70, 71, 72, -1, -1, -1, -1,
- -1, -1, -1, -1, 84, -1, -1, -1, 70, 71,
- 72, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 97, -1, -1, -1, -1, 102, -1, 104, 105, -1,
- -1, -1, -1, -1, -1, 97, 113, 114, 115, 116,
- 102, -1, 104, 105, -1, -1, -1, -1, -1, -1,
- 127, 113, 114, 115, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 127, -1, -1, 30, -1,
- -1, -1, 34, 35, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 106, 107, 108, -1, -1, -1, -1, -1, 106,
+ 107, 108, 117, 118, 119, -1, -1, -1, -1, -1,
+ 117, 118, 119, 30, -1, 130, 30, 104, -1, 106,
+ 107, 108, -1, 130, -1, -1, -1, 15, -1, 116,
+ 117, 118, 119, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 30, 130, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 70, 71, 72, 70, 71, 72, -1,
+ -1, -1, -1, -1, -1, 79, -1, 30, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 92, -1,
+ -1, -1, 70, 71, 72, 30, -1, 104, -1, 106,
+ 107, 108, 106, 107, 108, -1, -1, -1, -1, 116,
+ 117, 118, 119, 117, 118, 119, -1, 70, 71, 72,
+ -1, -1, -1, 130, -1, -1, 130, 30, 106, 107,
+ 108, -1, -1, -1, -1, 70, 71, 72, -1, 117,
+ 118, 119, -1, -1, 79, -1, -1, -1, -1, -1,
+ -1, 104, 130, 106, 107, 108, 30, 92, -1, -1,
+ -1, -1, -1, 116, 117, 118, 119, 70, 71, 72,
+ -1, 106, 107, 108, -1, -1, -1, 130, -1, -1,
+ -1, 30, 117, 118, 119, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 130, 70, 71, 72, 30,
+ -1, 104, -1, 106, 107, 108, 37, -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, -1, -1, -1, 70,
+ 71, 72, 116, 117, 118, 119, -1, -1, -1, -1,
+ -1, -1, -1, -1, 103, 104, 130, 106, 107, 108,
+ 30, -1, -1, -1, -1, 30, -1, 116, 117, 118,
+ 119, -1, 37, 104, -1, 106, 107, 108, -1, -1,
+ -1, 130, -1, -1, -1, 116, 117, 118, 119, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 130,
+ 70, 71, 72, -1, -1, 70, 71, 72, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 70, 71,
- 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, 97, -1, -1, -1, -1,
- 102, -1, 104, 105, -1, -1, -1, -1, -1, -1,
- -1, 113, 114, 115, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 127, -1, -1, 3, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 13, -1,
- -1, -1, 17, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 27, -1, 29, -1, -1, 32, -1, -1,
- -1, -1, -1, -1, -1, 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, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 84,
- -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, 114,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -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, -1, -1, -1, -1,
- -1, -1, 99, 100, -1, 102, -1, 104, 105, 106,
- 107, -1, -1, -1, -1, -1, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 127, -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, 30, -1, -1, -1, -1, -1, -1, 37, -1,
+ -1, -1, -1, -1, 104, -1, 106, 107, 108, 104,
+ -1, 106, 107, 108, -1, -1, 116, 117, 118, 119,
+ -1, 116, 117, 118, 119, -1, -1, -1, -1, -1,
+ 130, 70, 71, 72, 30, 130, -1, -1, -1, -1,
+ -1, 37, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 30, -1, -1, -1, 34, 35, 30,
+ -1, -1, -1, 34, 35, 104, -1, 106, 107, 108,
+ -1, -1, -1, -1, 70, 71, 72, 116, 117, 118,
+ 119, -1, -1, -1, 30, -1, -1, -1, 34, 35,
+ -1, 130, -1, 70, 71, 72, -1, -1, -1, 70,
+ 71, 72, -1, -1, -1, -1, -1, -1, 104, 30,
+ 106, 107, 108, 34, 35, -1, -1, -1, -1, -1,
+ 116, 117, 118, 119, 70, 71, 72, 104, -1, 106,
+ 107, 108, -1, 104, 130, 106, 107, 108, 30, 116,
+ 117, 118, 119, -1, -1, 116, 117, 118, 119, 70,
+ 71, 72, -1, 130, -1, -1, -1, -1, 104, 130,
+ 106, 107, 108, -1, -1, -1, -1, -1, -1, -1,
+ 116, 117, 118, 119, -1, -1, -1, -1, 70, 71,
+ 72, -1, -1, 104, 130, 106, 107, 108, -1, -1,
+ -1, -1, -1, 3, -1, 116, 117, 118, 119, -1,
+ -1, -1, -1, 13, -1, -1, -1, 17, -1, 130,
+ -1, 103, 104, -1, 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, -1, 104, -1, 106, 107,
+ 108, -1, -1, -1, -1, -1, -1, -1, 116, 117,
+ 118, 119, -1, -1, -1, -1, 70, 71, 72, -1,
+ 3, -1, 130, -1, -1, -1, -1, -1, -1, -1,
+ 13, -1, -1, -1, 17, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 27, -1, 29, -1, -1, -1,
+ 104, 30, 106, 107, 108, 34, -1, 40, -1, 42,
+ 43, -1, 116, 117, 118, 119, -1, -1, 51, -1,
+ -1, 54, 55, -1, -1, -1, 130, 60, -1, -1,
+ 30, -1, -1, -1, 67, 68, 65, -1, -1, -1,
+ 69, 70, 71, 72, -1, -1, -1, -1, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 63, 64, -1, -1, -1, -1, -1,
+ 70, 71, 72, -1, -1, 104, -1, 106, 107, 108,
+ -1, -1, -1, -1, -1, 3, -1, 116, 117, 118,
+ 119, -1, -1, -1, -1, 13, -1, -1, -1, 17,
+ -1, 130, -1, -1, 104, -1, 106, 107, 108, 27,
+ -1, 29, -1, -1, 32, -1, 116, 117, 118, 119,
+ -1, -1, 40, -1, 42, 43, -1, -1, -1, -1,
+ 130, -1, -1, 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, -1, -1, -1,
+ -1, -1, -1, -1, 70, 71, 72, -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, -1, -1, -1, -1, -1, -1,
- 99, 100, -1, 102, -1, 104, 105, 106, 107, -1,
- -1, -1, -1, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 127, -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, 117,
+ -1, -1, -1, 99, -1, -1, -1, -1, 104, -1,
+ 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, 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, -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,
- 91, 92, -1, -1, -1, -1, -1, -1, 99, 100,
- -1, 102, -1, 104, 105, 106, 107, -1, -1, -1,
- -1, -1, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 127, -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, 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, -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,
- -1, -1, -1, -1, -1, -1, 99, 100, -1, 102,
- -1, 104, 105, 106, 107, -1, -1, -1, -1, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -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, 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,
- -1, -1, -1, -1, 69, 70, 71, 72, -1, 74,
+ -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,
- 85, 86, 87, -1, -1, -1, -1, 92, -1, -1,
- -1, -1, -1, -1, 99, 100, -1, 102, -1, 104,
- 105, 106, 107, -1, -1, -1, -1, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -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,
+ 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, -1, -1, -1, 69, 70, 71, 72, -1, 74,
- -1, -1, -1, -1, 79, -1, -1, -1, -1, -1,
- 85, 86, 87, -1, -1, -1, -1, 92, -1, -1,
- -1, 96, -1, -1, 99, 100, -1, 102, -1, 104,
- 105, 106, 107, -1, -1, -1, -1, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -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, -1, -1, 92, -1, -1,
- -1, 96, -1, -1, 99, 100, -1, 102, -1, 104,
- 105, 106, 107, -1, -1, -1, -1, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -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, -1, -1, 92, -1, -1,
- -1, 96, -1, -1, 99, 100, -1, 102, -1, 104,
- 105, 106, 107, -1, -1, -1, -1, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -1, -1, 11, 12, 13, -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, -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, 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,
- 76, -1, 78, -1, 80, -1, -1, -1, -1, 85,
- 86, 87, -1, -1, -1, -1, 92, -1, -1, -1,
- -1, -1, -1, 99, 100, -1, 102, -1, 104, 105,
- 106, 107, -1, -1, -1, -1, -1, 113, 114, 115,
- 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 127, -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, 92, -1, -1, -1, -1,
- -1, 98, 99, 100, -1, 102, -1, 104, 105, 106,
- 107, -1, -1, -1, -1, -1, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 127, -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, 92, -1, -1, -1, -1, -1,
- 98, 99, 100, -1, 102, -1, 104, 105, 106, 107,
- -1, -1, -1, -1, -1, 113, 114, 115, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 127,
- -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, 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, 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,
- 69, 70, 71, 72, -1, 74, -1, 76, -1, 78,
- -1, 80, -1, -1, -1, -1, 85, 86, 87, -1,
- -1, -1, -1, 92, -1, -1, -1, -1, -1, 98,
- 99, 100, -1, 102, -1, 104, 105, 106, 107, -1,
- -1, -1, -1, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, -1, 125, -1, 127, -1,
- -1, 11, 12, 13, -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, -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, 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, 76, -1, 78, -1,
- 80, -1, -1, -1, -1, 85, 86, 87, -1, -1,
- -1, -1, 92, -1, -1, -1, -1, -1, 98, 99,
- 100, -1, 102, -1, 104, 105, 106, 107, -1, -1,
- -1, -1, -1, 113, 114, 115, 116, -1, -1, -1,
- -1, -1, -1, -1, 124, -1, -1, 127, -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,
+ 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,
- -1, 69, 70, 71, 72, -1, 74, -1, 76, -1,
- 78, -1, 80, -1, -1, -1, -1, 85, 86, 87,
- -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
- 98, 99, 100, -1, 102, -1, 104, 105, 106, 107,
- -1, -1, -1, -1, -1, 113, 114, 115, 116, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 127,
+ 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,
@@ -1689,10 +1818,35 @@ const short QmlJSGrammar::action_check [] = {
-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, 92, -1, -1, -1, -1, 97, 98,
- 99, 100, -1, 102, -1, 104, 105, 106, 107, -1,
- -1, -1, -1, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 127, -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, 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, -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,
@@ -1701,10 +1855,35 @@ const short QmlJSGrammar::action_check [] = {
-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, 92, -1, -1, -1, -1, 97, 98, 99,
- 100, -1, 102, -1, 104, 105, 106, 107, -1, -1,
- -1, -1, -1, 113, 114, 115, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 127, -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, 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, 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,
@@ -1713,10 +1892,23 @@ 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, 92, -1, -1, -1, -1, 97, 98, 99, 100,
- -1, 102, -1, 104, 105, 106, 107, -1, -1, -1,
- -1, -1, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 127, -1, -1, 11,
+ -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, 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,
@@ -1725,58 +1917,60 @@ const short QmlJSGrammar::action_check [] = {
-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,
- 92, -1, -1, -1, -1, -1, 98, 99, 100, -1,
- 102, -1, 104, 105, 106, 107, -1, -1, -1, -1,
- -1, 113, 114, 115, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, 127, -1, -1, 11, 12,
+ -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, 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, 70, 71, 72,
- -1, 74, -1, 76, -1, 78, -1, 80, -1, -1,
- -1, -1, 85, 86, 87, -1, -1, -1, -1, 92,
- -1, -1, -1, -1, -1, 98, 99, 100, -1, 102,
- -1, 104, 105, 106, 107, -1, -1, -1, -1, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -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, 92, -1,
- -1, -1, -1, -1, 98, 99, 100, -1, 102, -1,
- 104, 105, 106, 107, -1, -1, -1, -1, -1, 113,
- 114, 115, 116, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 127, -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,
- 92, -1, -1, -1, -1, -1, 98, 99, 100, -1,
- 102, -1, 104, 105, 106, 107, -1, -1, -1, -1,
- -1, 113, 114, 115, 116, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 127, -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, 92,
- -1, -1, -1, -1, 97, 98, 99, 100, -1, 102,
- -1, 104, 105, 106, 107, -1, -1, -1, -1, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -1, -1, 11, 12, 13,
+ -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, 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,
@@ -1784,330 +1978,353 @@ const short QmlJSGrammar::action_check [] = {
-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, 92, -1,
- -1, -1, -1, 97, 98, 99, 100, -1, 102, -1,
- 104, 105, 106, 107, -1, -1, -1, -1, -1, 113,
- 114, 115, 116, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 127, -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, 79, 80, -1, -1, -1, -1,
- 85, 86, 87, 88, 89, -1, -1, 92, -1, -1,
- -1, -1, -1, 98, 99, 100, -1, 102, -1, 104,
- 105, 106, 107, -1, -1, -1, -1, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -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, 92, -1, -1, -1,
- -1, -1, 98, 99, 100, -1, 102, -1, 104, 105,
- 106, 107, -1, -1, -1, -1, -1, 113, 114, 115,
- 116, -1, -1, -1, -1, -1, -1, -1, 124, 125,
- -1, 127, -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, 92, -1, -1, -1, -1,
- -1, 98, 99, 100, -1, 102, -1, 104, 105, 106,
- 107, -1, -1, -1, -1, -1, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, -1, -1, 124, 125, -1,
- 127, -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, -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, 90,
- 91, -1, -1, -1, -1, 96, -1, -1, 99, 100,
- 101, 102, 103, 104, 105, -1, -1, -1, -1, -1,
- 111, -1, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 127, -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, 90, 91, -1, -1, -1,
- -1, 96, -1, -1, 99, 100, 101, 102, 103, 104,
- 105, -1, -1, -1, -1, -1, 111, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -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, 90, 91, -1, -1, -1, -1, 96, -1, -1,
- 99, 100, 101, 102, 103, 104, 105, -1, -1, -1,
- -1, -1, 111, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 127, -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, 90, 91, -1,
- -1, -1, -1, 96, -1, -1, 99, 100, 101, 102,
- 103, 104, 105, -1, -1, -1, -1, -1, 111, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -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, 90, 91, -1, -1, -1, -1, 96,
- -1, -1, 99, 100, 101, 102, 103, 104, 105, -1,
- -1, -1, -1, -1, 111, -1, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 127, -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, 90,
- 91, -1, -1, -1, -1, 96, -1, -1, 99, 100,
- 101, 102, 103, 104, 105, -1, -1, -1, -1, -1,
- 111, -1, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 127, -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, 90, 91, -1, -1, -1,
- -1, 96, -1, -1, 99, 100, 101, 102, 103, 104,
- 105, -1, -1, -1, -1, -1, 111, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 127, -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, 90, 91, -1, -1, -1, -1, 96, -1, -1,
- 99, 100, 101, 102, 103, 104, 105, -1, -1, -1,
- -1, -1, 111, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 127, -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, 90, 91, -1,
- -1, -1, -1, 96, -1, -1, 99, 100, 101, 102,
- 103, 104, 105, -1, -1, -1, -1, -1, 111, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 127, -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, 90, 91, -1, -1, -1, -1, 96,
- -1, -1, 99, 100, 101, 102, 103, 104, 105, -1,
- -1, -1, -1, -1, 111, -1, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 127, -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,
+ -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,
- 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, 90,
- -1, 92, -1, -1, -1, -1, -1, 98, 99, 100,
- -1, 102, -1, 104, 105, 106, 107, -1, -1, -1,
- -1, -1, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, -1, -1, -1, 125, -1, 127, -1, -1, 4,
- -1, -1, -1, -1, 9, -1, 11, 12, 13, 14,
- -1, -1, -1, -1, -1, -1, 21, 22, 23, -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, 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, 79, 80, -1, -1, -1, -1, 85, 86, 87,
+ 88, 89, -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, 61, -1, 63, -1,
+ 55, -1, -1, -1, -1, -1, -1, -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, 90, -1, 92, -1, -1,
- -1, -1, -1, 98, 99, 100, -1, 102, -1, 104,
- 105, 106, 107, -1, -1, -1, -1, -1, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, -1, -1, 124,
- 125, -1, 127, -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, 90, -1, 92, -1, -1, -1, -1, -1, 98,
- 99, 100, -1, 102, -1, 104, 105, 106, 107, -1,
- -1, -1, -1, -1, 113, 114, 115, 116, -1, -1,
- -1, -1, -1, -1, -1, 124, 125, -1, 127, -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, 90, -1, 92,
- -1, -1, -1, -1, -1, 98, 99, 100, -1, 102,
- -1, 104, 105, 106, 107, -1, -1, -1, -1, -1,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, -1,
- -1, 124, 125, -1, 127, -1, -1,
+ -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, -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, -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, -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, -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, -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, -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,
- 15, 26, 15, 15, 186, 185, 20, 37, 15, 64,
- 187, 71, 15, 185, 20, 41, 15, 37, 20, 37,
- 55, 37, 20, 185, 20, 30, 15, 31, 15, 185,
- 187, 55, 186, 14, 194, 15, 195, 15, 199, 24,
- 26, 15, 24, 201, 214, 20, 15, 24, 20, 20,
- 20, 15, 15, 64, 76, 20, 50, 192, 26, 214,
- 175, 37, 215, 71, 37, 66, 15, 64, 178, 15,
- 37, 37, 148, 66, 69, 66, 195, 194, 66, 71,
- 185, 185, 193, 31, 15, 172, 187, 71, 31, 79,
- 31, 181, 15, 55, 55, 148, 187, 185, 198, 193,
- 50, 15, 55, 50, 87, 64, 66, 148, 66, 143,
- 89, 55, 187, 55, 71, 186, 71, 185, 55, 185,
- 187, 186, 186, 55, 186, 79, 71, 55, 66, 55,
- 55, 185, 88, 185, 195, 87, 87, 194, 187, 79,
- 187, 186, 193, 186, 71, 55, 186, 71, 187, 71,
- 89, 55, 185, 89, 89, 71, 90, 64, 71, 71,
- 55, 64, 71, 69, 66, 64, 185, 195, 79, 15,
- 15, 194, 66, 71, 71, 185, 66, 15, 111, 108,
- 71, 15, 50, 66, 46, 66, 186, 108, 89, 50,
- 199, 111, 71, 89, 66, 50, 71, 64, 128, 26,
- 66, 66, 2, 50, 51, 69, 50, 50, 51, 2,
- 66, 50, 15, 66, 2, 50, 2, 50, 15, 15,
- 50, 71, 26, -1, 50, 29, 26, 26, 50, 50,
- 20, 11, 12, 26, 71, 71, 50, 51, 26, 2,
- 26, 85, 66, 67, 94, 50, 85, 37, 71, 72,
- 26, 26, 85, 50, 50, 85, 66, 94, 94, 50,
- 51, 50, 51, 26, 130, 130, 50, 51, 2, 71,
- 2, 73, 50, 51, 130, 2, 50, 130, 50, 198,
- 85, 50, 199, 201, 50, 51, 201, 20, 50, 51,
- 2, 50, 26, 66, 26, 50, 51, 50, 51, 26,
- 2, 26, 2, -1, 37, 50, 170, 26, 82, 81,
- 50, 51, 81, 50, 26, 50, 51, 217, 218, -1,
- 130, 148, 81, 46, 26, 48, 26, 98, 50, 51,
- 50, 51, 50, 51, 105, -1, 81, 82, -1, 50,
- 51, 81, 50, 51, 50, 51, 50, 51, 85, 50,
- 51, 150, 50, 51, 50, 51, 3, 130, 50, 51,
- 50, 51, -1, 50, 51, 200, 50, 50, 51, 50,
- 51, 50, 51, 149, 200, 150, 50, 51, 200, 50,
- 51, 65, 40, 41, 205, 43, 50, 85, 50, 51,
- 50, 51, 67, 68, 50, 51, 71, 50, 51, 50,
- 51, 65, 50, 51, 50, 3, 50, -1, 74, 74,
- 50, 51, 17, 50, 98, -1, 139, -1, -1, 65,
- 191, 65, 74, -1, 2, 150, 50, 51, 65, 164,
- -1, 150, 98, 98, 98, 50, -1, 85, 102, 105,
- 105, 50, 164, 67, -1, 50, 98, -1, 26, 50,
- 51, 98, 98, 105, 98, -1, 65, 101, 105, 105,
- 65, 98, 77, 164, 184, 102, 81, 82, 164, 50,
- 51, 74, -1, 184, 74, 50, 184, 164, 184, -1,
- 184, 164, 50, -1, 50, 51, 91, 17, 225, 98,
- 65, 210, 101, -1, -1, 98, -1, 65, 98, -1,
- 98, 219, 105, 184, 164, 105, -1, 105, 198, -1,
- 184, -1, 74, 184, 193, 81, 50, 51, 171, 50,
- 50, 74, 162, 98, 164, 191, 191, 219, 184, 74,
- 98, 74, -1, 67, 65, 65, 98, 188, 46, 191,
- 50, 51, 117, 105, 191, 98, -1, 171, -1, 50,
- 50, 119, 105, 98, -1, 98, -1, 219, -1, 160,
- 105, 91, 105, 164, 65, 65, 40, 98, -1, 43,
- 44, 45, 50, 221, 50, 50, -1, 50, -1, 50,
- 161, -1, 113, 164, 50, 51, -1, 65, 191, 65,
- 65, 191, 65, 191, 65, 50, -1, 98, 98, -1,
- -1, 67, 68, 169, -1, -1, 106, 17, 17, 50,
- 65, -1, 21, -1, 115, -1, -1, 50, -1, -1,
- 98, 50, 98, 98, 65, 98, 104, 98, 104, 191,
- 105, 104, 65, 141, 105, 143, 65, 171, 191, -1,
- 50, 50, -1, 98, 99, 100, 191, -1, 191, 50,
- 160, -1, -1, 50, 164, 65, 65, 98, 99, 100,
- -1, 50, 3, -1, 65, 98, 99, 100, 65, 98,
- 99, 100, 50, -1, -1, 183, 65, 50, -1, -1,
- 17, 91, 91, 50, 50, 95, 17, 65, 25, 197,
- 21, -1, 65, -1, -1, -1, 17, 98, 65, 65,
- 21, 98, 99, 100, -1, 171, -1, 17, 109, 98,
- 99, 100, -1, 50, -1, 25, -1, -1, 50, 50,
- 98, 99, 100, -1, -1, 98, 99, 100, 65, 50,
- 50, 98, 98, 65, 65, 50, 50, -1, 105, 105,
- 50, 107, 17, 110, 65, 65, 21, -1, 23, -1,
- 65, 65, -1, -1, 91, 65, -1, 98, -1, -1,
- 91, -1, -1, -1, 105, -1, 98, -1, -1, 17,
- 91, -1, -1, 105, -1, -1, -1, 25, 98, 17,
- -1, 91, 114, 98, 98, 105, 4, 25, -1, -1,
- 105, 105, 112, -1, -1, -1, 71, 72, 17, 17,
- -1, 116, 50, -1, 118, 53, 25, 25, -1, -1,
- 151, 152, 50, -1, -1, 53, -1, 65, -1, -1,
- 17, 4, -1, -1, -1, -1, 50, 65, 25, 48,
- 48, 50, 50, 30, 17, 32, 33, 34, 35, 36,
- -1, 65, 25, 91, 17, -1, 65, 65, -1, -1,
- 191, -1, 25, 91, -1, -1, -1, 30, -1, 32,
- 33, 34, 35, 36, -1, 48, -1, 50, -1, -1,
- 17, -1, 91, 91, 98, 99, 100, -1, 25, -1,
- -1, -1, 65, 30, -1, 32, 33, 34, 35, 36,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 91, -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, 183, 183, -1, -1, -1, -1,
+ 86, 206, 205, 196, 206, 205, 196, 78, 20, 15,
+ 204, 78, 198, 76, 197, 15, 196, 62, 71, 198,
+ 197, 196, 62, 20, 120, 212, 115, 71, 212, 15,
+ 71, 15, 210, 71, 210, 209, 14, 24, 15, 24,
+ 43, 78, 97, 73, 20, 197, 57, 43, 20, 15,
+ 15, 139, 15, 115, 15, 15, 120, 73, 57, 47,
+ 15, 71, 32, 96, 86, 78, 73, 62, 73, 15,
+ 225, 20, 73, 226, 78, 37, 43, 192, 37, 37,
+ 15, 20, 159, 159, 78, 186, 189, 15, 62, 203,
+ 73, 73, 196, 198, 15, 197, 43, 78, 196, 205,
+ 210, 196, 15, 212, 73, 196, 206, 206, 205, 62,
+ 24, 204, 32, 198, 71, 197, 196, 62, 225, 198,
+ 62, 62, 197, 196, 198, 197, 15, 197, 196, 198,
+ 15, 43, 20, 20, 71, 73, 86, 62, 57, 73,
+ 71, 20, 78, 209, 196, 78, 78, 204, 78, 78,
+ 15, 78, 15, 15, 78, 78, 47, 43, 57, 57,
+ 76, 83, 62, 36, 15, 62, 159, 37, 78, 62,
+ 96, 32, 196, 198, 197, 24, 94, 86, 62, 96,
+ 95, 62, 62, 94, 198, 15, 78, 196, 96, 197,
+ 73, 96, 96, 20, 47, 73, 78, 43, 15, 15,
+ 57, 78, 15, 183, 73, 20, 43, 2, 2, 32,
+ 2, 32, 76, 73, 73, 57, 2, 57, 58, 57,
+ 78, 2, 80, 57, 58, 57, 58, 20, 78, 79,
+ 78, 78, 73, 74, 11, 12, 32, 32, 32, 35,
+ 32, 2, 78, 57, 73, 73, 32, 32, 73, 15,
+ 43, 32, 20, 101, 101, 15, 32, 2, 57, 58,
+ 154, 73, 2, 2, 53, 101, 57, 58, 2, 57,
+ 58, 32, 2, 57, 2, 43, -1, 57, 92, 57,
+ 58, 141, 141, 57, 58, 57, 32, 32, 228, 229,
+ 57, 57, 32, 32, 57, 58, -1, 57, 32, 57,
+ 194, 57, 32, 57, 32, 57, 58, 57, 92, 57,
+ 58, -1, 141, 141, 57, 57, 141, 181, -1, 57,
+ 92, 88, 57, 58, 57, 58, 105, 74, 75, 141,
+ 88, 78, 88, 112, 72, 89, 57, 58, 161, 160,
+ 57, 58, 92, 57, 58, 57, 58, 57, 58, 57,
+ 92, 57, 58, 57, 58, 57, 58, 57, 58, 57,
+ 58, 57, 58, 32, 57, 58, 57, 105, -1, 211,
+ 57, 58, 53, 211, 55, 15, 161, 57, 58, -1,
+ 88, 89, -1, 159, 57, 58, 57, 58, -1, 46,
+ 47, -1, 88, 50, 57, 58, 57, 58, 57, 58,
+ -1, 92, 57, 58, 81, 194, 57, 58, 57, 58,
+ 57, 57, 92, 57, 58, 161, 57, 58, 57, 57,
+ 57, 58, -1, 202, 57, 58, 72, -1, 105, 81,
+ 57, 211, 57, 72, 72, 112, -1, 84, 57, 58,
+ -1, 88, 89, -1, -1, 72, 46, 72, 57, 182,
+ 50, 51, 52, 105, -1, 92, 57, 3, 175, 105,
+ 112, 57, -1, 72, 57, 58, 105, 105, -1, 150,
+ 81, 72, 57, 216, 195, 175, 72, 175, 105, 81,
+ 105, 195, 175, 195, 130, 195, 111, 72, 126, 128,
+ -1, 195, 161, 195, 105, 230, 105, 124, 17, -1,
+ -1, 112, 111, 105, 105, 57, 58, 108, 195, 105,
+ 112, 53, 175, 194, 175, 111, 57, 57, 57, 58,
+ 105, -1, 74, 3, 230, 202, 175, -1, 199, 57,
+ 171, 72, 72, 118, 175, 74, 195, 81, 57, 172,
+ 195, -1, 175, 81, 72, 236, -1, 17, -1, -1,
+ 202, -1, 221, 72, 173, 57, 175, 230, 209, 105,
+ 204, 105, 57, 58, 105, 105, 112, 105, 112, 57,
+ 72, 112, 112, 81, 112, 81, -1, 105, 171, 98,
+ 108, 57, 175, -1, 72, 81, 57, 57, -1, -1,
+ 57, 202, -1, 88, -1, 232, 72, 105, 57, 105,
+ 202, 72, 72, 105, 112, 72, 112, 109, -1, 105,
+ 152, 57, 154, 72, -1, -1, 112, 105, -1, -1,
+ 57, 109, 57, -1, -1, 105, 72, -1, 98, 105,
+ 182, -1, 112, 57, 105, 72, 112, 72, 105, 106,
+ 107, -1, 113, 182, -1, -1, 105, 57, 72, 17,
+ 57, -1, 194, -1, -1, 3, 202, 17, 202, 105,
+ 106, 107, 72, 122, 202, 72, 208, 27, 105, 57,
+ 105, 106, 107, -1, 17, 112, -1, -1, 57, -1,
+ -1, 105, 106, 107, 72, 180, -1, 30, -1, 57,
+ 127, -1, 57, 72, 202, 105, 202, 57, 105, 106,
+ 107, 57, 112, 17, 72, 57, 202, 72, -1, -1,
+ 57, 58, 72, 27, 57, 125, 72, 105, -1, -1,
+ 72, 57, 202, -1, 112, -1, 105, 74, 75, 72,
+ 98, 119, 57, 112, 102, 114, 72, -1, 98, 57,
+ 105, 106, 107, 57, -1, -1, 17, 72, 57, 105,
+ 106, 107, 17, 105, 72, 98, 27, 105, 72, -1,
+ 112, -1, 17, 72, 112, 30, -1, -1, -1, 105,
+ 25, 123, 27, -1, -1, -1, 112, -1, -1, 17,
+ 105, 106, 107, -1, 98, -1, 57, 105, -1, 27,
+ -1, 29, 57, 129, 112, -1, 105, 106, 107, -1,
+ -1, 72, 57, 121, -1, 17, 36, 72, 38, 39,
+ 40, 41, 42, 17, 162, 163, 17, 72, 30, -1,
+ -1, 17, -1, 17, 4, -1, 30, 98, -1, 30,
+ 26, 27, -1, 98, -1, 182, 30, 17, -1, -1,
+ 78, 79, -1, 98, -1, 57, -1, -1, 60, -1,
+ 30, 55, -1, 57, 202, -1, 57, 4, -1, 60,
+ 72, 57, -1, 57, -1, -1, 60, -1, 72, -1,
+ 17, 72, -1, -1, 17, 55, 72, 57, 72, -1,
+ -1, -1, 25, 30, -1, -1, 98, 30, 31, -1,
+ -1, -1, 72, -1, 98, -1, -1, 98, 17, -1,
+ -1, -1, 98, -1, 98, -1, -1, -1, 55, -1,
+ 57, 30, 55, 17, 57, -1, -1, 36, 98, 38,
+ 39, 40, 41, 42, -1, 72, 30, -1, -1, 72,
+ -1, -1, 36, -1, 38, 39, 40, 41, 42, 17,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 98, 30, -1, -1, 98, -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, -1, -1, -1, -1, -1, -1, -1, -1,
- 183, -1, -1, 30, -1, 32, 33, 34, 35, 36,
-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, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 57, -1, -1, 60, -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,
@@ -2121,7 +2338,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
};
-QT_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljsgrammar_p.h b/src/libs/qmljs/parser/qmljsgrammar_p.h
index e3d69b3603..ca006cfd96 100644
--- a/src/libs/qmljs/parser/qmljsgrammar_p.h
+++ b/src/libs/qmljs/parser/qmljsgrammar_p.h
@@ -3,9 +3,8 @@
** Copyright (C) 2016 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
@@ -22,84 +21,69 @@
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
+***************************************************************************/
// This file was generated by qlalr - DO NOT EDIT!
#ifndef QMLJSGRAMMAR_P_H
#define QMLJSGRAMMAR_P_H
-
#include "qmljsglobal_p.h"
-QT_BEGIN_NAMESPACE
-
class QML_PARSER_EXPORT QmlJSGrammar
{
public:
enum VariousConstants {
EOF_SYMBOL = 0,
- REDUCE_HERE = 128,
+ REDUCE_HERE = 131,
T_AND = 1,
T_AND_AND = 2,
T_AND_EQ = 3,
- T_ARROW = 95,
- T_AS = 113,
+ T_ARROW = 96,
+ T_AS = 116,
+ T_AT = 90,
T_AUTOMATIC_SEMICOLON = 64,
T_BREAK = 4,
T_CASE = 5,
T_CATCH = 6,
- T_CLASS = 100,
+ T_CLASS = 102,
T_COLON = 7,
T_COMMA = 8,
- T_COMMENT = 93,
- T_COMPATIBILITY_SEMICOLON = 94,
+ T_COMMENT = 94,
+ T_COMPATIBILITY_SEMICOLON = 95,
+ T_COMPONENT = 108,
T_CONST = 88,
T_CONTINUE = 9,
- T_DEBUGGER = 90,
+ T_DEBUGGER = 91,
T_DEFAULT = 10,
T_DELETE = 11,
T_DIVIDE_ = 12,
T_DIVIDE_EQ = 13,
T_DO = 14,
T_DOT = 15,
- T_ELLIPSIS = 97,
+ T_ELLIPSIS = 99,
T_ELSE = 16,
- T_ENUM = 96,
+ T_ENUM = 98,
T_EQ = 17,
T_EQ_EQ = 18,
T_EQ_EQ_EQ = 19,
- T_ERROR = 117,
- T_EXPORT = 103,
- T_EXTENDS = 101,
+ T_ERROR = 120,
+ T_EXPORT = 105,
+ T_EXTENDS = 103,
T_FALSE = 87,
- T_FEED_JS_EXPRESSION = 121,
- T_FEED_JS_MODULE = 123,
- T_FEED_JS_SCRIPT = 122,
- T_FEED_JS_STATEMENT = 120,
- T_FEED_UI_OBJECT_MEMBER = 119,
- T_FEED_UI_PROGRAM = 118,
+ 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_FINALLY = 20,
T_FOR = 21,
- T_FORCE_BLOCK = 125,
- T_FORCE_DECLARATION = 124,
- T_FOR_LOOKAHEAD_OK = 126,
- T_FROM = 104,
+ T_FORCE_BLOCK = 128,
+ T_FORCE_DECLARATION = 127,
+ T_FOR_LOOKAHEAD_OK = 129,
+ T_FROM = 106,
T_FUNCTION = 23,
T_FUNCTION_STAR = 22,
T_GE = 24,
- T_GET = 115,
+ T_GET = 118,
T_GT = 25,
T_GT_GT = 26,
T_GT_GT_EQ = 27,
@@ -107,7 +91,7 @@ public:
T_GT_GT_GT_EQ = 29,
T_IDENTIFIER = 30,
T_IF = 31,
- T_IMPORT = 111,
+ T_IMPORT = 114,
T_IN = 32,
T_INSTANCEOF = 33,
T_LBRACE = 34,
@@ -121,50 +105,51 @@ public:
T_MINUS = 41,
T_MINUS_EQ = 42,
T_MINUS_MINUS = 43,
- T_MULTILINE_STRING_LITERAL = 92,
+ T_MULTILINE_STRING_LITERAL = 93,
T_NEW = 44,
T_NOT = 45,
T_NOT_EQ = 46,
T_NOT_EQ_EQ = 47,
- T_NO_SUBSTITUTION_TEMPLATE = 106,
+ T_NO_SUBSTITUTION_TEMPLATE = 109,
T_NULL = 85,
T_NUMERIC_LITERAL = 48,
- T_OF = 114,
- T_ON = 127,
+ T_OF = 117,
+ T_ON = 130,
T_OR = 49,
T_OR_EQ = 51,
T_OR_OR = 52,
T_PLUS = 53,
T_PLUS_EQ = 54,
T_PLUS_PLUS = 55,
- T_PRAGMA = 112,
+ T_PRAGMA = 115,
T_PROPERTY = 70,
- T_PUBLIC = 110,
+ T_PUBLIC = 113,
T_QUESTION = 56,
+ T_QUESTION_QUESTION = 97,
T_RBRACE = 57,
T_RBRACKET = 58,
T_READONLY = 72,
T_REMAINDER = 59,
T_REMAINDER_EQ = 60,
- T_REQUIRED = 105,
- T_RESERVED_WORD = 91,
+ T_REQUIRED = 107,
+ T_RESERVED_WORD = 92,
T_RETURN = 61,
T_RPAREN = 62,
T_SEMICOLON = 63,
- T_SET = 116,
+ T_SET = 119,
T_SIGNAL = 71,
T_STAR = 65,
T_STAR_EQ = 68,
T_STAR_STAR = 66,
T_STAR_STAR_EQ = 67,
- T_STATIC = 102,
+ T_STATIC = 104,
T_STRING_LITERAL = 69,
- T_SUPER = 99,
+ T_SUPER = 101,
T_SWITCH = 73,
- T_TEMPLATE_HEAD = 107,
- T_TEMPLATE_MIDDLE = 108,
- T_TEMPLATE_TAIL = 109,
- T_THEN = 129,
+ T_TEMPLATE_HEAD = 110,
+ T_TEMPLATE_MIDDLE = 111,
+ T_TEMPLATE_TAIL = 112,
+ T_THEN = 132,
T_THIS = 74,
T_THROW = 75,
T_TILDE = 76,
@@ -176,24 +161,31 @@ public:
T_VOID = 80,
T_WHILE = 81,
T_WITH = 82,
+ T_WITHOUTAS = 133,
T_XOR = 83,
T_XOR_EQ = 84,
- T_YIELD = 98,
+ T_YIELD = 100,
- ACCEPT_STATE = 1055,
- RULE_COUNT = 591,
- STATE_COUNT = 1056,
- TERMINAL_COUNT = 130,
- NON_TERMINAL_COUNT = 227,
+ ACCEPT_STATE = 1098,
+ RULE_COUNT = 616,
+ STATE_COUNT = 1099,
+ TERMINAL_COUNT = 134,
+ NON_TERMINAL_COUNT = 238,
- GOTO_INDEX_OFFSET = 1056,
- GOTO_INFO_OFFSET = 6757,
- GOTO_CHECK_OFFSET = 6757
+ GOTO_INDEX_OFFSET = 1099,
+ GOTO_INFO_OFFSET = 6942,
+ GOTO_CHECK_OFFSET = 6942
};
static const char *const spell[];
static const short lhs[];
static const short rhs[];
+
+#ifndef QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO
+ static const int rule_index[];
+ static const int rule_info[];
+#endif // QLALR_NO_QMLJSGRAMMAR_DEBUG_INFO
+
static const short goto_default[];
static const short action_default[];
static const short action_index[];
@@ -221,6 +213,5 @@ public:
};
-QT_END_NAMESPACE
#endif // QMLJSGRAMMAR_P_H
diff --git a/src/libs/qmljs/parser/qmljskeywords_p.h b/src/libs/qmljs/parser/qmljskeywords_p.h
index c59cab8325..4db12677a8 100644
--- a/src/libs/qmljs/parser/qmljskeywords_p.h
+++ b/src/libs/qmljs/parser/qmljskeywords_p.h
@@ -821,6 +821,25 @@ static inline int classify9(const QChar *s, int parseModeFlags) {
}
}
}
+ else if (s[0].unicode() == 'c') {
+ if (s[1].unicode() == 'o') {
+ if (s[2].unicode() == 'm') {
+ if (s[3].unicode() == 'p') {
+ if (s[4].unicode() == 'o') {
+ if (s[5].unicode() == 'n') {
+ if (s[6].unicode() == 'e') {
+ if (s[7].unicode() == 'n') {
+ if (s[8].unicode() == 't') {
+ return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_COMPONENT) : int(Lexer::T_IDENTIFIER);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
return Lexer::T_IDENTIFIER;
}
diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp
index 2af11acb76..58613159d3 100644
--- a/src/libs/qmljs/parser/qmljslexer.cpp
+++ b/src/libs/qmljs/parser/qmljslexer.cpp
@@ -25,17 +25,19 @@
#include "qmljslexer_p.h"
#include "qmljsengine_p.h"
-#include "qmljsmemorypool_p.h"
#include "qmljskeywords_p.h"
+#include "qmljs/parser/qmljsdiagnosticmessage_p.h"
+#include "qmljs/parser/qmljsmemorypool_p.h"
+
#include <QtCore/qcoreapplication.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qdebug.h>
#include <QtCore/QScopedValueRollback>
-QT_BEGIN_NAMESPACE
+QT_QML_BEGIN_NAMESPACE
Q_CORE_EXPORT double qstrtod(const char *s00, char const **se, bool *ok);
-QT_END_NAMESPACE
+QT_QML_END_NAMESPACE
using namespace QmlJS;
@@ -564,7 +566,14 @@ again:
case ']': return T_RBRACKET;
case '[': return T_LBRACKET;
- case '?': return T_QUESTION;
+ case '?': {
+ if (_char == QLatin1Char('?')) {
+ scanChar();
+ return T_QUESTION_QUESTION;
+ }
+
+ return T_QUESTION;
+ }
case '>':
if (_char == QLatin1Char('>')) {
@@ -696,6 +705,8 @@ again:
case ')': return T_RPAREN;
case '(': return T_LPAREN;
+ case '@': return T_AT;
+
case '&':
if (_char == QLatin1Char('=')) {
scanChar();
diff --git a/src/libs/qmljs/parser/qmljslexer_p.h b/src/libs/qmljs/parser/qmljslexer_p.h
index 24edb72c25..2a4388adad 100644
--- a/src/libs/qmljs/parser/qmljslexer_p.h
+++ b/src/libs/qmljs/parser/qmljslexer_p.h
@@ -36,8 +36,8 @@
// We mean it.
//
-#include "qmljsglobal_p.h"
-#include "qmljsgrammar_p.h"
+#include "qmljs/parser/qmljsglobal_p.h"
+#include "qmljs/parser/qmljsgrammar_p.h"
#include <QtCore/qstring.h>
#include <QtCore/qstack.h>
diff --git a/src/libs/qmljs/parser/qmljsmemorypool_p.h b/src/libs/qmljs/parser/qmljsmemorypool_p.h
index 4c5ec5c310..c1e0726169 100644
--- a/src/libs/qmljs/parser/qmljsmemorypool_p.h
+++ b/src/libs/qmljs/parser/qmljsmemorypool_p.h
@@ -37,8 +37,6 @@
//
#include "qmljsglobal_p.h"
-
-#include <QtCore/qglobal.h>
#include <QtCore/qshareddata.h>
#include <QtCore/qdebug.h>
@@ -50,7 +48,7 @@ namespace QmlJS {
class Managed;
-class QML_PARSER_EXPORT MemoryPool : public QSharedData
+class MemoryPool : public QSharedData
{
MemoryPool(const MemoryPool &other);
void operator =(const MemoryPool &other);
@@ -73,7 +71,7 @@ public:
inline void *allocate(size_t size)
{
- size = (size + 7) & ~7;
+ size = (size + 7) & ~size_t(7);
if (Q_LIKELY(_ptr && (_ptr + size < _end))) {
void *addr = _ptr;
_ptr += size;
@@ -89,6 +87,8 @@ public:
}
template <typename Tp> Tp *New() { return new (this->allocate(sizeof(Tp))) Tp(); }
+ template <typename Tp, typename... Ta> Tp *New(Ta... args)
+ { return new (this->allocate(sizeof(Tp))) Tp(args...); }
QStringRef newString(const QString &string) {
strings.append(new QString(string));
@@ -98,7 +98,9 @@ public:
private:
Q_NEVER_INLINE void *allocate_helper(size_t size)
{
- Q_ASSERT(size < BLOCK_SIZE);
+ size_t currentBlockSize = DEFAULT_BLOCK_SIZE;
+ while (Q_UNLIKELY(size >= currentBlockSize))
+ currentBlockSize *= 2;
if (++_blockCount == _allocatedBlocks) {
if (! _allocatedBlocks)
@@ -106,7 +108,7 @@ private:
else
_allocatedBlocks *= 2;
- _blocks = (char **) realloc(_blocks, sizeof(char *) * _allocatedBlocks);
+ _blocks = reinterpret_cast<char **>(realloc(_blocks, sizeof(char *) * size_t(_allocatedBlocks)));
Q_CHECK_PTR(_blocks);
for (int index = _blockCount; index < _allocatedBlocks; ++index)
@@ -116,12 +118,12 @@ private:
char *&block = _blocks[_blockCount];
if (! block) {
- block = (char *) malloc(BLOCK_SIZE);
+ block = reinterpret_cast<char *>(malloc(currentBlockSize));
Q_CHECK_PTR(block);
}
_ptr = block;
- _end = _ptr + BLOCK_SIZE;
+ _end = _ptr + currentBlockSize;
void *addr = _ptr;
_ptr += size;
@@ -138,12 +140,12 @@ private:
enum
{
- BLOCK_SIZE = 8 * 1024,
+ DEFAULT_BLOCK_SIZE = 8 * 1024,
DEFAULT_BLOCK_COUNT = 8
};
};
-class QML_PARSER_EXPORT Managed
+class Managed
{
Q_DISABLE_COPY(Managed)
public:
diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp
index 694ca208cc..fdc442694a 100644
--- a/src/libs/qmljs/parser/qmljsparser.cpp
+++ b/src/libs/qmljs/parser/qmljsparser.cpp
@@ -1,13 +1,10 @@
-
-#line 131 "qmljs.g"
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the QtQml module of the Qt Toolkit.
+** This file is part of Qt Creator.
**
-** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
@@ -16,33 +13,21 @@
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
+#line 172 "qmljs.g"
-#include "qmljsengine_p.h"
-#include "qmljslexer_p.h"
-#include "qmljsast_p.h"
-#include "qmljsmemorypool_p.h"
+#include "qmljs/parser/qmljsengine_p.h"
+#include "qmljs/parser/qmljslexer_p.h"
+#include "qmljs/parser/qmljsast_p.h"
+#include "qmljs/parser/qmljsmemorypool_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qcoreapplication.h>
@@ -50,7 +35,7 @@
#include <string.h>
-#line 489 "qmljs.g"
+#line 493 "qmljs.g"
#include "qmljsparser_p.h"
@@ -84,7 +69,7 @@ void Parser::reallocateStack()
sym_stack = reinterpret_cast<Value*> (realloc(sym_stack, stack_size * sizeof(Value)));
state_stack = reinterpret_cast<int*> (realloc(state_stack, stack_size * sizeof(int)));
- location_stack = reinterpret_cast<AST::SourceLocation*> (realloc(location_stack, stack_size * sizeof(AST::SourceLocation)));
+ location_stack = reinterpret_cast<SourceLocation*> (realloc(location_stack, stack_size * sizeof(SourceLocation)));
string_stack.resize(stack_size);
rawString_stack.resize(stack_size);
}
@@ -104,9 +89,9 @@ Parser::~Parser()
}
}
-static inline AST::SourceLocation location(Lexer *lexer)
+static inline SourceLocation location(Lexer *lexer)
{
- AST::SourceLocation loc;
+ SourceLocation loc;
loc.offset = lexer->tokenOffset();
loc.length = lexer->tokenLength();
loc.startLine = lexer->tokenStartLine();
@@ -117,7 +102,7 @@ static inline AST::SourceLocation location(Lexer *lexer)
AST::UiQualifiedId *Parser::reparseAsQualifiedId(AST::ExpressionNode *expr)
{
QVarLengthArray<QStringRef, 4> nameIds;
- QVarLengthArray<AST::SourceLocation, 4> locations;
+ QVarLengthArray<SourceLocation, 4> locations;
AST::ExpressionNode *it = expr;
while (AST::FieldMemberExpression *m = AST::cast<AST::FieldMemberExpression *>(it)) {
@@ -272,85 +257,85 @@ bool Parser::parse(int startToken)
switch (r) {
-#line 716 "qmljs.g"
+#line 720 "qmljs.g"
case 0: {
sym(1).Node = sym(2).Node;
program = sym(1).Node;
} break;
-#line 724 "qmljs.g"
+#line 728 "qmljs.g"
case 1: {
sym(1).Node = sym(2).Node;
program = sym(1).Node;
} break;
-#line 732 "qmljs.g"
+#line 736 "qmljs.g"
case 2: {
sym(1).Node = sym(2).Node;
program = sym(1).Node;
} break;
-#line 740 "qmljs.g"
+#line 744 "qmljs.g"
case 3: {
sym(1).Node = sym(2).Node;
program = sym(1).Node;
} break;
-#line 748 "qmljs.g"
+#line 752 "qmljs.g"
case 4: {
sym(1).Node = sym(2).Node;
program = sym(1).Node;
} break;
-#line 756 "qmljs.g"
+#line 760 "qmljs.g"
case 5: {
sym(1).Node = sym(2).Node;
program = sym(1).Node;
} break;
-#line 765 "qmljs.g"
+#line 769 "qmljs.g"
case 6: {
sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiHeaderItemList, sym(2).UiObjectMemberList->finish());
} break;
-#line 773 "qmljs.g"
+#line 777 "qmljs.g"
case 8: {
sym(1).Node = sym(1).UiHeaderItemList->finish();
} break;
-#line 780 "qmljs.g"
+#line 784 "qmljs.g"
case 9: {
sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiPragma);
} break;
-#line 787 "qmljs.g"
+#line 791 "qmljs.g"
case 10: {
sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiImport);
} break;
-#line 794 "qmljs.g"
+#line 798 "qmljs.g"
case 11: {
sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiPragma);
} break;
-#line 801 "qmljs.g"
+#line 805 "qmljs.g"
case 12: {
sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiImport);
} break;
-#line 813 "qmljs.g"
+#line 817 "qmljs.g"
case 16: {
AST::UiPragma *pragma = new (pool) AST::UiPragma(stringRef(2));
@@ -359,13 +344,13 @@ bool Parser::parse(int startToken)
sym(1).Node = pragma;
} break;
-#line 825 "qmljs.g"
+#line 829 "qmljs.g"
case 18: {
sym(1).UiImport->semicolonToken = loc(2);
} break;
-#line 832 "qmljs.g"
+#line 836 "qmljs.g"
case 19: {
auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval, sym(3).dval);
@@ -374,7 +359,7 @@ bool Parser::parse(int startToken)
sym(1).UiVersionSpecifier = version;
} break;
-#line 843 "qmljs.g"
+#line 847 "qmljs.g"
case 20: {
auto version = new (pool) AST::UiVersionSpecifier(sym(1).dval, 0);
@@ -382,36 +367,24 @@ bool Parser::parse(int startToken)
sym(1).UiVersionSpecifier = version;
} break;
-#line 852 "qmljs.g"
+#line 856 "qmljs.g"
case 21: {
- auto versionToken = loc(2);
- auto version = sym(2).UiVersionSpecifier;
- sym(1).UiImport->version = version;
- if (version->minorToken.isValid()) {
- versionToken.length += version->minorToken.length + (version->minorToken.offset - versionToken.offset - versionToken.length);
- }
- sym(1).UiImport->versionToken = versionToken;
+ sym(1).UiImport->version = sym(2).UiVersionSpecifier;
sym(1).UiImport->semicolonToken = loc(3);
} break;
-#line 866 "qmljs.g"
+#line 864 "qmljs.g"
case 22: {
- auto versionToken = loc(2);
- auto version = sym(2).UiVersionSpecifier;
- sym(1).UiImport->version = version;
- if (version->minorToken.isValid()) {
- versionToken.length += version->minorToken.length + (version->minorToken.offset - versionToken.offset - versionToken.length);
- }
- sym(1).UiImport->versionToken = versionToken;
+ sym(1).UiImport->version = sym(2).UiVersionSpecifier;
sym(1).UiImport->asToken = loc(3);
sym(1).UiImport->importIdToken = loc(4);
sym(1).UiImport->importId = stringRef(4);
sym(1).UiImport->semicolonToken = loc(5);
} break;
-#line 878 "qmljs.g"
+#line 875 "qmljs.g"
case 23: {
sym(1).UiImport->asToken = loc(2);
@@ -420,7 +393,7 @@ bool Parser::parse(int startToken)
sym(1).UiImport->semicolonToken = loc(4);
} break;
-#line 888 "qmljs.g"
+#line 885 "qmljs.g"
case 24: {
AST::UiImport *node = 0;
@@ -445,73 +418,142 @@ bool Parser::parse(int startToken)
}
} break;
-#line 914 "qmljs.g"
+#line 911 "qmljs.g"
case 25: {
sym(1).Node = nullptr;
} break;
-#line 921 "qmljs.g"
+#line 918 "qmljs.g"
case 26: {
sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
} break;
-#line 928 "qmljs.g"
+#line 925 "qmljs.g"
case 27: {
- sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
+ AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1));
+ node->identifierToken = loc(1);
+ sym(1).Node = node;
} break;
-#line 935 "qmljs.g"
+#line 934 "qmljs.g"
case 28: {
- AST::UiObjectMemberList *node = new (pool) AST:: UiObjectMemberList(sym(1).UiObjectMemberList, sym(2).UiObjectMember);
+ 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 943 "qmljs.g"
+#line 944 "qmljs.g"
case 29: {
+ if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(1).Expression)) {
+ sym(1).UiQualifiedId = qualifiedId;
+ } else {
+ sym(1).UiQualifiedId = 0;
+
+ diagnostic_messages.append(compileError(loc(1),
+ QLatin1String("Expected a qualified name id")));
+
+ return false;
+ }
+ AST::UiAnnotation *node = new (pool) AST::UiAnnotation(sym(1).UiQualifiedId, sym(2).UiObjectInitializer);
+ sym(1).Node = node;
+ } break;
+
+#line 962 "qmljs.g"
+
+case 30: {
+ sym(1).Node = sym(2).Node;
+} break;
+
+#line 970 "qmljs.g"
+
+ case 31: {
+ sym(1).Node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotation);
+ } break;
+
+#line 977 "qmljs.g"
+
+ case 32: {
+ AST::UiAnnotationList *node = new (pool) AST::UiAnnotationList(sym(1).UiAnnotationList, sym(2).UiAnnotation);
+ sym(1).Node = node;
+ } break;
+
+#line 985 "qmljs.g"
+
+ case 33: {
+ AST::UiObjectDefinition *node = sym(2).UiObjectDefinition;
+ node->annotations = sym(1).UiAnnotationList->finish();
+ sym(1).Node = node;
+ } break;
+
+#line 996 "qmljs.g"
+
+ case 35: {
+ sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
+ } break;
+
+#line 1003 "qmljs.g"
+
+ case 36: {
+ AST::UiObjectMemberList *node = new (pool) AST:: UiObjectMemberList(sym(1).UiObjectMemberList, sym(2).UiObjectMember);
+ sym(1).Node = node;
+ } break;
+
+#line 1011 "qmljs.g"
+
+ case 37: {
sym(1).Node = new (pool) AST::UiArrayMemberList(sym(1).UiObjectMember);
} break;
-#line 950 "qmljs.g"
+#line 1018 "qmljs.g"
- case 30: {
+ case 38: {
AST::UiArrayMemberList *node = new (pool) AST::UiArrayMemberList(sym(1).UiArrayMemberList, sym(3).UiObjectMember);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-#line 959 "qmljs.g"
+#line 1027 "qmljs.g"
- case 31: {
+ case 39: {
AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer((AST::UiObjectMemberList*)0);
node->lbraceToken = loc(1);
node->rbraceToken = loc(2);
sym(1).Node = node;
} break;
-#line 969 "qmljs.g"
+#line 1037 "qmljs.g"
- case 32: {
+ case 40: {
AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer(sym(2).UiObjectMemberList->finish());
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-#line 979 "qmljs.g"
+#line 1047 "qmljs.g"
- case 33: {
+ case 41: {
AST::UiObjectDefinition *node = new (pool) AST::UiObjectDefinition(sym(1).UiQualifiedId, sym(2).UiObjectInitializer);
sym(1).Node = node;
} break;
-#line 989 "qmljs.g"
+#line 1055 "qmljs.g"
- case 35: {
+ case 42: {
+ AST::UiObjectMember *node = sym(2).UiObjectMember;
+ node->annotations = sym(1).UiAnnotationList->finish();
+ sym(1).Node = sym(2).Node;
+ } break;
+
+#line 1068 "qmljs.g"
+
+ case 45: {
AST::UiArrayBinding *node = new (pool) AST::UiArrayBinding(sym(1).UiQualifiedId, sym(5).UiArrayMemberList->finish());
node->colonToken = loc(2);
node->lbracketToken = loc(4);
@@ -519,18 +561,18 @@ bool Parser::parse(int startToken)
sym(1).Node = node;
} break;
-#line 1000 "qmljs.g"
+#line 1079 "qmljs.g"
- case 36: {
+ case 46: {
AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding(
sym(1).UiQualifiedId, sym(4).UiQualifiedId, sym(5).UiObjectInitializer);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-#line 1010 "qmljs.g"
+#line 1089 "qmljs.g"
- case 37: {
+ case 47: {
AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding(
sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer);
node->colonToken = loc(2);
@@ -538,88 +580,98 @@ bool Parser::parse(int startToken)
sym(1).Node = node;
} break;
-#line 1022 "qmljs.g"
- case 38: Q_FALLTHROUGH();
-#line 1024 "qmljs.g"
+#line 1101 "qmljs.g"
- case 39: {
+ case 48: {
AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish());
l->lbraceToken = loc(1);
l->rbraceToken = loc(4);
AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l);
+ node->semicolonToken = loc(5);
+ sym(1).Node = node;
+ } break;
+
+#line 1114 "qmljs.g"
+
+ case 49: {
+ AST::ObjectPattern *l = new (pool) AST::ObjectPattern(sym(3).PatternPropertyList->finish());
+ l->lbraceToken = loc(1);
+ l->rbraceToken = loc(5);
+ AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(l);
+ node->semicolonToken = loc(6);
sym(1).Node = node;
} break;
-#line 1036 "qmljs.g"
- case 40: Q_FALLTHROUGH();
-#line 1038 "qmljs.g"
- case 41: Q_FALLTHROUGH();
-#line 1040 "qmljs.g"
+#line 1127 "qmljs.g"
+ case 50: Q_FALLTHROUGH();
+#line 1129 "qmljs.g"
+ case 51: Q_FALLTHROUGH();
+#line 1131 "qmljs.g"
- case 42: {
+ case 52: {
sym(1).Node = sym(3).Node;
} break;
-#line 1048 "qmljs.g"
- case 43: Q_FALLTHROUGH();
-#line 1050 "qmljs.g"
- case 44: Q_FALLTHROUGH();
-#line 1052 "qmljs.g"
- case 45: Q_FALLTHROUGH();
-#line 1054 "qmljs.g"
- case 46: Q_FALLTHROUGH();
-#line 1056 "qmljs.g"
- case 47: Q_FALLTHROUGH();
-#line 1058 "qmljs.g"
+#line 1139 "qmljs.g"
+ case 53: Q_FALLTHROUGH();
+#line 1141 "qmljs.g"
+ case 54: Q_FALLTHROUGH();
+#line 1143 "qmljs.g"
+ case 55: Q_FALLTHROUGH();
+#line 1145 "qmljs.g"
+ case 56: Q_FALLTHROUGH();
+#line 1147 "qmljs.g"
+ case 57: Q_FALLTHROUGH();
+#line 1149 "qmljs.g"
- case 48: {
+ case 58: {
sym(1).Node = sym(2).Node;
} break;
-#line 1065 "qmljs.g"
+#line 1156 "qmljs.g"
-case 49:
+case 59:
{
AST::UiScriptBinding *node = new (pool) AST::UiScriptBinding(sym(1).UiQualifiedId, sym(3).Statement);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-#line 1075 "qmljs.g"
- case 50: Q_FALLTHROUGH();
-#line 1077 "qmljs.g"
- case 51: Q_FALLTHROUGH();
-#line 1079 "qmljs.g"
+#line 1166 "qmljs.g"
+ case 60: Q_FALLTHROUGH();
+#line 1168 "qmljs.g"
+ case 61: Q_FALLTHROUGH();
+#line 1170 "qmljs.g"
- case 52: {
+ case 62: {
AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(stringRef(1));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-#line 1088 "qmljs.g"
+#line 1179 "qmljs.g"
- case 53: {
+ case 63: {
AST::UiQualifiedId *node = new (pool) AST::UiQualifiedId(sym(1).UiQualifiedId, stringRef(3));
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-#line 1097 "qmljs.g"
+#line 1188 "qmljs.g"
- case 54: {
+ case 64: {
sym(1).Node = nullptr;
} break;
-#line 1104 "qmljs.g"
+#line 1195 "qmljs.g"
- case 55: {
+ case 65: {
sym(1).Node = sym(1).UiParameterList->finish();
} break;
-#line 1111 "qmljs.g"
+#line 1202 "qmljs.g"
- case 56: {
+ case 66: {
AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(3).UiQualifiedId->finish(), stringRef(1));
node->identifierToken = loc(1);
node->colonToken = loc(2);
@@ -627,18 +679,18 @@ case 49:
sym(1).Node = node;
} break;
-#line 1122 "qmljs.g"
+#line 1213 "qmljs.g"
- case 57: {
+ case 67: {
AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiQualifiedId->finish(), stringRef(2));
node->propertyTypeToken = loc(1);
node->identifierToken = loc(2);
sym(1).Node = node;
} break;
-#line 1132 "qmljs.g"
+#line 1223 "qmljs.g"
- case 58: {
+ case 68: {
AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, sym(5).UiQualifiedId->finish(), stringRef(3));
node->propertyTypeToken = loc(5);
node->commaToken = loc(2);
@@ -647,9 +699,9 @@ case 49:
sym(1).Node = node;
} break;
-#line 1144 "qmljs.g"
+#line 1235 "qmljs.g"
- case 59: {
+ case 69: {
AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, sym(3).UiQualifiedId->finish(), stringRef(4));
node->propertyTypeToken = loc(3);
node->commaToken = loc(2);
@@ -657,9 +709,9 @@ case 49:
sym(1).Node = node;
} break;
-#line 1155 "qmljs.g"
+#line 1246 "qmljs.g"
- case 60: {
+ case 70: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2));
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -670,9 +722,9 @@ case 49:
sym(1).Node = node;
} break;
-#line 1169 "qmljs.g"
+#line 1260 "qmljs.g"
- case 61: {
+ case 71: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(nullptr, stringRef(2));
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -682,9 +734,9 @@ case 49:
sym(1).Node = node;
} break;
-#line 1182 "qmljs.g"
+#line 1273 "qmljs.g"
- case 62: {
+ case 72: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6));
node->typeModifier = stringRef(2);
node->propertyToken = loc(1);
@@ -695,18 +747,18 @@ case 49:
sym(1).Node = node;
} break;
-#line 1198 "qmljs.g"
+#line 1289 "qmljs.g"
- case 64: {
+ case 74: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isReadonlyMember = true;
node->readonlyToken = loc(1);
sym(1).Node = node;
} break;
-#line 1208 "qmljs.g"
+#line 1299 "qmljs.g"
- case 65: {
+ case 75: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3));
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -715,41 +767,72 @@ case 49:
sym(1).Node = node;
} break;
-#line 1223 "qmljs.g"
+#line 1314 "qmljs.g"
- case 67: {
+ case 77: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isDefaultMember = true;
node->defaultToken = loc(1);
sym(1).Node = node;
} break;
-#line 1233 "qmljs.g"
+#line 1324 "qmljs.g"
- case 68: {
+ case 78: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isDefaultMember = true;
node->defaultToken = loc(1);
sym(1).Node = node;
} break;
-#line 1243 "qmljs.g"
+#line 1334 "qmljs.g"
+
+ case 79: {
+ AST::UiPublicMember *node = sym(3).UiPublicMember;
+ node->isDefaultMember = true;
+ node->defaultToken = loc(1);
+ node->isRequired = true;
+ node->requiredToken = loc(2);
+ sym(1).Node = node;
+ } break;
+
+#line 1347 "qmljs.g"
+
+ case 80: {
+ AST::UiPublicMember *node = sym(3).UiPublicMember;
+ node->isDefaultMember = true;
+ node->defaultToken = loc(2);
+ node->isRequired = true;
+ node->requiredToken = loc(1);
+ sym(1).Node = node;
+ } break;
+
+#line 1359 "qmljs.g"
/* 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 1365 "qmljs.g"
-#line 1249 "qmljs.g"
+ case 83: {
+ AST::UiRequired *node = new (pool) AST::UiRequired(stringRef(2));
+ node->requiredToken = loc(1);
+ node->semicolonToken = loc(3);
+ sym(1).Node = node;
+ } break;
- case 71: {
+#line 1377 "qmljs.g"
+
+ case 85: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->requiredToken = loc(1);
node->isRequired = true;
sym(1).Node = node;
} break;
-#line 1260 "qmljs.g"
+#line 1387 "qmljs.g"
- case 72: {
+ case 86: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3), sym(5).Statement);
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -758,27 +841,27 @@ case 49:
sym(1).Node = node;
} break;
-#line 1274 "qmljs.g"
+#line 1401 "qmljs.g"
- case 74: {
+ case 88: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isReadonlyMember = true;
node->readonlyToken = loc(1);
sym(1).Node = node;
} break;
-#line 1284 "qmljs.g"
+#line 1411 "qmljs.g"
- case 75: {
+ case 89: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isDefaultMember = true;
node->defaultToken = loc(1);
sym(1).Node = node;
} break;
-#line 1294 "qmljs.g"
+#line 1421 "qmljs.g"
- case 76: {
+ case 90: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(4).UiQualifiedId->finish(), stringRef(6));
node->typeModifier = stringRef(2);
node->propertyToken = loc(1);
@@ -801,18 +884,18 @@ case 49:
sym(1).Node = node;
} break;
-#line 1322 "qmljs.g"
+#line 1449 "qmljs.g"
- case 78: {
+ case 92: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isReadonlyMember = true;
node->readonlyToken = loc(1);
sym(1).Node = node;
} break;
-#line 1332 "qmljs.g"
+#line 1459 "qmljs.g"
- case 79: {
+ case 93: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(sym(2).UiQualifiedId->finish(), stringRef(3));
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -832,40 +915,40 @@ case 49:
sym(1).Node = node;
} break;
-#line 1357 "qmljs.g"
+#line 1484 "qmljs.g"
- case 81: {
+ case 95: {
AST::UiPublicMember *node = sym(2).UiPublicMember;
node->isReadonlyMember = true;
node->readonlyToken = loc(1);
sym(1).Node = node;
} break;
-#line 1367 "qmljs.g"
+#line 1494 "qmljs.g"
- case 82: {
+ case 96: {
auto node = new (pool) AST::UiSourceElement(sym(1).Node);
sym(1).Node = node;
} break;
-#line 1375 "qmljs.g"
+#line 1502 "qmljs.g"
- case 83: {
+ case 97: {
sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node);
} break;
-#line 1382 "qmljs.g"
+#line 1509 "qmljs.g"
- case 84: {
+ case 98: {
sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node);
} break;
-#line 1389 "qmljs.g"
+#line 1516 "qmljs.g"
- case 85: {
+ case 99: {
if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
diagnostic_messages.append(compileError(mem->lbracketToken,
- QLatin1String("Ignored annotation"), Severity::Warning));
+ QLatin1String("Ignored annotation"), QtWarningMsg));
sym(1).Expression = mem->base;
}
@@ -882,9 +965,9 @@ case 49:
}
} break;
-#line 1412 "qmljs.g"
+#line 1539 "qmljs.g"
- case 86: {
+ case 100: {
AST::UiEnumDeclaration *enumDeclaration = new (pool) AST::UiEnumDeclaration(stringRef(2), sym(4).UiEnumMemberList->finish());
enumDeclaration->enumToken = loc(1);
enumDeclaration->rbraceToken = loc(5);
@@ -892,18 +975,30 @@ case 49:
break;
}
-#line 1423 "qmljs.g"
+#line 1550 "qmljs.g"
- case 87: {
+ case 101: {
+ if (!stringRef(2).front().isUpper()) {
+ diagnostic_messages.append(compileError(loc(2),
+ QLatin1String("Type name must be upper case"), QtWarningMsg));
+ }
+ auto inlineComponent = new (pool) AST::UiInlineComponent(stringRef(2), sym(4).UiObjectDefinition);
+ inlineComponent->componentToken = loc(1);
+ sym(1).Node = inlineComponent;
+ } break;
+
+#line 1563 "qmljs.g"
+
+ case 102: {
AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1));
node->memberToken = loc(1);
sym(1).Node = node;
break;
}
-#line 1433 "qmljs.g"
+#line 1573 "qmljs.g"
- case 88: {
+ case 103: {
AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1), sym(3).dval);
node->memberToken = loc(1);
node->valueToken = loc(3);
@@ -911,18 +1006,18 @@ case 49:
break;
}
-#line 1444 "qmljs.g"
+#line 1584 "qmljs.g"
- case 89: {
+ case 104: {
AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3));
node->memberToken = loc(3);
sym(1).Node = node;
break;
}
-#line 1454 "qmljs.g"
+#line 1594 "qmljs.g"
- case 90: {
+ case 105: {
AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3), sym(5).dval);
node->memberToken = loc(3);
node->valueToken = loc(5);
@@ -930,79 +1025,79 @@ case 49:
break;
}
-#line 1496 "qmljs.g"
+#line 1638 "qmljs.g"
- case 115: {
+ case 132: {
sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).Type);
} break;
-#line 1503 "qmljs.g"
+#line 1645 "qmljs.g"
- case 116: {
+ case 133: {
sym(1).TypeArgumentList = new (pool) AST::TypeArgumentList(sym(1).TypeArgumentList, sym(3).Type);
} break;
-#line 1510 "qmljs.g"
+#line 1652 "qmljs.g"
- case 117: {
+ case 134: {
sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId, sym(3).TypeArgumentList->finish());
} break;
-#line 1517 "qmljs.g"
+#line 1659 "qmljs.g"
- case 118: {
+ case 135: {
AST::UiQualifiedId *id = new (pool) AST::UiQualifiedId(stringRef(1));
id->identifierToken = loc(1);
sym(1).Type = new (pool) AST::Type(id->finish());
} break;
-#line 1526 "qmljs.g"
+#line 1668 "qmljs.g"
- case 119: {
+ case 136: {
sym(1).Type = new (pool) AST::Type(sym(1).UiQualifiedId);
} break;
-#line 1533 "qmljs.g"
+#line 1675 "qmljs.g"
- case 120: {
+ case 137: {
sym(1).TypeAnnotation = new (pool) AST::TypeAnnotation(sym(2).Type);
sym(1).TypeAnnotation->colonToken = loc(1);
} break;
-#line 1542 "qmljs.g"
+#line 1684 "qmljs.g"
- case 122: {
+ case 139: {
sym(1).TypeAnnotation = nullptr;
} break;
-#line 1553 "qmljs.g"
+#line 1695 "qmljs.g"
- case 123: {
+ case 140: {
AST::ThisExpression *node = new (pool) AST::ThisExpression();
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-#line 1562 "qmljs.g"
+#line 1704 "qmljs.g"
- case 124: {
+ case 141: {
AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-#line 1580 "qmljs.g"
+#line 1722 "qmljs.g"
- case 133: {
+ case 150: {
if (coverExpressionType != CE_ParenthesizedExpression) {
syntaxError(coverExpressionErrorLocation, "Expected token ')'.");
return false;
}
} break;
-#line 1591 "qmljs.g"
+#line 1733 "qmljs.g"
- case 134: {
+ case 151: {
AST::NestedExpression *node = new (pool) AST::NestedExpression(sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
@@ -1010,26 +1105,26 @@ case 49:
coverExpressionType = CE_ParenthesizedExpression;
} break;
-#line 1602 "qmljs.g"
+#line 1744 "qmljs.g"
- case 135: {
+ case 152: {
sym(1).Node = nullptr;
coverExpressionErrorLocation = loc(2);
coverExpressionType = CE_FormalParameterList;
} break;
-#line 1611 "qmljs.g"
+#line 1753 "qmljs.g"
- case 136: {
+ case 153: {
AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(2).PatternElement))->finish(pool);
sym(1).Node = node;
coverExpressionErrorLocation = loc(2);
coverExpressionType = CE_FormalParameterList;
} break;
-#line 1621 "qmljs.g"
+#line 1763 "qmljs.g"
- case 137: {
+ case 154: {
AST::FormalParameterList *list = sym(2).Expression->reparseAsFormalParameterList(pool);
if (!list) {
syntaxError(loc(1), "Invalid Arrow parameter list.");
@@ -1043,59 +1138,59 @@ case 49:
sym(1).Node = list->finish(pool);
} break;
-#line 1638 "qmljs.g"
+#line 1780 "qmljs.g"
- case 138: {
+ case 155: {
AST::NullExpression *node = new (pool) AST::NullExpression();
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-#line 1647 "qmljs.g"
+#line 1789 "qmljs.g"
- case 139: {
+ case 156: {
AST::TrueLiteral *node = new (pool) AST::TrueLiteral();
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-#line 1656 "qmljs.g"
+#line 1798 "qmljs.g"
- case 140: {
+ case 157: {
AST::FalseLiteral *node = new (pool) AST::FalseLiteral();
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-#line 1665 "qmljs.g"
+#line 1807 "qmljs.g"
- case 141: {
+ case 158: {
AST::NumericLiteral *node = new (pool) AST::NumericLiteral(sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-#line 1674 "qmljs.g"
- case 142: Q_FALLTHROUGH();
-#line 1677 "qmljs.g"
+#line 1816 "qmljs.g"
+ case 159: Q_FALLTHROUGH();
+#line 1819 "qmljs.g"
- case 143: {
+ case 160: {
AST::StringLiteral *node = new (pool) AST::StringLiteral(stringRef(1));
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-#line 1689 "qmljs.g"
+#line 1831 "qmljs.g"
{
Lexer::RegExpBodyPrefix prefix;
- case 144:
+ case 161:
prefix = Lexer::NoPrefix;
goto scan_regexp;
-#line 1701 "qmljs.g"
+#line 1843 "qmljs.g"
- case 145:
+ case 162:
prefix = Lexer::EqualPrefix;
goto scan_regexp;
@@ -1115,9 +1210,9 @@ case 49:
} break;
}
-#line 1725 "qmljs.g"
+#line 1867 "qmljs.g"
- case 146: {
+ case 163: {
AST::PatternElementList *list = nullptr;
if (sym(2).Elision)
list = (new (pool) AST::PatternElementList(sym(2).Elision, nullptr))->finish();
@@ -1127,18 +1222,18 @@ case 49:
sym(1).Node = node;
} break;
-#line 1738 "qmljs.g"
+#line 1880 "qmljs.g"
- case 147: {
+ case 164: {
AST::ArrayPattern *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList->finish());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-#line 1748 "qmljs.g"
+#line 1890 "qmljs.g"
- case 148: {
+ case 165: {
auto *list = sym(2).PatternElementList;
if (sym(4).Elision) {
AST::PatternElementList *l = new (pool) AST::PatternElementList(sym(4).Elision, nullptr);
@@ -1152,124 +1247,124 @@ case 49:
Q_ASSERT(node->isValidArrayLiteral());
} break;
-#line 1765 "qmljs.g"
+#line 1907 "qmljs.g"
- case 149: {
+ case 166: {
AST::PatternElement *e = new (pool) AST::PatternElement(sym(1).Expression);
sym(1).Node = new (pool) AST::PatternElementList(nullptr, e);
} break;
-#line 1773 "qmljs.g"
+#line 1915 "qmljs.g"
- case 150: {
+ case 167: {
AST::PatternElement *e = new (pool) AST::PatternElement(sym(2).Expression);
sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision->finish(), e);
} break;
-#line 1781 "qmljs.g"
+#line 1923 "qmljs.g"
- case 151: {
+ case 168: {
AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement);
sym(1).Node = node;
} break;
-#line 1789 "qmljs.g"
+#line 1931 "qmljs.g"
- case 152: {
+ case 169: {
AST::PatternElement *e = new (pool) AST::PatternElement(sym(4).Expression);
AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(3).Elision, e);
sym(1).Node = sym(1).PatternElementList->append(node);
} break;
-#line 1798 "qmljs.g"
+#line 1940 "qmljs.g"
- case 153: {
+ case 170: {
AST::PatternElementList *node = new (pool) AST::PatternElementList(sym(3).Elision, sym(4).PatternElement);
sym(1).Node = sym(1).PatternElementList->append(node);
} break;
-#line 1806 "qmljs.g"
+#line 1948 "qmljs.g"
- case 154: {
+ case 171: {
AST::Elision *node = new (pool) AST::Elision();
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-#line 1815 "qmljs.g"
+#line 1957 "qmljs.g"
- case 155: {
+ case 172: {
AST::Elision *node = new (pool) AST::Elision(sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-#line 1824 "qmljs.g"
+#line 1966 "qmljs.g"
- case 156: {
+ case 173: {
sym(1).Node = nullptr;
} break;
-#line 1831 "qmljs.g"
+#line 1973 "qmljs.g"
- case 157: {
+ case 174: {
sym(1).Node = sym(1).Elision->finish();
} break;
-#line 1838 "qmljs.g"
+#line 1980 "qmljs.g"
- case 158: {
+ case 175: {
AST::PatternElement *node = new (pool) AST::PatternElement(sym(2).Expression, AST::PatternElement::SpreadElement);
sym(1).Node = node;
} break;
-#line 1846 "qmljs.g"
+#line 1988 "qmljs.g"
- case 159: {
+ case 176: {
AST::ObjectPattern *node = new (pool) AST::ObjectPattern();
node->lbraceToken = loc(1);
node->rbraceToken = loc(2);
sym(1).Node = node;
} break;
-#line 1856 "qmljs.g"
+#line 1998 "qmljs.g"
- case 160: {
+ case 177: {
AST::ObjectPattern *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList->finish());
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-#line 1866 "qmljs.g"
+#line 2008 "qmljs.g"
- case 161: {
+ case 178: {
AST::ObjectPattern *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList->finish());
node->lbraceToken = loc(1);
node->rbraceToken = loc(4);
sym(1).Node = node;
} break;
-#line 1877 "qmljs.g"
- case 162: Q_FALLTHROUGH();
-#line 1879 "qmljs.g"
+#line 2019 "qmljs.g"
+ case 179: Q_FALLTHROUGH();
+#line 2021 "qmljs.g"
- case 163: {
+ case 180: {
sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty);
} break;
-#line 1886 "qmljs.g"
- case 164: Q_FALLTHROUGH();
-#line 1888 "qmljs.g"
+#line 2028 "qmljs.g"
+ case 181: Q_FALLTHROUGH();
+#line 2030 "qmljs.g"
- case 165: {
+ case 182: {
AST::PatternPropertyList *node = new (pool) AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty);
sym(1).Node = node;
} break;
-#line 1896 "qmljs.g"
+#line 2038 "qmljs.g"
- case 166: {
+ case 183: {
AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1));
name->propertyNameToken = loc(1);
AST::IdentifierExpression *expr = new (pool) AST::IdentifierExpression(stringRef(1));
@@ -1279,9 +1374,9 @@ case 49:
sym(1).Node = node;
} break;
-#line 1912 "qmljs.g"
+#line 2054 "qmljs.g"
- case 168: {
+ case 185: {
AST::IdentifierPropertyName *name = new (pool) AST::IdentifierPropertyName(stringRef(1));
name->propertyNameToken = loc(1);
AST::IdentifierExpression *left = new (pool) AST::IdentifierExpression(stringRef(1));
@@ -1298,11 +1393,11 @@ case 49:
} break;
-#line 1932 "qmljs.g"
- case 169: Q_FALLTHROUGH();
-#line 1934 "qmljs.g"
+#line 2074 "qmljs.g"
+ case 186: Q_FALLTHROUGH();
+#line 2076 "qmljs.g"
- case 170: {
+ case 187: {
AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, sym(3).Expression);
if (auto *c = asAnonymousClassDefinition(sym(3).Expression)) {
if (!AST::cast<AST::ComputedPropertyName *>(sym(1).PropertyName))
@@ -1312,120 +1407,120 @@ case 49:
sym(1).Node = node;
} break;
-#line 1952 "qmljs.g"
+#line 2094 "qmljs.g"
- case 174: {
+ case 191: {
AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-#line 1961 "qmljs.g"
- case 175: Q_FALLTHROUGH();
-#line 1963 "qmljs.g"
+#line 2103 "qmljs.g"
+ case 192: Q_FALLTHROUGH();
+#line 2105 "qmljs.g"
- case 176: {
+ case 193: {
AST::StringLiteralPropertyName *node = new (pool) AST::StringLiteralPropertyName(stringRef(1));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-#line 1972 "qmljs.g"
- case 177: Q_FALLTHROUGH();
-#line 1974 "qmljs.g"
+#line 2114 "qmljs.g"
+ case 194: Q_FALLTHROUGH();
+#line 2116 "qmljs.g"
- case 178: {
+ case 195: {
AST::NumericLiteralPropertyName *node = new (pool) AST::NumericLiteralPropertyName(sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-#line 2025 "qmljs.g"
+#line 2167 "qmljs.g"
- case 219: {
+ case 236: {
AST::ComputedPropertyName *node = new (pool) AST::ComputedPropertyName(sym(2).Expression);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-#line 2034 "qmljs.g"
- case 220: Q_FALLTHROUGH();
-#line 2036 "qmljs.g"
+#line 2176 "qmljs.g"
+ case 237: Q_FALLTHROUGH();
+#line 2178 "qmljs.g"
-case 221: {
+case 238: {
sym(1) = sym(2);
} break;
-#line 2044 "qmljs.g"
- case 222: Q_FALLTHROUGH();
-#line 2046 "qmljs.g"
+#line 2186 "qmljs.g"
+ case 239: Q_FALLTHROUGH();
+#line 2188 "qmljs.g"
- case 223: {
+ case 240: {
sym(1).Node = nullptr;
} break;
-#line 2056 "qmljs.g"
- case 226: Q_FALLTHROUGH();
-#line 2059 "qmljs.g"
+#line 2198 "qmljs.g"
+ case 243: Q_FALLTHROUGH();
+#line 2201 "qmljs.g"
- case 227: {
+ case 244: {
AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), nullptr);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-#line 2068 "qmljs.g"
- case 228: Q_FALLTHROUGH();
-#line 2071 "qmljs.g"
+#line 2210 "qmljs.g"
+ case 245: Q_FALLTHROUGH();
+#line 2213 "qmljs.g"
- case 229: {
+ case 246: {
AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), rawStringRef(1), sym(2).Expression);
node->next = sym(3).Template;
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-#line 2084 "qmljs.g"
+#line 2226 "qmljs.g"
- case 231: {
+ case 248: {
AST::SuperLiteral *node = new (pool) AST::SuperLiteral();
node->superToken = loc(1);
sym(1).Node = node;
} break;
-#line 2094 "qmljs.g"
- case 232: Q_FALLTHROUGH();
-#line 2096 "qmljs.g"
+#line 2236 "qmljs.g"
+ case 249: Q_FALLTHROUGH();
+#line 2238 "qmljs.g"
- case 233: {
+ case 250: {
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 2108 "qmljs.g"
- case 234:
+#line 2250 "qmljs.g"
+ case 251:
{
AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1));
node->identifierToken= loc(1);
sym(1).Node = node;
} Q_FALLTHROUGH();
-#line 2116 "qmljs.g"
- case 235: Q_FALLTHROUGH();
-#line 2118 "qmljs.g"
+#line 2258 "qmljs.g"
+ case 252: Q_FALLTHROUGH();
+#line 2260 "qmljs.g"
- case 236: {
+ case 253: {
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 2130 "qmljs.g"
+#line 2272 "qmljs.g"
- case 238: {
+ case 255: {
AST::NewMemberExpression *node = new (pool) AST::NewMemberExpression(sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -1433,419 +1528,461 @@ case 221: {
sym(1).Node = node;
} break;
-#line 2146 "qmljs.g"
+#line 2288 "qmljs.g"
- case 241: {
+ case 258: {
AST::NewExpression *node = new (pool) AST::NewExpression(sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-#line 2156 "qmljs.g"
- case 242: Q_FALLTHROUGH();
-#line 2158 "qmljs.g"
+#line 2298 "qmljs.g"
+ case 259: Q_FALLTHROUGH();
+#line 2300 "qmljs.g"
- case 243: {
+ case 260: {
AST::TaggedTemplate *node = new (pool) AST::TaggedTemplate(sym(1).Expression, sym(2).Template);
sym(1).Node = node;
} break;
-#line 2166 "qmljs.g"
+#line 2308 "qmljs.g"
- case 244: {
+ case 261: {
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 2176 "qmljs.g"
- case 245: Q_FALLTHROUGH();
-#line 2178 "qmljs.g"
+#line 2318 "qmljs.g"
+ case 262: Q_FALLTHROUGH();
+#line 2320 "qmljs.g"
- case 246: {
+ case 263: {
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 2188 "qmljs.g"
+#line 2330 "qmljs.g"
- case 247: {
+ case 264: {
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 2198 "qmljs.g"
+#line 2340 "qmljs.g"
- case 248: {
+ case 265: {
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 2208 "qmljs.g"
+#line 2350 "qmljs.g"
- case 249: {
+ case 266: {
sym(1).Node = nullptr;
} break;
-#line 2215 "qmljs.g"
- case 250: Q_FALLTHROUGH();
-#line 2217 "qmljs.g"
+#line 2357 "qmljs.g"
+ case 267: Q_FALLTHROUGH();
+#line 2359 "qmljs.g"
- case 251: {
+ case 268: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-#line 2224 "qmljs.g"
+#line 2366 "qmljs.g"
- case 252: {
+ case 269: {
sym(1).Node = new (pool) AST::ArgumentList(sym(1).Expression);
} break;
-#line 2231 "qmljs.g"
+#line 2373 "qmljs.g"
- case 253: {
+ case 270: {
AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(2).Expression);
node->isSpreadElement = true;
sym(1).Node = node;
} break;
-#line 2240 "qmljs.g"
+#line 2382 "qmljs.g"
- case 254: {
+ case 271: {
AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-#line 2249 "qmljs.g"
+#line 2391 "qmljs.g"
- case 255: {
+ case 272: {
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 2264 "qmljs.g"
+#line 2406 "qmljs.g"
- case 259: {
+ case 276: {
AST::PostIncrementExpression *node = new (pool) AST::PostIncrementExpression(sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-#line 2273 "qmljs.g"
+#line 2415 "qmljs.g"
- case 260: {
+ case 277: {
AST::PostDecrementExpression *node = new (pool) AST::PostDecrementExpression(sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-#line 2282 "qmljs.g"
+#line 2424 "qmljs.g"
- case 261: {
+ case 278: {
AST::PreIncrementExpression *node = new (pool) AST::PreIncrementExpression(sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-#line 2291 "qmljs.g"
+#line 2433 "qmljs.g"
- case 262: {
+ case 279: {
AST::PreDecrementExpression *node = new (pool) AST::PreDecrementExpression(sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-#line 2302 "qmljs.g"
+#line 2444 "qmljs.g"
- case 264: {
+ case 281: {
AST::DeleteExpression *node = new (pool) AST::DeleteExpression(sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-#line 2311 "qmljs.g"
+#line 2453 "qmljs.g"
- case 265: {
+ case 282: {
AST::VoidExpression *node = new (pool) AST::VoidExpression(sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-#line 2320 "qmljs.g"
+#line 2462 "qmljs.g"
- case 266: {
+ case 283: {
AST::TypeOfExpression *node = new (pool) AST::TypeOfExpression(sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-#line 2329 "qmljs.g"
+#line 2471 "qmljs.g"
- case 267: {
+ case 284: {
AST::UnaryPlusExpression *node = new (pool) AST::UnaryPlusExpression(sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-#line 2338 "qmljs.g"
+#line 2480 "qmljs.g"
- case 268: {
+ case 285: {
AST::UnaryMinusExpression *node = new (pool) AST::UnaryMinusExpression(sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-#line 2347 "qmljs.g"
+#line 2489 "qmljs.g"
- case 269: {
+ case 286: {
AST::TildeExpression *node = new (pool) AST::TildeExpression(sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-#line 2356 "qmljs.g"
+#line 2498 "qmljs.g"
- case 270: {
+ case 287: {
AST::NotExpression *node = new (pool) AST::NotExpression(sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-#line 2367 "qmljs.g"
+#line 2509 "qmljs.g"
- case 272: {
+ case 289: {
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 2378 "qmljs.g"
+#line 2520 "qmljs.g"
- case 274: {
+ case 291: {
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 2387 "qmljs.g"
+#line 2529 "qmljs.g"
- case 275: {
+ case 292: {
sym(1).ival = QSOperator::Mul;
} break;
-#line 2394 "qmljs.g"
+#line 2536 "qmljs.g"
- case 276: {
+ case 293: {
sym(1).ival = QSOperator::Div;
} break;
-#line 2401 "qmljs.g"
+#line 2543 "qmljs.g"
- case 277: {
+ case 294: {
sym(1).ival = QSOperator::Mod;
} break;
-#line 2410 "qmljs.g"
+#line 2552 "qmljs.g"
- case 279: {
+ case 296: {
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 2419 "qmljs.g"
+#line 2561 "qmljs.g"
- case 280: {
+ case 297: {
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 2430 "qmljs.g"
+#line 2572 "qmljs.g"
- case 282: {
+ case 299: {
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 2439 "qmljs.g"
+#line 2581 "qmljs.g"
- case 283: {
+ case 300: {
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 2448 "qmljs.g"
+#line 2590 "qmljs.g"
- case 284: {
+ case 301: {
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 2460 "qmljs.g"
- case 287: Q_FALLTHROUGH();
-#line 2462 "qmljs.g"
+#line 2602 "qmljs.g"
+ case 304: Q_FALLTHROUGH();
+#line 2604 "qmljs.g"
- case 288: {
+ case 305: {
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 2471 "qmljs.g"
+#line 2613 "qmljs.g"
- case 289: {
+ case 306: {
sym(1).ival = QSOperator::Lt;
} break;
-#line 2477 "qmljs.g"
+#line 2619 "qmljs.g"
- case 290: {
+ case 307: {
sym(1).ival = QSOperator::Gt;
} break;
-#line 2483 "qmljs.g"
+#line 2625 "qmljs.g"
- case 291: {
+ case 308: {
sym(1).ival = QSOperator::Le;
} break;
-#line 2489 "qmljs.g"
+#line 2631 "qmljs.g"
- case 292: {
+ case 309: {
sym(1).ival = QSOperator::Ge;
} break;
-#line 2495 "qmljs.g"
+#line 2637 "qmljs.g"
- case 293: {
+ case 310: {
sym(1).ival = QSOperator::InstanceOf;
} break;
-#line 2502 "qmljs.g"
+#line 2644 "qmljs.g"
- case 294: {
+ case 311: {
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 2514 "qmljs.g"
- case 297: Q_FALLTHROUGH();
-#line 2516 "qmljs.g"
+#line 2653 "qmljs.g"
+ case 312: Q_FALLTHROUGH();
+#line 2655 "qmljs.g"
+
+ case 313: {
+ AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::As, sym(3).Expression);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+ } break;
+
+#line 2670 "qmljs.g"
+ case 318: Q_FALLTHROUGH();
+#line 2672 "qmljs.g"
- case 298: {
+ case 319: {
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 2525 "qmljs.g"
+#line 2681 "qmljs.g"
- case 299: {
+ case 320: {
sym(1).ival = QSOperator::Equal;
} break;
-#line 2531 "qmljs.g"
+#line 2687 "qmljs.g"
- case 300: {
+ case 321: {
sym(1).ival = QSOperator::NotEqual;
} break;
-#line 2537 "qmljs.g"
+#line 2693 "qmljs.g"
- case 301: {
+ case 322: {
sym(1).ival = QSOperator::StrictEqual;
} break;
-#line 2543 "qmljs.g"
+#line 2699 "qmljs.g"
- case 302: {
+ case 323: {
sym(1).ival = QSOperator::StrictNotEqual;
} break;
-#line 2554 "qmljs.g"
- case 305: Q_FALLTHROUGH();
-#line 2556 "qmljs.g"
+#line 2710 "qmljs.g"
+ case 326: Q_FALLTHROUGH();
+#line 2712 "qmljs.g"
- case 306: {
+ case 327: {
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 2569 "qmljs.g"
- case 309: Q_FALLTHROUGH();
-#line 2571 "qmljs.g"
+#line 2725 "qmljs.g"
+ case 330: Q_FALLTHROUGH();
+#line 2727 "qmljs.g"
- case 310: {
+ case 331: {
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 2583 "qmljs.g"
- case 313: Q_FALLTHROUGH();
-#line 2585 "qmljs.g"
+#line 2739 "qmljs.g"
+ case 334: Q_FALLTHROUGH();
+#line 2741 "qmljs.g"
- case 314: {
+ case 335: {
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 2597 "qmljs.g"
- case 317: Q_FALLTHROUGH();
-#line 2599 "qmljs.g"
+#line 2753 "qmljs.g"
+ case 338: Q_FALLTHROUGH();
+#line 2755 "qmljs.g"
- case 318: {
+ case 339: {
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 2611 "qmljs.g"
- case 321: Q_FALLTHROUGH();
-#line 2613 "qmljs.g"
+#line 2767 "qmljs.g"
+ case 342: Q_FALLTHROUGH();
+#line 2769 "qmljs.g"
- case 322: {
+ case 343: {
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 2626 "qmljs.g"
- case 325: Q_FALLTHROUGH();
-#line 2628 "qmljs.g"
+#line 2781 "qmljs.g"
+ case 346: Q_FALLTHROUGH();
+#line 2783 "qmljs.g"
+
+ case 347: {
+
+ auto *lhs = sym(1).Expression;
+ auto *rhs = sym(3).Expression;
+
+ // Check if lhs or rhs contain || or &&
+
+ if (lhs->binaryExpressionCast() != nullptr) {
+ auto *binaryExpr = lhs->binaryExpressionCast();
+ if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) {
+ syntaxError(binaryExpr->operatorToken, "Left-hand side may not contain || or &&");
+ return false;
+ }
+ }
- case 326: {
+ if (rhs->binaryExpressionCast() != nullptr) {
+ auto *binaryExpr = rhs->binaryExpressionCast();
+ if (binaryExpr->op == QSOperator::And || binaryExpr->op == QSOperator::Or) {
+ syntaxError(binaryExpr->operatorToken, "Right-hand side may not contain || or &&");
+ return false;
+ }
+ }
+
+ AST::BinaryExpression *node = new (pool) AST::BinaryExpression(lhs, QSOperator::Coalesce, rhs);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+ } break;
+
+#line 2817 "qmljs.g"
+ case 350: Q_FALLTHROUGH();
+#line 2819 "qmljs.g"
+
+ case 351: {
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 2647 "qmljs.g"
- case 333: Q_FALLTHROUGH();
-#line 2649 "qmljs.g"
+#line 2838 "qmljs.g"
+ case 358: Q_FALLTHROUGH();
+#line 2840 "qmljs.g"
- case 334: {
+ case 359: {
// need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral
if (AST::Pattern *p = sym(1).Expression->patternCast()) {
- AST::SourceLocation errorLoc;
+ SourceLocation errorLoc;
QString errorMsg;
if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) {
syntaxError(errorLoc, errorMsg);
@@ -1867,208 +2004,208 @@ case 221: {
sym(1).Node = node;
} break;
-#line 2677 "qmljs.g"
- case 335: Q_FALLTHROUGH();
-#line 2679 "qmljs.g"
+#line 2868 "qmljs.g"
+ case 360: Q_FALLTHROUGH();
+#line 2870 "qmljs.g"
- case 336: {
+ case 361: {
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 2688 "qmljs.g"
+#line 2879 "qmljs.g"
- case 337: {
+ case 362: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-#line 2695 "qmljs.g"
+#line 2886 "qmljs.g"
- case 338: {
+ case 363: {
sym(1).ival = QSOperator::InplaceExp;
} break;
-#line 2702 "qmljs.g"
+#line 2893 "qmljs.g"
- case 339: {
+ case 364: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-#line 2709 "qmljs.g"
+#line 2900 "qmljs.g"
- case 340: {
+ case 365: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-#line 2716 "qmljs.g"
+#line 2907 "qmljs.g"
- case 341: {
+ case 366: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-#line 2723 "qmljs.g"
+#line 2914 "qmljs.g"
- case 342: {
+ case 367: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-#line 2730 "qmljs.g"
+#line 2921 "qmljs.g"
- case 343: {
+ case 368: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-#line 2737 "qmljs.g"
+#line 2928 "qmljs.g"
- case 344: {
+ case 369: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-#line 2744 "qmljs.g"
+#line 2935 "qmljs.g"
- case 345: {
+ case 370: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-#line 2751 "qmljs.g"
+#line 2942 "qmljs.g"
- case 346: {
+ case 371: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-#line 2758 "qmljs.g"
+#line 2949 "qmljs.g"
- case 347: {
+ case 372: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-#line 2765 "qmljs.g"
+#line 2956 "qmljs.g"
- case 348: {
+ case 373: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-#line 2775 "qmljs.g"
- case 351: Q_FALLTHROUGH();
-#line 2777 "qmljs.g"
+#line 2966 "qmljs.g"
+ case 376: Q_FALLTHROUGH();
+#line 2968 "qmljs.g"
- case 352: {
+ case 377: {
AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-#line 2786 "qmljs.g"
- case 353: Q_FALLTHROUGH();
-#line 2788 "qmljs.g"
+#line 2977 "qmljs.g"
+ case 378: Q_FALLTHROUGH();
+#line 2979 "qmljs.g"
- case 354: {
+ case 379: {
sym(1).Node = nullptr;
} break;
-#line 2800 "qmljs.g"
+#line 2991 "qmljs.g"
- case 357: {
+ case 382: {
sym(1).Node = sym(3).Node;
} break;
-#line 2807 "qmljs.g"
- case 358: Q_FALLTHROUGH();
-#line 2809 "qmljs.g"
- case 359: Q_FALLTHROUGH();
-#line 2811 "qmljs.g"
- case 360: Q_FALLTHROUGH();
-#line 2813 "qmljs.g"
- case 361: Q_FALLTHROUGH();
-#line 2815 "qmljs.g"
- case 362: Q_FALLTHROUGH();
-#line 2817 "qmljs.g"
- case 363: Q_FALLTHROUGH();
-#line 2819 "qmljs.g"
- case 364: Q_FALLTHROUGH();
-#line 2821 "qmljs.g"
- case 365: Q_FALLTHROUGH();
-#line 2823 "qmljs.g"
- case 366: Q_FALLTHROUGH();
-#line 2825 "qmljs.g"
- case 367: Q_FALLTHROUGH();
-#line 2827 "qmljs.g"
- case 368: Q_FALLTHROUGH();
-#line 2829 "qmljs.g"
- case 369: Q_FALLTHROUGH();
-#line 2831 "qmljs.g"
+#line 2998 "qmljs.g"
+ case 383: Q_FALLTHROUGH();
+#line 3000 "qmljs.g"
+ case 384: Q_FALLTHROUGH();
+#line 3002 "qmljs.g"
+ case 385: Q_FALLTHROUGH();
+#line 3004 "qmljs.g"
+ case 386: Q_FALLTHROUGH();
+#line 3006 "qmljs.g"
+ case 387: Q_FALLTHROUGH();
+#line 3008 "qmljs.g"
+ case 388: Q_FALLTHROUGH();
+#line 3010 "qmljs.g"
+ case 389: Q_FALLTHROUGH();
+#line 3012 "qmljs.g"
+ case 390: Q_FALLTHROUGH();
+#line 3014 "qmljs.g"
+ case 391: Q_FALLTHROUGH();
+#line 3016 "qmljs.g"
+ case 392: Q_FALLTHROUGH();
+#line 3018 "qmljs.g"
+ case 393: Q_FALLTHROUGH();
+#line 3020 "qmljs.g"
+ case 394: Q_FALLTHROUGH();
+#line 3022 "qmljs.g"
- case 370: {
+ case 395: {
sym(1).Node = sym(2).Node;
} break;
-#line 2853 "qmljs.g"
+#line 3044 "qmljs.g"
- case 381: {
+ case 406: {
AST::Block *node = new (pool) AST::Block(sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-#line 2865 "qmljs.g"
+#line 3056 "qmljs.g"
- case 383: {
+ case 408: {
sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList);
} break;
-#line 2872 "qmljs.g"
+#line 3063 "qmljs.g"
- case 384: {
+ case 409: {
sym(1).StatementList = new (pool) AST::StatementList(sym(1).Statement);
} break;
-#line 2879 "qmljs.g"
+#line 3070 "qmljs.g"
- case 385: {
+ case 410: {
sym(1).Node = new (pool) AST::StatementList(sym(3).FunctionDeclaration);
} break;
-#line 2886 "qmljs.g"
+#line 3077 "qmljs.g"
- case 386: {
+ case 411: {
sym(1).Node = nullptr;
} break;
-#line 2893 "qmljs.g"
+#line 3084 "qmljs.g"
- case 387: {
+ case 412: {
sym(1).Node = sym(1).StatementList->finish();
} break;
-#line 2900 "qmljs.g"
+#line 3091 "qmljs.g"
- case 388: {
+ case 413: {
sym(1).scope = AST::VariableScope::Let;
} break;
-#line 2906 "qmljs.g"
+#line 3097 "qmljs.g"
- case 389: {
+ case 414: {
sym(1).scope = AST::VariableScope::Const;
} break;
-#line 2913 "qmljs.g"
+#line 3104 "qmljs.g"
- case 390: {
+ case 415: {
sym(1).scope = AST::VariableScope::Var;
} break;
-#line 2920 "qmljs.g"
- case 391: Q_FALLTHROUGH();
-#line 2922 "qmljs.g"
- case 392: Q_FALLTHROUGH();
-#line 2924 "qmljs.g"
- case 393: Q_FALLTHROUGH();
-#line 2926 "qmljs.g"
+#line 3111 "qmljs.g"
+ case 416: Q_FALLTHROUGH();
+#line 3113 "qmljs.g"
+ case 417: Q_FALLTHROUGH();
+#line 3115 "qmljs.g"
+ case 418: Q_FALLTHROUGH();
+#line 3117 "qmljs.g"
- case 394: {
+ case 419: {
AST::VariableDeclarationList *declarations = sym(2).VariableDeclarationList->finish(sym(1).scope);
for (auto it = declarations; it; it = it->next) {
if (it->declaration && it->declaration->typeAnnotation) {
@@ -2081,41 +2218,41 @@ case 221: {
sym(1).Node = node;
} break;
-#line 2944 "qmljs.g"
- case 396: Q_FALLTHROUGH();
-#line 2946 "qmljs.g"
- case 397: Q_FALLTHROUGH();
-#line 2948 "qmljs.g"
- case 398: Q_FALLTHROUGH();
-#line 2950 "qmljs.g"
+#line 3135 "qmljs.g"
+ case 421: Q_FALLTHROUGH();
+#line 3137 "qmljs.g"
+ case 422: Q_FALLTHROUGH();
+#line 3139 "qmljs.g"
+ case 423: Q_FALLTHROUGH();
+#line 3141 "qmljs.g"
- case 399: {
+ case 424: {
sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).PatternElement);
} break;
-#line 2957 "qmljs.g"
- case 400: Q_FALLTHROUGH();
-#line 2959 "qmljs.g"
- case 401: Q_FALLTHROUGH();
-#line 2961 "qmljs.g"
- case 402: Q_FALLTHROUGH();
-#line 2963 "qmljs.g"
+#line 3148 "qmljs.g"
+ case 425: Q_FALLTHROUGH();
+#line 3150 "qmljs.g"
+ case 426: Q_FALLTHROUGH();
+#line 3152 "qmljs.g"
+ case 427: Q_FALLTHROUGH();
+#line 3154 "qmljs.g"
- case 403: {
+ case 428: {
AST::VariableDeclarationList *node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclarationList, sym(3).PatternElement);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-#line 2972 "qmljs.g"
- case 404: Q_FALLTHROUGH();
-#line 2974 "qmljs.g"
- case 405: Q_FALLTHROUGH();
-#line 2976 "qmljs.g"
- case 406: Q_FALLTHROUGH();
-#line 2978 "qmljs.g"
+#line 3163 "qmljs.g"
+ case 429: Q_FALLTHROUGH();
+#line 3165 "qmljs.g"
+ case 430: Q_FALLTHROUGH();
+#line 3167 "qmljs.g"
+ case 431: Q_FALLTHROUGH();
+#line 3169 "qmljs.g"
- case 407: {
+ case 432: {
auto *node = new (pool) AST::PatternElement(stringRef(1), sym(2).TypeAnnotation, sym(3).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
@@ -2126,23 +2263,23 @@ case 221: {
c->name = stringRef(1);
} break;
-#line 2992 "qmljs.g"
- case 408: Q_FALLTHROUGH();
-#line 2994 "qmljs.g"
- case 409: Q_FALLTHROUGH();
-#line 2996 "qmljs.g"
- case 410: Q_FALLTHROUGH();
-#line 2998 "qmljs.g"
+#line 3183 "qmljs.g"
+ case 433: Q_FALLTHROUGH();
+#line 3185 "qmljs.g"
+ case 434: Q_FALLTHROUGH();
+#line 3187 "qmljs.g"
+ case 435: Q_FALLTHROUGH();
+#line 3189 "qmljs.g"
- case 411: {
+ case 436: {
auto *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-#line 3007 "qmljs.g"
+#line 3198 "qmljs.g"
- case 412: {
+ case 437: {
auto *node = new (pool) AST::ObjectPattern(sym(2).PatternPropertyList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
@@ -2150,9 +2287,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3018 "qmljs.g"
+#line 3209 "qmljs.g"
- case 413: {
+ case 438: {
auto *node = new (pool) AST::ArrayPattern(sym(2).PatternElementList);
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
@@ -2160,23 +2297,23 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3029 "qmljs.g"
+#line 3220 "qmljs.g"
- case 414: {
+ case 439: {
sym(1).Node = nullptr;
} break;
-#line 3036 "qmljs.g"
- case 415:
-#line 3038 "qmljs.g"
+#line 3227 "qmljs.g"
+ case 440:
+#line 3229 "qmljs.g"
- case 416: {
+ case 441: {
sym(1).Node = sym(1).PatternPropertyList->finish();
} break;
-#line 3045 "qmljs.g"
+#line 3236 "qmljs.g"
- case 417: {
+ case 442: {
if (sym(1).Elision || sym(2).Node) {
auto *l = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement);
sym(1).Node = l->finish();
@@ -2185,15 +2322,15 @@ case 221: {
}
} break;
-#line 3057 "qmljs.g"
+#line 3248 "qmljs.g"
- case 418: {
+ case 443: {
sym(1).Node = sym(1).PatternElementList->finish();
} break;
-#line 3064 "qmljs.g"
+#line 3255 "qmljs.g"
- case 419: {
+ case 444: {
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);
@@ -2202,33 +2339,33 @@ case 221: {
sym(1).Node = sym(1).PatternElementList->finish();
} break;
-#line 3076 "qmljs.g"
+#line 3267 "qmljs.g"
- case 420: {
+ case 445: {
sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternProperty);
} break;
-#line 3083 "qmljs.g"
+#line 3274 "qmljs.g"
- case 421: {
+ case 446: {
sym(1).Node = new (pool) AST::PatternPropertyList(sym(1).PatternPropertyList, sym(3).PatternProperty);
} break;
-#line 3092 "qmljs.g"
+#line 3283 "qmljs.g"
- case 423: {
+ case 448: {
sym(1).PatternElementList = sym(1).PatternElementList->append(sym(3).PatternElementList);
} break;
-#line 3099 "qmljs.g"
+#line 3290 "qmljs.g"
- case 424: {
+ case 449: {
sym(1).Node = new (pool) AST::PatternElementList(sym(1).Elision, sym(2).PatternElement);
} break;
-#line 3107 "qmljs.g"
+#line 3298 "qmljs.g"
- case 425: {
+ case 450: {
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
@@ -2239,23 +2376,23 @@ case 221: {
sym(1).Node = new (pool) AST::PatternProperty(name, stringRef(1), sym(2).Expression);
} break;
-#line 3121 "qmljs.g"
+#line 3312 "qmljs.g"
- case 426: {
+ case 451: {
AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, stringRef(3), sym(4).Expression);
sym(1).Node = node;
} break;
-#line 3129 "qmljs.g"
+#line 3320 "qmljs.g"
- case 427: {
+ case 452: {
AST::PatternProperty *node = new (pool) AST::PatternProperty(sym(1).PropertyName, sym(3).Pattern, sym(4).Expression);
sym(1).Node = node;
} break;
-#line 3137 "qmljs.g"
+#line 3328 "qmljs.g"
- case 428: {
+ case 453: {
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
@@ -2266,45 +2403,45 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3151 "qmljs.g"
+#line 3342 "qmljs.g"
- case 429: {
+ case 454: {
AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern, sym(2).Expression);
sym(1).Node = node;
} break;
-#line 3159 "qmljs.g"
+#line 3350 "qmljs.g"
- case 430: {
+ case 455: {
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 3168 "qmljs.g"
+#line 3359 "qmljs.g"
- case 431: {
+ case 456: {
AST::PatternElement *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr, AST::PatternElement::RestElement);
sym(1).Node = node;
} break;
-#line 3176 "qmljs.g"
+#line 3367 "qmljs.g"
- case 432: {
+ case 457: {
sym(1).Node = nullptr;
} break;
-#line 3186 "qmljs.g"
+#line 3377 "qmljs.g"
- case 434: {
+ case 459: {
AST::EmptyStatement *node = new (pool) AST::EmptyStatement();
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-#line 3201 "qmljs.g"
+#line 3392 "qmljs.g"
- case 435: {
+ case 460: {
int token = lookaheadToken(lexer);
if (token == T_LBRACE)
pushToken(T_FORCE_BLOCK);
@@ -2312,17 +2449,17 @@ case 221: {
pushToken(T_FORCE_DECLARATION);
} break;
-#line 3212 "qmljs.g"
+#line 3403 "qmljs.g"
- case 436: {
+ case 461: {
AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-#line 3221 "qmljs.g"
+#line 3412 "qmljs.g"
- case 437: {
+ case 462: {
AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -2331,9 +2468,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3233 "qmljs.g"
+#line 3424 "qmljs.g"
- case 438: {
+ case 463: {
AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -2341,9 +2478,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3246 "qmljs.g"
+#line 3437 "qmljs.g"
- case 440: {
+ case 465: {
AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -2353,9 +2490,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3259 "qmljs.g"
+#line 3450 "qmljs.g"
- case 441: {
+ case 466: {
AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -2363,9 +2500,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3270 "qmljs.g"
+#line 3461 "qmljs.g"
- case 442: {
+ case 467: {
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);
@@ -2375,11 +2512,11 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3283 "qmljs.g"
- case 443: Q_FALLTHROUGH();
-#line 3285 "qmljs.g"
+#line 3474 "qmljs.g"
+ case 468: Q_FALLTHROUGH();
+#line 3476 "qmljs.g"
- case 444: {
+ case 469: {
// ### get rid of the static_cast!
AST::ForStatement *node = new (pool) AST::ForStatement(
static_cast<AST::VariableStatement *>(sym(3).Node)->declarations, sym(5).Expression,
@@ -2392,24 +2529,24 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3301 "qmljs.g"
+#line 3492 "qmljs.g"
- case 445: {
+ case 470: {
sym(1).forEachType = AST::ForEachType::In;
} break;
-#line 3308 "qmljs.g"
+#line 3499 "qmljs.g"
- case 446: {
+ case 471: {
sym(1).forEachType = AST::ForEachType::Of;
} break;
-#line 3315 "qmljs.g"
+#line 3506 "qmljs.g"
- case 447: {
+ case 472: {
// need to convert the LHS to an AssignmentPattern if it was an Array/ObjectLiteral
if (AST::Pattern *p = sym(3).Expression->patternCast()) {
- AST::SourceLocation errorLoc;
+ SourceLocation errorLoc;
QString errorMsg;
if (!p->convertLiteralToAssignmentPattern(pool, &errorLoc, &errorMsg)) {
syntaxError(errorLoc, errorMsg);
@@ -2425,9 +2562,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3337 "qmljs.g"
+#line 3528 "qmljs.g"
- case 448: {
+ case 473: {
AST::ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).PatternElement, sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
node->lparenToken = loc(2);
@@ -2437,11 +2574,11 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3350 "qmljs.g"
- case 449: Q_FALLTHROUGH();
-#line 3352 "qmljs.g"
+#line 3541 "qmljs.g"
+ case 474: Q_FALLTHROUGH();
+#line 3543 "qmljs.g"
- case 450: {
+ case 475: {
if (auto typeAnnotation = sym(3).TypeAnnotation) {
syntaxError(typeAnnotation->firstSourceLocation(), "Type annotations are not permitted in variable declarations");
return false;
@@ -2453,29 +2590,29 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3367 "qmljs.g"
- case 451: Q_FALLTHROUGH();
-#line 3369 "qmljs.g"
+#line 3558 "qmljs.g"
+ case 476: Q_FALLTHROUGH();
+#line 3560 "qmljs.g"
- case 452: {
+ case 477: {
auto *node = new (pool) AST::PatternElement(sym(2).Pattern, nullptr);
node->scope = sym(1).scope;
node->isForDeclaration = true;
sym(1).Node = node;
} break;
-#line 3379 "qmljs.g"
+#line 3570 "qmljs.g"
- case 453: {
+ case 478: {
AST::ContinueStatement *node = new (pool) AST::ContinueStatement();
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-#line 3389 "qmljs.g"
+#line 3580 "qmljs.g"
- case 454: {
+ case 479: {
AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2));
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -2483,18 +2620,18 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3400 "qmljs.g"
+#line 3591 "qmljs.g"
- case 455: {
+ case 480: {
AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringRef());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-#line 3410 "qmljs.g"
+#line 3601 "qmljs.g"
- case 456: {
+ case 481: {
AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2));
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -2502,9 +2639,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3421 "qmljs.g"
+#line 3612 "qmljs.g"
- case 457: {
+ case 482: {
if (!functionNestingLevel) {
syntaxError(loc(1), "Return statement not allowed outside of Function declaration.");
return false;
@@ -2515,9 +2652,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3435 "qmljs.g"
+#line 3626 "qmljs.g"
- case 458: {
+ case 483: {
AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -2525,9 +2662,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3446 "qmljs.g"
+#line 3637 "qmljs.g"
- case 459: {
+ case 484: {
AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -2535,118 +2672,118 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3457 "qmljs.g"
+#line 3648 "qmljs.g"
- case 460: {
+ case 485: {
AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-#line 3467 "qmljs.g"
+#line 3658 "qmljs.g"
- case 461: {
+ case 486: {
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 3477 "qmljs.g"
+#line 3668 "qmljs.g"
- case 462: {
+ case 487: {
sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause);
} break;
-#line 3484 "qmljs.g"
+#line 3675 "qmljs.g"
- case 463: {
+ case 488: {
sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause);
} break;
-#line 3491 "qmljs.g"
+#line 3682 "qmljs.g"
- case 464: {
+ case 489: {
sym(1).Node = nullptr;
} break;
-#line 3498 "qmljs.g"
+#line 3689 "qmljs.g"
- case 465: {
+ case 490: {
sym(1).Node = sym(1).CaseClauses->finish();
} break;
-#line 3505 "qmljs.g"
+#line 3696 "qmljs.g"
- case 466: {
+ case 491: {
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 3515 "qmljs.g"
+#line 3706 "qmljs.g"
- case 467: {
+ case 492: {
AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-#line 3525 "qmljs.g"
+#line 3716 "qmljs.g"
- case 468: {
+ case 493: {
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 3537 "qmljs.g"
+#line 3728 "qmljs.g"
- case 470: {
+ case 495: {
syntaxError(loc(3), "FunctionDeclarations are not allowed after a label.");
return false;
} break;
-#line 3545 "qmljs.g"
+#line 3736 "qmljs.g"
- case 471: {
+ case 496: {
AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-#line 3555 "qmljs.g"
+#line 3746 "qmljs.g"
- case 472: {
+ case 497: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-#line 3564 "qmljs.g"
+#line 3755 "qmljs.g"
- case 473: {
+ case 498: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-#line 3573 "qmljs.g"
+#line 3764 "qmljs.g"
- case 474: {
+ case 499: {
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 3582 "qmljs.g"
+#line 3773 "qmljs.g"
- case 475: {
+ case 500: {
AST::Catch *node = new (pool) AST::Catch(sym(3).PatternElement, sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -2655,43 +2792,43 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3594 "qmljs.g"
+#line 3785 "qmljs.g"
- case 476: {
+ case 501: {
AST::Finally *node = new (pool) AST::Finally(sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-#line 3603 "qmljs.g"
+#line 3794 "qmljs.g"
- case 477: {
+ case 502: {
AST::PatternElement *node = new (pool) AST::PatternElement(stringRef(1));
node->identifierToken = loc(1);
node->scope = AST::VariableScope::Let;
sym(1).Node = node;
} break;
-#line 3613 "qmljs.g"
+#line 3804 "qmljs.g"
- case 478: {
+ case 503: {
AST::PatternElement *node = new (pool) AST::PatternElement(sym(1).Pattern);
node->scope = AST::VariableScope::Let;
sym(1).Node = node;
} break;
-#line 3622 "qmljs.g"
+#line 3813 "qmljs.g"
- case 479: {
+ case 504: {
AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement();
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-#line 3639 "qmljs.g"
+#line 3830 "qmljs.g"
- case 481: {
+ case 506: {
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,
@@ -2705,9 +2842,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3656 "qmljs.g"
+#line 3847 "qmljs.g"
- case 482: {
+ case 507: {
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(8).StatementList,
sym(6).TypeAnnotation);
node->functionToken = loc(1);
@@ -2719,9 +2856,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3672 "qmljs.g"
+#line 3863 "qmljs.g"
- case 484: {
+ case 509: {
if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList))
return false;
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(QStringRef(), sym(3).FormalParameterList, sym(7).StatementList,
@@ -2734,9 +2871,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3688 "qmljs.g"
+#line 3879 "qmljs.g"
- case 485: {
+ case 510: {
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,
@@ -2751,9 +2888,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3706 "qmljs.g"
+#line 3897 "qmljs.g"
- case 486: {
+ case 511: {
if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, sym(3).FormalParameterList))
return false;
AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringRef(), sym(3).FormalParameterList, sym(7).StatementList,
@@ -2766,65 +2903,65 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3724 "qmljs.g"
+#line 3915 "qmljs.g"
- case 488: {
+ case 513: {
sym(1).Node = nullptr;
} break;
-#line 3731 "qmljs.g"
+#line 3922 "qmljs.g"
- case 489: {
+ case 514: {
AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement))->finish(pool);
sym(1).Node = node;
} break;
-#line 3739 "qmljs.g"
- case 490:
-#line 3741 "qmljs.g"
+#line 3930 "qmljs.g"
+ case 515:
+#line 3932 "qmljs.g"
- case 491: {
+ case 516: {
sym(1).Node = sym(1).FormalParameterList->finish(pool);
} break;
-#line 3748 "qmljs.g"
+#line 3939 "qmljs.g"
- case 492: {
+ case 517: {
AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement))->finish(pool);
sym(1).Node = node;
} break;
-#line 3756 "qmljs.g"
+#line 3947 "qmljs.g"
- case 493: {
+ case 518: {
AST::FormalParameterList *node = new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement);
sym(1).Node = node;
} break;
-#line 3765 "qmljs.g"
+#line 3956 "qmljs.g"
- case 494: {
+ case 519: {
AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, sym(3).PatternElement);
sym(1).Node = node;
} break;
-#line 3775 "qmljs.g"
+#line 3966 "qmljs.g"
- case 496: {
+ case 521: {
++functionNestingLevel;
} break;
-#line 3782 "qmljs.g"
+#line 3973 "qmljs.g"
- case 497: {
+ case 522: {
--functionNestingLevel;
} break;
-#line 3792 "qmljs.g"
- case 499: Q_FALLTHROUGH();
-#line 3794 "qmljs.g"
+#line 3983 "qmljs.g"
+ case 524: Q_FALLTHROUGH();
+#line 3985 "qmljs.g"
- case 500: {
+ case 525: {
AST::ReturnStatement *ret = new (pool) AST::ReturnStatement(sym(4).Expression);
ret->returnToken = sym(4).Node->firstSourceLocation();
ret->semicolonToken = sym(4).Node->lastSourceLocation();
@@ -2837,11 +2974,11 @@ case 221: {
sym(1).Node = f;
} break;
-#line 3810 "qmljs.g"
- case 501: Q_FALLTHROUGH();
-#line 3812 "qmljs.g"
+#line 4001 "qmljs.g"
+ case 526: Q_FALLTHROUGH();
+#line 4003 "qmljs.g"
- case 502: {
+ case 527: {
AST::FunctionExpression *f = new (pool) AST::FunctionExpression(QStringRef(), sym(1).FormalParameterList, sym(6).StatementList);
f->isArrowFunction = true;
f->functionToken = sym(1).Node ? sym(1).Node->firstSourceLocation() : loc(1);
@@ -2850,17 +2987,17 @@ case 221: {
sym(1).Node = f;
} break;
-#line 3824 "qmljs.g"
+#line 4015 "qmljs.g"
- case 503: {
+ case 528: {
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 3835 "qmljs.g"
+#line 4026 "qmljs.g"
- case 504: {
+ case 529: {
if (coverExpressionType != CE_FormalParameterList) {
AST::NestedExpression *ne = static_cast<AST::NestedExpression *>(sym(1).Node);
AST::FormalParameterList *list = ne->expression->reparseAsFormalParameterList(pool);
@@ -2872,16 +3009,16 @@ case 221: {
}
} break;
-#line 3853 "qmljs.g"
+#line 4044 "qmljs.g"
- case 505: {
+ case 530: {
if (lookaheadToken(lexer) == T_LBRACE)
pushToken(T_FORCE_BLOCK);
} break;
-#line 3861 "qmljs.g"
+#line 4052 "qmljs.g"
- case 506: {
+ case 531: {
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);
@@ -2895,9 +3032,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3878 "qmljs.g"
+#line 4069 "qmljs.g"
- case 507: {
+ case 532: {
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);
@@ -2912,9 +3049,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3897 "qmljs.g"
+#line 4088 "qmljs.g"
- case 508: {
+ case 533: {
if (!ensureNoFunctionTypeAnnotations(sym(5).TypeAnnotation, /*formals*/nullptr))
return false;
AST::FunctionExpression *f = new (pool) AST::FunctionExpression(stringRef(2), nullptr, sym(7).StatementList);
@@ -2928,9 +3065,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3914 "qmljs.g"
+#line 4105 "qmljs.g"
- case 509: {
+ case 534: {
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);
@@ -2944,29 +3081,29 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3932 "qmljs.g"
+#line 4123 "qmljs.g"
- case 510: {
+ case 535: {
AST::FormalParameterList *node = (new (pool) AST::FormalParameterList(nullptr, sym(1).PatternElement))->finish(pool);
sym(1).Node = node;
} break;
-#line 3940 "qmljs.g"
+#line 4131 "qmljs.g"
- case 511: {
+ case 536: {
lexer->enterGeneratorBody();
} break;
-#line 3947 "qmljs.g"
+#line 4138 "qmljs.g"
- case 512: {
+ case 537: {
--functionNestingLevel;
lexer->leaveGeneratorBody();
} break;
-#line 3957 "qmljs.g"
+#line 4148 "qmljs.g"
- case 514: {
+ case 539: {
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).StatementList);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -2978,9 +3115,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3973 "qmljs.g"
+#line 4164 "qmljs.g"
- case 516: {
+ case 541: {
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(QStringRef(), sym(3).FormalParameterList, sym(6).StatementList);
node->functionToken = loc(1);
node->lparenToken = loc(2);
@@ -2991,9 +3128,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 3987 "qmljs.g"
+#line 4178 "qmljs.g"
- case 517: {
+ case 542: {
AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).StatementList);
node->functionToken = loc(1);
if (!stringRef(2).isNull())
@@ -3006,9 +3143,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 4003 "qmljs.g"
+#line 4194 "qmljs.g"
- case 518: {
+ case 543: {
AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringRef(), sym(3).FormalParameterList, sym(6).StatementList);
node->functionToken = loc(1);
node->lparenToken = loc(2);
@@ -3019,40 +3156,40 @@ case 221: {
sym(1).Node = node;
} break;
-#line 4019 "qmljs.g"
- case 520: Q_FALLTHROUGH();
-#line 4021 "qmljs.g"
+#line 4210 "qmljs.g"
+ case 545: Q_FALLTHROUGH();
+#line 4212 "qmljs.g"
- case 521: {
+ case 546: {
AST::YieldExpression *node = new (pool) AST::YieldExpression();
node->yieldToken = loc(1);
sym(1).Node = node;
} break;
-#line 4030 "qmljs.g"
- case 522: Q_FALLTHROUGH();
-#line 4032 "qmljs.g"
+#line 4221 "qmljs.g"
+ case 547: Q_FALLTHROUGH();
+#line 4223 "qmljs.g"
- case 523: {
+ case 548: {
AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(3).Expression);
node->yieldToken = loc(1);
node->isYieldStar = true;
sym(1).Node = node;
} break;
-#line 4042 "qmljs.g"
- case 524: Q_FALLTHROUGH();
-#line 4044 "qmljs.g"
+#line 4233 "qmljs.g"
+ case 549: Q_FALLTHROUGH();
+#line 4235 "qmljs.g"
- case 525: {
+ case 550: {
AST::YieldExpression *node = new (pool) AST::YieldExpression(sym(2).Expression);
node->yieldToken = loc(1);
sym(1).Node = node;
} break;
-#line 4054 "qmljs.g"
+#line 4245 "qmljs.g"
- case 526: {
+ case 551: {
AST::ClassDeclaration *node = new (pool) AST::ClassDeclaration(stringRef(2), sym(3).Expression, sym(5).ClassElementList);
node->classToken = loc(1);
node->identifierToken = loc(2);
@@ -3061,9 +3198,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 4066 "qmljs.g"
+#line 4257 "qmljs.g"
- case 527: {
+ case 552: {
AST::ClassExpression *node = new (pool) AST::ClassExpression(stringRef(2), sym(3).Expression, sym(5).ClassElementList);
node->classToken = loc(1);
node->identifierToken = loc(2);
@@ -3072,9 +3209,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 4078 "qmljs.g"
+#line 4269 "qmljs.g"
- case 528: {
+ case 553: {
AST::ClassDeclaration *node = new (pool) AST::ClassDeclaration(QStringRef(), sym(2).Expression, sym(4).ClassElementList);
node->classToken = loc(1);
node->lbraceToken = loc(3);
@@ -3082,9 +3219,9 @@ case 221: {
sym(1).Node = node;
} break;
-#line 4089 "qmljs.g"
+#line 4280 "qmljs.g"
- case 529: {
+ case 554: {
AST::ClassExpression *node = new (pool) AST::ClassExpression(QStringRef(), sym(2).Expression, sym(4).ClassElementList);
node->classToken = loc(1);
node->lbraceToken = loc(3);
@@ -3092,48 +3229,48 @@ case 221: {
sym(1).Node = node;
} break;
-#line 4102 "qmljs.g"
+#line 4293 "qmljs.g"
- case 531: {
+ case 556: {
lexer->setStaticIsKeyword(true);
} break;
-#line 4109 "qmljs.g"
- case 532:
-#line 4111 "qmljs.g"
+#line 4300 "qmljs.g"
+ case 557:
+#line 4302 "qmljs.g"
- case 533: {
+ case 558: {
lexer->setStaticIsKeyword(false);
} break;
-#line 4118 "qmljs.g"
+#line 4309 "qmljs.g"
- case 534: {
+ case 559: {
sym(1).Node = nullptr;
} break;
-#line 4125 "qmljs.g"
+#line 4316 "qmljs.g"
- case 535: {
+ case 560: {
sym(1).Node = sym(2).Node;
} break;
-#line 4132 "qmljs.g"
+#line 4323 "qmljs.g"
- case 536: {
+ case 561: {
sym(1).Node = nullptr;
} break;
-#line 4139 "qmljs.g"
+#line 4330 "qmljs.g"
- case 537: {
+ case 562: {
if (sym(1).Node)
sym(1).Node = sym(1).ClassElementList->finish();
} break;
-#line 4149 "qmljs.g"
+#line 4340 "qmljs.g"
- case 539: {
+ case 564: {
if (sym(1).Node) {
if (sym(2).Node)
sym(1).ClassElementList = sym(1).ClassElementList->append(sym(2).ClassElementList);
@@ -3142,246 +3279,246 @@ case 221: {
}
} break;
-#line 4161 "qmljs.g"
+#line 4352 "qmljs.g"
- case 540: {
+ case 565: {
AST::ClassElementList *node = new (pool) AST::ClassElementList(sym(1).PatternProperty, false);
sym(1).Node = node;
} break;
-#line 4169 "qmljs.g"
+#line 4360 "qmljs.g"
- case 541: {
+ case 566: {
lexer->setStaticIsKeyword(true);
AST::ClassElementList *node = new (pool) AST::ClassElementList(sym(2).PatternProperty, true);
sym(1).Node = node;
} break;
-#line 4178 "qmljs.g"
+#line 4369 "qmljs.g"
- case 542: {
+ case 567: {
sym(1).Node = nullptr;
} break;
-#line 4187 "qmljs.g"
+#line 4378 "qmljs.g"
- case 543: {
+ case 568: {
sym(1).Node = nullptr;
} break;
-#line 4196 "qmljs.g"
+#line 4387 "qmljs.g"
- case 545: {
+ case 570: {
sym(1).Node = new (pool) AST::Program(sym(1).StatementList->finish());
} break;
-#line 4203 "qmljs.g"
- case 546: {
+#line 4394 "qmljs.g"
+ case 571: {
sym(1).Node = new (pool) AST::ESModule(sym(1).StatementList);
} break;
-#line 4209 "qmljs.g"
+#line 4400 "qmljs.g"
- case 547: {
+ case 572: {
sym(1).StatementList = sym(1).StatementList->finish();
} break;
-#line 4216 "qmljs.g"
+#line 4407 "qmljs.g"
- case 548: {
+ case 573: {
sym(1).StatementList = nullptr;
} break;
-#line 4226 "qmljs.g"
+#line 4417 "qmljs.g"
- case 551: {
+ case 576: {
sym(1).StatementList = sym(1).StatementList->append(sym(2).StatementList);
} break;
-#line 4234 "qmljs.g"
- case 552: Q_FALLTHROUGH();
-#line 4236 "qmljs.g"
+#line 4425 "qmljs.g"
+ case 577: Q_FALLTHROUGH();
+#line 4427 "qmljs.g"
- case 553: {
+ case 578: {
sym(1).StatementList = new (pool) AST::StatementList(sym(1).Node);
} break;
-#line 4245 "qmljs.g"
+#line 4436 "qmljs.g"
- case 555: {
+ case 580: {
auto decl = new (pool) AST::ImportDeclaration(sym(2).ImportClause, sym(3).FromClause);
decl->importToken = loc(1);
sym(1).Node = decl;
} break;
-#line 4253 "qmljs.g"
+#line 4444 "qmljs.g"
- case 556: {
+ case 581: {
auto decl = new (pool) AST::ImportDeclaration(stringRef(2));
decl->importToken = loc(1);
decl->moduleSpecifierToken = loc(2);
sym(1).Node = decl;
} break;
-#line 4263 "qmljs.g"
+#line 4454 "qmljs.g"
- case 557: {
+ case 582: {
auto clause = new (pool) AST::ImportClause(stringRef(1));
clause->importedDefaultBindingToken = loc(1);
sym(1).ImportClause = clause;
} break;
-#line 4271 "qmljs.g"
+#line 4462 "qmljs.g"
- case 558: {
+ case 583: {
sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NameSpaceImport);
} break;
-#line 4277 "qmljs.g"
+#line 4468 "qmljs.g"
- case 559: {
+ case 584: {
sym(1).ImportClause = new (pool) AST::ImportClause(sym(1).NamedImports);
} break;
-#line 4283 "qmljs.g"
+#line 4474 "qmljs.g"
- case 560: {
+ case 585: {
auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NameSpaceImport);
importClause->importedDefaultBindingToken = loc(1);
sym(1).ImportClause = importClause;
} break;
-#line 4291 "qmljs.g"
+#line 4482 "qmljs.g"
- case 561: {
+ case 586: {
auto importClause = new (pool) AST::ImportClause(stringRef(1), sym(3).NamedImports);
importClause->importedDefaultBindingToken = loc(1);
sym(1).ImportClause = importClause;
} break;
-#line 4302 "qmljs.g"
+#line 4493 "qmljs.g"
- case 563: {
+ case 588: {
auto import = new (pool) AST::NameSpaceImport(stringRef(3));
import->starToken = loc(1);
import->importedBindingToken = loc(3);
sym(1).NameSpaceImport = import;
} break;
-#line 4312 "qmljs.g"
+#line 4503 "qmljs.g"
- case 564: {
+ case 589: {
auto namedImports = new (pool) AST::NamedImports();
namedImports->leftBraceToken = loc(1);
namedImports->rightBraceToken = loc(2);
sym(1).NamedImports = namedImports;
} break;
-#line 4321 "qmljs.g"
+#line 4512 "qmljs.g"
- case 565: {
+ case 590: {
auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish());
namedImports->leftBraceToken = loc(1);
namedImports->rightBraceToken = loc(3);
sym(1).NamedImports = namedImports;
} break;
-#line 4330 "qmljs.g"
+#line 4521 "qmljs.g"
- case 566: {
+ case 591: {
auto namedImports = new (pool) AST::NamedImports(sym(2).ImportsList->finish());
namedImports->leftBraceToken = loc(1);
namedImports->rightBraceToken = loc(4);
sym(1).NamedImports = namedImports;
} break;
-#line 4340 "qmljs.g"
+#line 4531 "qmljs.g"
- case 567: {
+ case 592: {
auto clause = new (pool) AST::FromClause(stringRef(2));
clause->fromToken = loc(1);
clause->moduleSpecifierToken = loc(2);
sym(1).FromClause = clause;
} break;
-#line 4350 "qmljs.g"
+#line 4541 "qmljs.g"
- case 568: {
+ case 593: {
auto importsList = new (pool) AST::ImportsList(sym(1).ImportSpecifier);
importsList->importSpecifierToken = loc(1);
sym(1).ImportsList = importsList;
} break;
-#line 4358 "qmljs.g"
+#line 4549 "qmljs.g"
- case 569: {
+ case 594: {
auto importsList = new (pool) AST::ImportsList(sym(1).ImportsList, sym(3).ImportSpecifier);
importsList->importSpecifierToken = loc(3);
sym(1).ImportsList = importsList;
} break;
-#line 4367 "qmljs.g"
+#line 4561 "qmljs.g"
- case 570: {
+ case 595: {
auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1));
importSpecifier->importedBindingToken = loc(1);
sym(1).ImportSpecifier = importSpecifier;
} break;
-#line 4375 "qmljs.g"
+#line 4569 "qmljs.g"
- case 571: {
+ case 596: {
auto importSpecifier = new (pool) AST::ImportSpecifier(stringRef(1), stringRef(3));
importSpecifier->identifierToken = loc(1);
importSpecifier->importedBindingToken = loc(3);
sym(1).ImportSpecifier = importSpecifier;
} break;
-#line 4392 "qmljs.g"
+#line 4586 "qmljs.g"
- case 574: {
+ case 599: {
int token = lookaheadToken(lexer);
if (token == T_FUNCTION || token == T_FUNCTION_STAR || token == T_CLASS)
pushToken(T_FORCE_DECLARATION);
} break;
-#line 4401 "qmljs.g"
+#line 4595 "qmljs.g"
- case 575: {
+ case 600: {
auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(3).FromClause);
exportDeclaration->exportToken = loc(1);
sym(1).ExportDeclaration = exportDeclaration;
} break;
-#line 4409 "qmljs.g"
+#line 4603 "qmljs.g"
- case 576: {
+ case 601: {
auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause, sym(3).FromClause);
exportDeclaration->exportToken = loc(1);
sym(1).ExportDeclaration = exportDeclaration;
} break;
-#line 4417 "qmljs.g"
+#line 4611 "qmljs.g"
- case 577: {
+ case 602: {
auto exportDeclaration = new (pool) AST::ExportDeclaration(sym(2).ExportClause);
exportDeclaration->exportToken = loc(1);
sym(1).ExportDeclaration = exportDeclaration;
} break;
-#line 4425 "qmljs.g"
- case 578: Q_FALLTHROUGH();
-#line 4427 "qmljs.g"
+#line 4619 "qmljs.g"
+ case 603: Q_FALLTHROUGH();
+#line 4621 "qmljs.g"
- case 579: {
+ case 604: {
auto exportDeclaration = new (pool) AST::ExportDeclaration(/*exportDefault=*/false, sym(2).Node);
exportDeclaration->exportToken = loc(1);
sym(1).ExportDeclaration = exportDeclaration;
} break;
-#line 4435 "qmljs.g"
+#line 4629 "qmljs.g"
- case 580: {
+ case 605: {
if (auto *f = AST::cast<AST::FunctionDeclaration*>(sym(5).Node)) {
if (f->name.isEmpty()) {
f->name = stringRef(2);
@@ -3390,9 +3527,9 @@ case 221: {
}
} Q_FALLTHROUGH();
-#line 4446 "qmljs.g"
+#line 4640 "qmljs.g"
- case 581: {
+ case 606: {
// Emulate 15.2.3.11
if (auto *cls = AST::cast<AST::ClassDeclaration*>(sym(5).Node)) {
if (cls->name.isEmpty()) {
@@ -3406,9 +3543,9 @@ case 221: {
sym(1).ExportDeclaration = exportDeclaration;
} break;
-#line 4462 "qmljs.g"
+#line 4656 "qmljs.g"
- case 582: {
+ case 607: {
// 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);
@@ -3422,63 +3559,63 @@ case 221: {
sym(1).ExportDeclaration = exportDeclaration;
} break;
-#line 4479 "qmljs.g"
+#line 4673 "qmljs.g"
- case 583: {
+ case 608: {
auto exportClause = new (pool) AST::ExportClause();
exportClause->leftBraceToken = loc(1);
exportClause->rightBraceToken = loc(2);
sym(1).ExportClause = exportClause;
} break;
-#line 4488 "qmljs.g"
+#line 4682 "qmljs.g"
- case 584: {
+ case 609: {
auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish());
exportClause->leftBraceToken = loc(1);
exportClause->rightBraceToken = loc(3);
sym(1).ExportClause = exportClause;
} break;
-#line 4497 "qmljs.g"
+#line 4691 "qmljs.g"
- case 585: {
+ case 610: {
auto exportClause = new (pool) AST::ExportClause(sym(2).ExportsList->finish());
exportClause->leftBraceToken = loc(1);
exportClause->rightBraceToken = loc(4);
sym(1).ExportClause = exportClause;
} break;
-#line 4507 "qmljs.g"
+#line 4701 "qmljs.g"
- case 586: {
+ case 611: {
sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportSpecifier);
} break;
-#line 4513 "qmljs.g"
+#line 4707 "qmljs.g"
- case 587: {
+ case 612: {
sym(1).ExportsList = new (pool) AST::ExportsList(sym(1).ExportsList, sym(3).ExportSpecifier);
} break;
-#line 4520 "qmljs.g"
+#line 4714 "qmljs.g"
- case 588: {
+ case 613: {
auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1));
exportSpecifier->identifierToken = loc(1);
sym(1).ExportSpecifier = exportSpecifier;
} break;
-#line 4528 "qmljs.g"
+#line 4722 "qmljs.g"
- case 589: {
+ case 614: {
auto exportSpecifier = new (pool) AST::ExportSpecifier(stringRef(1), stringRef(3));
exportSpecifier->identifierToken = loc(1);
exportSpecifier->exportedIdentifierToken = loc(3);
sym(1).ExportSpecifier = exportSpecifier;
} break;
-#line 4539 "qmljs.g"
+#line 4733 "qmljs.g"
// ------------ end of switch statement
} // switch
@@ -3511,8 +3648,8 @@ case 221: {
yylloc.startColumn += yylloc.length;
yylloc.length = 0;
- //const QString msg = QCoreApplication::translate("QQmlParser", "Missing `;'");
- //diagnostic_messages.append(compileError(yyloc, msg, Severity::Warning));
+ //const QString msg = QCoreApplication::translate("QmlParser", "Missing `;'");
+ //diagnostic_messages.append(compileError(yyloc, msg, QtWarningMsg));
first_token = &token_buffer[0];
last_token = &token_buffer[1];
@@ -3546,9 +3683,9 @@ case 221: {
QString msg;
int token = token_buffer[0].token;
if (token < 0 || token >= TERMINAL_COUNT)
- msg = QCoreApplication::translate("QQmlParser", "Syntax error");
+ msg = QCoreApplication::translate("QmlParser", "Syntax error");
else
- msg = QCoreApplication::translate("QQmlParser", "Unexpected token `%1'").arg(QLatin1String(spell[token]));
+ msg = QCoreApplication::translate("QmlParser", "Unexpected token `%1'").arg(QLatin1String(spell[token]));
diagnostic_messages.append(compileError(token_buffer[0].loc, msg));
action = errorState;
@@ -3579,7 +3716,7 @@ case 221: {
#ifdef PARSER_DEBUG
qDebug() << "Parse error, trying to recover (2).";
#endif
- const QString msg = QCoreApplication::translate("QQmlParser", "Expected token `%1'").arg(QLatin1String(spell[*tk]));
+ const QString msg = QCoreApplication::translate("QmlParser", "Expected token `%1'").arg(QLatin1String(spell[*tk]));
diagnostic_messages.append(compileError(token_buffer[0].loc, msg));
pushToken(*tk);
@@ -3594,7 +3731,7 @@ case 221: {
int a = t_action(errorState, tk);
if (a > 0 && t_action(a, yytoken)) {
- const QString msg = QCoreApplication::translate("QQmlParser", "Expected token `%1'").arg(QLatin1String(spell[tk]));
+ const QString msg = QCoreApplication::translate("QmlParser", "Expected token `%1'").arg(QLatin1String(spell[tk]));
diagnostic_messages.append(compileError(token_buffer[0].loc, msg));
pushToken(tk);
@@ -3602,7 +3739,7 @@ case 221: {
}
}
- const QString msg = QCoreApplication::translate("QQmlParser", "Syntax error");
+ const QString msg = QCoreApplication::translate("QmlParser", "Syntax error");
diagnostic_messages.append(compileError(token_buffer[0].loc, msg));
}
diff --git a/src/libs/qmljs/parser/qmljsparser_p.h b/src/libs/qmljs/parser/qmljsparser_p.h
index 5dfa141d73..9d9a0f2fc9 100644
--- a/src/libs/qmljs/parser/qmljsparser_p.h
+++ b/src/libs/qmljs/parser/qmljsparser_p.h
@@ -1,13 +1,10 @@
-
-#line 182 "qmljs.g"
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
-** This file is part of the QtQml module of the Qt Toolkit.
+** This file is part of Qt Creator.
**
-** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
@@ -16,28 +13,16 @@
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
+#line 223 "qmljs.g"
//
@@ -66,10 +51,11 @@
#ifndef QMLJSPARSER_P_H
#define QMLJSPARSER_P_H
-#include "qmljsglobal_p.h"
-#include "qmljsgrammar_p.h"
-#include "qmljsast_p.h"
-#include "qmljsengine_p.h"
+#include "qmljs/parser/qmljsglobal_p.h"
+#include "qmljs/parser/qmljsgrammar_p.h"
+#include "qmljs/parser/qmljsast_p.h"
+#include "qmljs/parser/qmljsengine_p.h"
+#include "qmljs/parser/qmljsdiagnosticmessage_p.h"
#include <QtCore/qlist.h>
#include <QtCore/qstring.h>
@@ -143,6 +129,8 @@ public:
AST::UiQualifiedId *UiQualifiedId;
AST::UiEnumMemberList *UiEnumMemberList;
AST::UiVersionSpecifier *UiVersionSpecifier;
+ AST::UiAnnotation *UiAnnotation;
+ AST::UiAnnotationList *UiAnnotationList;
};
public:
@@ -224,7 +212,7 @@ protected:
inline QStringRef &rawStringRef(int index)
{ return rawString_stack [tos + index - 1]; }
- inline AST::SourceLocation &loc(int index)
+ inline SourceLocation &loc(int index)
{ return location_stack [tos + index - 1]; }
AST::UiQualifiedId *reparseAsQualifiedId(AST::ExpressionNode *expr);
@@ -232,20 +220,20 @@ protected:
void pushToken(int token);
int lookaheadToken(Lexer *lexer);
- static DiagnosticMessage compileError(const AST::SourceLocation &location,
- const QString &message, Severity::Enum kind = Severity::Error)
+ static DiagnosticMessage compileError(const SourceLocation &location,
+ const QString &message, QtMsgType kind = QtCriticalMsg)
{
DiagnosticMessage error;
error.loc = location;
error.message = message;
- error.kind = kind;
+ error.kind = DiagnosticMessage::qtMsgTypeToKind(kind);
return error;
}
- void syntaxError(const AST::SourceLocation &location, const char *message) {
+ void syntaxError(const SourceLocation &location, const char *message) {
diagnostic_messages.append(compileError(location, QLatin1String(message)));
}
- void syntaxError(const AST::SourceLocation &location, const QString &message) {
+ void syntaxError(const SourceLocation &location, const QString &message) {
diagnostic_messages.append(compileError(location, message));
}
@@ -258,7 +246,7 @@ protected:
int stack_size = 0;
Value *sym_stack = nullptr;
int *state_stack = nullptr;
- AST::SourceLocation *location_stack = nullptr;
+ SourceLocation *location_stack = nullptr;
QVector<QStringRef> string_stack;
QVector<QStringRef> rawString_stack;
@@ -270,7 +258,7 @@ protected:
struct SavedToken {
int token;
double dval;
- AST::SourceLocation loc;
+ SourceLocation loc;
QStringRef spell;
QStringRef raw;
};
@@ -279,8 +267,8 @@ protected:
double yylval = 0.;
QStringRef yytokenspell;
QStringRef yytokenraw;
- AST::SourceLocation yylloc;
- AST::SourceLocation yyprevlloc;
+ SourceLocation yylloc;
+ SourceLocation yyprevlloc;
SavedToken token_buffer[TOKEN_BUFFER_SIZE];
SavedToken *first_token = nullptr;
@@ -293,7 +281,7 @@ protected:
CE_ParenthesizedExpression,
CE_FormalParameterList
};
- AST::SourceLocation coverExpressionErrorLocation;
+ SourceLocation coverExpressionErrorLocation;
CoverExpressionType coverExpressionType = CE_Invalid;
QList<DiagnosticMessage> diagnostic_messages;
@@ -303,27 +291,27 @@ protected:
-#line 1686 "qmljs.g"
+#line 1828 "qmljs.g"
-#define J_SCRIPT_REGEXPLITERAL_RULE1 144
+#define J_SCRIPT_REGEXPLITERAL_RULE1 161
-#line 1698 "qmljs.g"
+#line 1840 "qmljs.g"
-#define J_SCRIPT_REGEXPLITERAL_RULE2 145
+#define J_SCRIPT_REGEXPLITERAL_RULE2 162
-#line 3198 "qmljs.g"
+#line 3389 "qmljs.g"
-#define J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE 435
+#define J_SCRIPT_EXPRESSIONSTATEMENTLOOKAHEAD_RULE 460
-#line 3850 "qmljs.g"
+#line 4041 "qmljs.g"
-#define J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE 505
+#define J_SCRIPT_CONCISEBODYLOOKAHEAD_RULE 530
-#line 4389 "qmljs.g"
+#line 4583 "qmljs.g"
-#define J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE 574
+#define J_SCRIPT_EXPORTDECLARATIONLOOKAHEAD_RULE 599
-#line 4673 "qmljs.g"
+#line 4867 "qmljs.g"
QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmlerror.h b/src/libs/qmljs/parser/qmljssourcelocation_p.h
index 69fd20153f..dee7584fb1 100644
--- a/src/libs/qmljs/parser/qmlerror.h
+++ b/src/libs/qmljs/parser/qmljssourcelocation_p.h
@@ -25,45 +25,45 @@
#pragma once
-#include <QtCore/qurl.h>
-#include <QtCore/qstring.h>
+#include "qmljsglobal_p.h"
-QT_BEGIN_NAMESPACE
+//
+// 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.
+//
-// ### Qt 6: should this be called QmlMessage, since it can have a message type?
-class QDebug;
-class QmlErrorPrivate;
-class QmlError
+QT_QML_BEGIN_NAMESPACE
+
+namespace QmlJS {
+
+class SourceLocation
{
public:
- QmlError();
- QmlError(const QmlError &);
- QmlError &operator=(const QmlError &);
- ~QmlError();
+ explicit SourceLocation(quint32 offset = 0, quint32 length = 0, quint32 line = 0, quint32 column = 0)
+ : offset(offset), length(length),
+ startLine(line), startColumn(column)
+ { }
- bool isValid() const;
+ bool isValid() const { return length != 0; }
- QUrl url() const;
- void setUrl(const QUrl &);
- QString description() const;
- void setDescription(const QString &);
- int line() const;
- void setLine(int);
- int column() const;
- void setColumn(int);
- QObject *object() const;
- void setObject(QObject *);
- QtMsgType messageType() const;
- void setMessageType(QtMsgType messageType);
+ quint32 begin() const { return offset; }
+ quint32 end() const { return offset + length; }
- QString toString() const;
-private:
- QmlErrorPrivate *d;
+// attributes
+ // ### encode
+ quint32 offset;
+ quint32 length;
+ quint32 startLine;
+ quint32 startColumn;
};
-QDebug operator<<(QDebug debug, const QmlError &error);
-
-Q_DECLARE_TYPEINFO(QmlError, Q_MOVABLE_TYPE);
+} // namespace QmlJS
-QT_END_NAMESPACE
+QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs
index d75bfcef7b..a0095af798 100644
--- a/src/libs/qmljs/qmljs.qbs
+++ b/src/libs/qmljs/qmljs.qbs
@@ -62,7 +62,6 @@ Project {
prefix: "parser/"
files: [
"qmldirparser.cpp", "qmldirparser_p.h",
- "qmlerror.cpp", "qmlerror.h",
"qmljsast.cpp", "qmljsast_p.h",
"qmljsastfwd_p.h",
"qmljsastvisitor.cpp", "qmljsastvisitor_p.h",
@@ -73,6 +72,7 @@ Project {
"qmljslexer.cpp", "qmljslexer_p.h",
"qmljsmemorypool_p.h",
"qmljsparser.cpp", "qmljsparser_p.h",
+ "qmljssourcelocation.cpp", "qmljssourcelocation_p.h",
]
}
diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp
index 70912cdf21..5e47353dd8 100644
--- a/src/libs/qmljs/qmljsbind.cpp
+++ b/src/libs/qmljs/qmljsbind.cpp
@@ -162,6 +162,11 @@ ObjectValue *Bind::bindObject(UiQualifiedId *qualifiedTypeNameId, UiObjectInitia
return switchObjectValue(parentObjectValue);
}
+void Bind::throwRecursionDepthError()
+{
+ _diagnosticMessages->append(DiagnosticMessage(Severity::Error, SourceLocation(), tr("Hit maximal recursion depth in AST visit")));
+}
+
void Bind::accept(Node *node)
{
Node::accept(node, this);
@@ -194,14 +199,8 @@ void Bind::endVisit(UiProgram *)
bool Bind::visit(UiImport *ast)
{
ComponentVersion version;
- if (ast->versionToken.isValid()) {
- const QString versionString = _doc->source().mid(ast->versionToken.offset, ast->versionToken.length);
- version = ComponentVersion(versionString);
- if (!version.isValid()) {
- _diagnosticMessages->append(
- errorMessage(ast->versionToken, tr("expected two numbers separated by a dot")));
- }
- }
+ if (ast->version)
+ version = ComponentVersion(ast->version->majorVersion, ast->version->minorVersion);
if (ast->importUri) {
if (!version.isValid()) {
diff --git a/src/libs/qmljs/qmljsbind.h b/src/libs/qmljs/qmljsbind.h
index 575c52db8d..95b09cf839 100644
--- a/src/libs/qmljs/qmljsbind.h
+++ b/src/libs/qmljs/qmljsbind.h
@@ -84,6 +84,8 @@ protected:
ObjectValue *switchObjectValue(ObjectValue *newObjectValue);
ObjectValue *bindObject(AST::UiQualifiedId *qualifiedTypeNameId, AST::UiObjectInitializer *initializer);
+ void throwRecursionDepthError() override;
+
private:
Document *_doc;
ValueOwner _valueOwner;
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 64cb19f2ed..a54371603c 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -313,6 +313,12 @@ protected:
_state = ReachesEnd;
return false;
}
+
+ void throwRecursionDepthError() override
+ {
+ // handle differently? ReturnOrThrow declares unreachable code, but probably leads to bogus warnings
+ _state = ReachesEnd;
+ }
};
class MarkUnreachableCode : protected ReachesEndCheck
@@ -352,6 +358,11 @@ protected:
if (message.isValid())
_messages += message;
}
+
+ void throwRecursionDepthError() override
+ {
+ _messages.append(Message(ErrHitMaximumRecursion, SourceLocation()));
+ }
};
class DeclarationsCheck : protected Visitor
@@ -510,6 +521,11 @@ protected:
--_block;
}
+ void throwRecursionDepthError() override
+ {
+ addMessage(ErrHitMaximumRecursion, SourceLocation());
+ }
+
private:
void addMessage(StaticAnalysis::Type type, const SourceLocation &loc, const QString &arg1 = QString())
{
@@ -808,6 +824,11 @@ void Check::endVisit(UiObjectInitializer *)
m_idStack.pop();
}
+void Check::throwRecursionDepthError()
+{
+ addMessage(ErrHitMaximumRecursion, SourceLocation());
+}
+
void Check::checkProperty(UiQualifiedId *qualifiedId)
{
const QString id = toString(qualifiedId);
diff --git a/src/libs/qmljs/qmljscheck.h b/src/libs/qmljs/qmljscheck.h
index e2bb303bcc..37704d801b 100644
--- a/src/libs/qmljs/qmljscheck.h
+++ b/src/libs/qmljs/qmljscheck.h
@@ -99,12 +99,13 @@ protected:
void endVisit(QmlJS::AST::UiObjectInitializer *) override;
+ void throwRecursionDepthError() override;
private:
void visitQmlObject(AST::Node *ast, AST::UiQualifiedId *typeId,
AST::UiObjectInitializer *initializer);
const Value *checkScopeObjectMember(const AST::UiQualifiedId *id);
void checkAssignInCondition(AST::ExpressionNode *condition);
- void checkCaseFallthrough(AST::StatementList *statements, AST::SourceLocation errorLoc, AST::SourceLocation nextLoc);
+ void checkCaseFallthrough(AST::StatementList *statements, SourceLocation errorLoc, SourceLocation nextLoc);
void checkProperty(QmlJS::AST::UiQualifiedId *);
void checkNewExpression(AST::ExpressionNode *node);
void checkBindingRhs(AST::Statement *statement);
@@ -112,7 +113,7 @@ private:
void addMessages(const QList<StaticAnalysis::Message> &messages);
void addMessage(const StaticAnalysis::Message &message);
- void addMessage(StaticAnalysis::Type type, const AST::SourceLocation &location,
+ void addMessage(StaticAnalysis::Type type, const SourceLocation &location,
const QString &arg1 = QString(), const QString &arg2 = QString());
void scanCommentsForAnnotations();
@@ -143,7 +144,7 @@ private:
class MessageTypeAndSuppression
{
public:
- AST::SourceLocation suppressionSource;
+ SourceLocation suppressionSource;
StaticAnalysis::Type type;
bool wasSuppressed;
};
diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h
index 7e3b499f5a..7565ab5fab 100644
--- a/src/libs/qmljs/qmljsdocument.h
+++ b/src/libs/qmljs/qmljsdocument.h
@@ -97,7 +97,7 @@ public:
QString path() const;
QString componentName() const;
- QList<AST::SourceLocation> jsDirectives() const;
+ QList<SourceLocation> jsDirectives() const;
private:
bool parse_helper(int kind);
@@ -111,7 +111,7 @@ private:
QString _path;
QString _componentName;
QString _source;
- QList<AST::SourceLocation> _jsdirectives;
+ QList<SourceLocation> _jsdirectives;
QWeakPointer<Document> _ptr;
QByteArray _fingerprint;
int _editorRevision;
diff --git a/src/libs/qmljs/qmljsevaluate.cpp b/src/libs/qmljs/qmljsevaluate.cpp
index 4a408dac93..d2bb3c3460 100644
--- a/src/libs/qmljs/qmljsevaluate.cpp
+++ b/src/libs/qmljs/qmljsevaluate.cpp
@@ -29,6 +29,8 @@
#include "qmljsvalueowner.h"
#include "parser/qmljsast_p.h"
+#include <QDebug>
+
using namespace QmlJS;
/*!
@@ -668,3 +670,8 @@ bool Evaluate::visit(AST::DebuggerStatement *)
{
return false;
}
+
+void Evaluate::throwRecursionDepthError()
+{
+ qWarning("Evaluate hit maximum recursion error when visiting AST");
+}
diff --git a/src/libs/qmljs/qmljsevaluate.h b/src/libs/qmljs/qmljsevaluate.h
index 45ffc2ece8..4cd37f56fe 100644
--- a/src/libs/qmljs/qmljsevaluate.h
+++ b/src/libs/qmljs/qmljsevaluate.h
@@ -145,6 +145,8 @@ protected:
bool visit(AST::StatementList *ast) override;
bool visit(AST::DebuggerStatement *ast) override;
+ void throwRecursionDepthError() override;
+
private:
QmlJS::Document::Ptr _doc;
ValueOwner *_valueOwner;
diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index 695cad1600..df6d59c461 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -38,6 +38,7 @@
#include <utils/qtcassert.h>
#include <QApplication>
+#include <QDebug>
#include <QDir>
#include <QFile>
#include <QString>
@@ -1992,7 +1993,7 @@ public:
}
protected:
- bool visit(ArrayMemberExpression *ast)
+ bool visit(ArrayMemberExpression *ast) override
{
if (IdentifierExpression *idExp = cast<IdentifierExpression *>(ast->base)) {
if (idExp->name == QLatin1String("arguments"))
@@ -2002,8 +2003,12 @@ protected:
}
// don't go into nested functions
- bool visit(Program *) { return false; }
- bool visit(StatementList *) { return false; }
+ bool visit(Program *) override { return false; }
+ bool visit(StatementList *) override { return false; }
+
+ void throwRecursionDepthError() override {
+ qWarning("Warning: Hit maximum recursion error visiting AST in UsesArgumentsArray");
+ }
};
} // anonymous namespace
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp
index 1f62cf1343..6c723bba44 100644
--- a/src/libs/qmljs/qmljslink.cpp
+++ b/src/libs/qmljs/qmljslink.cpp
@@ -101,8 +101,8 @@ public:
void loadImplicitDirectoryImports(Imports *imports, const Document::Ptr &doc);
void loadImplicitDefaultImports(Imports *imports);
- void error(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message);
- void warning(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message);
+ void error(const Document::Ptr &doc, const SourceLocation &loc, const QString &message);
+ void warning(const Document::Ptr &doc, const SourceLocation &loc, const QString &message);
void appendDiagnostic(const Document::Ptr &doc, const DiagnosticMessage &message);
private:
@@ -516,13 +516,13 @@ bool LinkPrivate::importLibrary(const Document::Ptr &doc,
return true;
}
-void LinkPrivate::error(const Document::Ptr &doc, const AST::SourceLocation &loc,
+void LinkPrivate::error(const Document::Ptr &doc, const SourceLocation &loc,
const QString &message)
{
appendDiagnostic(doc, DiagnosticMessage(Severity::Error, loc, message));
}
-void LinkPrivate::warning(const Document::Ptr &doc, const AST::SourceLocation &loc,
+void LinkPrivate::warning(const Document::Ptr &doc, const SourceLocation &loc,
const QString &message)
{
appendDiagnostic(doc, DiagnosticMessage(Severity::Warning, loc, message));
diff --git a/src/libs/qmljs/qmljsreformatter.cpp b/src/libs/qmljs/qmljsreformatter.cpp
index 6fdb6b034f..4027c7a073 100644
--- a/src/libs/qmljs/qmljsreformatter.cpp
+++ b/src/libs/qmljs/qmljsreformatter.cpp
@@ -585,9 +585,11 @@ protected:
out(QString::fromLatin1("\"%1\"").arg(ast->fileName.toString()));
else
accept(ast->importUri);
- if (ast->versionToken.isValid()) {
+ if (ast->version) {
out(" ");
- out(ast->versionToken);
+ out(QString::number(ast->version->majorVersion).toUtf8());
+ out(".");
+ out(QString::number(ast->version->minorVersion).toUtf8());
}
if (!ast->importId.isNull()) {
out(" as ", ast->asToken);
@@ -1339,6 +1341,10 @@ protected:
}
return false;
}
+
+ void throwRecursionDepthError() override {
+ out("/* ERROR: Hit recursion limit visiting AST, rewrite failed */");
+ }
};
} // anonymous namespace
diff --git a/src/libs/qmljs/qmljsscopeastpath.cpp b/src/libs/qmljs/qmljsscopeastpath.cpp
index 6e7fd27583..953f4761e8 100644
--- a/src/libs/qmljs/qmljsscopeastpath.cpp
+++ b/src/libs/qmljs/qmljsscopeastpath.cpp
@@ -26,6 +26,7 @@
#include "qmljsscopeastpath.h"
#include "parser/qmljsast_p.h"
+#include <QDebug>
using namespace QmlJS;
using namespace AST;
@@ -112,6 +113,11 @@ bool ScopeAstPath::visit(FunctionExpression *node)
return false;
}
+void ScopeAstPath::throwRecursionDepthError()
+{
+ qWarning("ScopeAstPath hit the maximum recursion limit while visiting the AST.");
+}
+
bool ScopeAstPath::containsOffset(SourceLocation start, SourceLocation end)
{
return _offset >= start.begin() && _offset <= end.end();
diff --git a/src/libs/qmljs/qmljsscopeastpath.h b/src/libs/qmljs/qmljsscopeastpath.h
index 44b4eacf7c..61ffb5a0f6 100644
--- a/src/libs/qmljs/qmljsscopeastpath.h
+++ b/src/libs/qmljs/qmljsscopeastpath.h
@@ -51,8 +51,9 @@ protected:
bool visit(AST::FunctionDeclaration *node) override;
bool visit(AST::FunctionExpression *node) override;
+ void throwRecursionDepthError() override;
private:
- bool containsOffset(AST::SourceLocation start, AST::SourceLocation end);
+ bool containsOffset(SourceLocation start, SourceLocation end);
QList<AST::Node *> _result;
Document::Ptr _doc;
diff --git a/src/libs/qmljs/qmljsscopechain.cpp b/src/libs/qmljs/qmljsscopechain.cpp
index c9fadb91e9..bbddcbfd04 100644
--- a/src/libs/qmljs/qmljsscopechain.cpp
+++ b/src/libs/qmljs/qmljsscopechain.cpp
@@ -287,7 +287,7 @@ void ScopeChain::update() const
static void addInstantiatingComponents(ContextPtr context, QmlComponentChain *chain)
{
const QRegExp importCommentPattern(QLatin1String("@scope\\s+(.*)"));
- foreach (const AST::SourceLocation &commentLoc, chain->document()->engine()->comments()) {
+ foreach (const SourceLocation &commentLoc, chain->document()->engine()->comments()) {
const QString &comment = chain->document()->source().mid(commentLoc.begin(), commentLoc.length);
// find all @scope annotations
diff --git a/src/libs/qmljs/qmljssimplereader.cpp b/src/libs/qmljs/qmljssimplereader.cpp
index f97770ade9..b0269594aa 100644
--- a/src/libs/qmljs/qmljssimplereader.cpp
+++ b/src/libs/qmljs/qmljssimplereader.cpp
@@ -125,7 +125,7 @@ bool SimpleAbstractStreamReader::readFile(const QString &fileName)
bool SimpleAbstractStreamReader::readFromSource(const QString &source)
{
m_errors.clear();
- m_currentSourceLocation = AST::SourceLocation();
+ m_currentSourceLocation = SourceLocation();
m_source = source;
@@ -151,7 +151,7 @@ QStringList SimpleAbstractStreamReader::errors() const
return m_errors;
}
-void SimpleAbstractStreamReader::addError(const QString &error, const AST::SourceLocation &sourceLocation)
+void SimpleAbstractStreamReader::addError(const QString &error, const SourceLocation &sourceLocation)
{
m_errors << QString::fromLatin1("%1:%2: %3\n").arg(
QString::number(sourceLocation.startLine),
@@ -159,7 +159,7 @@ void SimpleAbstractStreamReader::addError(const QString &error, const AST::Sourc
error);
}
-AST::SourceLocation SimpleAbstractStreamReader::currentSourceLocation() const
+SourceLocation SimpleAbstractStreamReader::currentSourceLocation() const
{
return m_currentSourceLocation;
}
@@ -278,13 +278,13 @@ QVariant SimpleAbstractStreamReader::parsePropertyExpression(AST::ExpressionNode
return textAt(expressionNode->firstSourceLocation(), expressionNode->lastSourceLocation());
}
-void SimpleAbstractStreamReader::setSourceLocation(const AST::SourceLocation &sourceLocation)
+void SimpleAbstractStreamReader::setSourceLocation(const SourceLocation &sourceLocation)
{
m_currentSourceLocation = sourceLocation;
}
-QString SimpleAbstractStreamReader::textAt(const AST::SourceLocation &from,
- const AST::SourceLocation &to)
+QString SimpleAbstractStreamReader::textAt(const SourceLocation &from,
+ const SourceLocation &to)
{
return m_source.mid(from.offset, to.end() - from.begin());
}
diff --git a/src/libs/qmljs/qmljssimplereader.h b/src/libs/qmljs/qmljssimplereader.h
index f2fe168a25..2d5bad3e09 100644
--- a/src/libs/qmljs/qmljssimplereader.h
+++ b/src/libs/qmljs/qmljssimplereader.h
@@ -85,8 +85,8 @@ public:
QStringList errors() const;
protected:
- void addError(const QString &error, const AST::SourceLocation &sourceLocation = AST::SourceLocation());
- AST::SourceLocation currentSourceLocation() const;
+ void addError(const QString &error, const SourceLocation &sourceLocation = SourceLocation());
+ SourceLocation currentSourceLocation() const;
virtual void elementStart(const QString &name) = 0;
virtual void elementEnd() = 0;
@@ -100,11 +100,11 @@ private:
void readProperty(AST::UiScriptBinding *uiScriptBinding);
QVariant parsePropertyScriptBinding(AST::UiScriptBinding *ExpressionNode);
QVariant parsePropertyExpression(AST::ExpressionNode *expressionNode);
- void setSourceLocation(const AST::SourceLocation &sourceLocation);
- QString textAt(const AST::SourceLocation &from, const AST::SourceLocation &to);
+ void setSourceLocation(const SourceLocation &sourceLocation);
+ QString textAt(const SourceLocation &from, const SourceLocation &to);
QStringList m_errors;
- AST::SourceLocation m_currentSourceLocation;
+ SourceLocation m_currentSourceLocation;
QString m_source;
};
diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.cpp b/src/libs/qmljs/qmljsstaticanalysismessage.cpp
index 1d0e165935..f991b85c3c 100644
--- a/src/libs/qmljs/qmljsstaticanalysismessage.cpp
+++ b/src/libs/qmljs/qmljsstaticanalysismessage.cpp
@@ -26,6 +26,7 @@
#include "qmljsstaticanalysismessage.h"
#include "qmljsconstants.h"
#include "parser/qmljsengine_p.h"
+#include "parser/qmljsdiagnosticmessage_p.h"
#include <utils/qtcassert.h>
@@ -242,6 +243,8 @@ StaticAnalysisMessages::StaticAnalysisMessages()
tr("A State cannot have a child item (%1)."), 1);
newMsg(WarnDuplicateImport, Warning,
tr("Duplicate import (%1)."), 1);
+ newMsg(ErrHitMaximumRecursion, Error,
+ tr("Hit Maximum recursion limit when visiting AST"));
}
} // anonymous namespace
@@ -258,7 +261,7 @@ Message::Message()
{}
Message::Message(Type type,
- AST::SourceLocation location,
+ SourceLocation location,
const QString &arg1,
const QString &arg2,
bool appendTypeId)
diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.h b/src/libs/qmljs/qmljsstaticanalysismessage.h
index d0f349fef9..50a70ab209 100644
--- a/src/libs/qmljs/qmljsstaticanalysismessage.h
+++ b/src/libs/qmljs/qmljsstaticanalysismessage.h
@@ -129,6 +129,7 @@ enum Type
ErrLongerStringValueExpected = 321,
ErrShorterStringValueExpected = 322,
ErrInvalidArrayValueLength = 323,
+ ErrHitMaximumRecursion = 324,
WarnDuplicateImport = 400
};
@@ -144,7 +145,7 @@ class QMLJS_EXPORT Message
{
public:
Message();
- Message(Type type, AST::SourceLocation location,
+ Message(Type type, SourceLocation location,
const QString &arg1 = QString(),
const QString &arg2 = QString(),
bool appendTypeId = true);
@@ -157,7 +158,7 @@ public:
QString suppressionString() const;
static QRegExp suppressionPattern();
- AST::SourceLocation location;
+ SourceLocation location;
QString message;
Type type;
Severity::Enum severity = Severity::Enum::Hint;
diff --git a/src/libs/qmljs/qmljstypedescriptionreader.cpp b/src/libs/qmljs/qmljstypedescriptionreader.cpp
index 152432ca7b..c5a5954774 100644
--- a/src/libs/qmljs/qmljstypedescriptionreader.cpp
+++ b/src/libs/qmljs/qmljstypedescriptionreader.cpp
@@ -107,15 +107,12 @@ void TypeDescriptionReader::readDocument(UiProgram *ast)
}
ComponentVersion version;
- const QString versionString = _source.mid(import->versionToken.offset, import->versionToken.length);
- const int dotIdx = versionString.indexOf(QLatin1Char('.'));
- if (dotIdx != -1) {
- version = ComponentVersion(versionString.leftRef(dotIdx).toInt(),
- versionString.midRef(dotIdx + 1).toInt());
- }
- if (version.majorVersion() != 1) {
- addError(import->versionToken, tr("Major version different from 1 not supported."));
- return;
+ if (UiVersionSpecifier *uiVersion = import->version) {
+ version = ComponentVersion(import->version->majorVersion, import->version->minorVersion);
+ if (version.majorVersion() != 1) {
+ addError(uiVersion->majorToken, tr("Major version different from 1 not supported."));
+ return;
+ }
}
if (!ast->members || !ast->members->member || ast->members->next) {
diff --git a/src/libs/qmljs/qmljstypedescriptionreader.h b/src/libs/qmljs/qmljstypedescriptionreader.h
index 69eec45b17..fb5b2f4430 100644
--- a/src/libs/qmljs/qmljstypedescriptionreader.h
+++ b/src/libs/qmljs/qmljstypedescriptionreader.h
@@ -39,13 +39,13 @@ class QBuffer;
QT_END_NAMESPACE
namespace QmlJS {
+class SourceLocation;
class ModuleApiInfo;
namespace AST {
class UiProgram;
class UiObjectDefinition;
class UiScriptBinding;
-class SourceLocation;
}
class QMLJS_EXPORT TypeDescriptionReader
@@ -83,8 +83,8 @@ private:
void readMetaObjectRevisions(AST::UiScriptBinding *ast, LanguageUtils::FakeMetaObject::Ptr fmo);
void readEnumValues(AST::UiScriptBinding *ast, LanguageUtils::FakeMetaEnum *fme);
- void addError(const AST::SourceLocation &loc, const QString &message);
- void addWarning(const AST::SourceLocation &loc, const QString &message);
+ void addError(const SourceLocation &loc, const QString &message);
+ void addWarning(const SourceLocation &loc, const QString &message);
QString _fileName;
QString _source;
diff --git a/src/libs/qmljs/qmljsutils.cpp b/src/libs/qmljs/qmljsutils.cpp
index 4872a0bae7..ba48ef1f07 100644
--- a/src/libs/qmljs/qmljsutils.cpp
+++ b/src/libs/qmljs/qmljsutils.cpp
@@ -191,7 +191,7 @@ UiQualifiedId *QmlJS::qualifiedTypeNameId(Node *node)
return nullptr;
}
-DiagnosticMessage QmlJS::errorMessage(const AST::SourceLocation &loc, const QString &message)
+DiagnosticMessage QmlJS::errorMessage(const SourceLocation &loc, const QString &message)
{
return DiagnosticMessage(Severity::Error, loc, message);
}
diff --git a/src/libs/qmljs/qmljsutils.h b/src/libs/qmljs/qmljsutils.h
index 103548ade3..ce85a94986 100644
--- a/src/libs/qmljs/qmljsutils.h
+++ b/src/libs/qmljs/qmljsutils.h
@@ -29,6 +29,7 @@
#include "qmljsconstants.h"
#include "parser/qmljsastfwd_p.h"
#include "parser/qmljsengine_p.h"
+#include "parser/qmljsdiagnosticmessage_p.h"
QT_FORWARD_DECLARE_CLASS(QColor)
@@ -38,10 +39,10 @@ QMLJS_EXPORT QColor toQColor(const QString &qmlColorString);
QMLJS_EXPORT QString toString(AST::UiQualifiedId *qualifiedId,
const QChar delimiter = QLatin1Char('.'));
-QMLJS_EXPORT AST::SourceLocation locationFromRange(const AST::SourceLocation &start,
- const AST::SourceLocation &end);
+QMLJS_EXPORT SourceLocation locationFromRange(const SourceLocation &start,
+ const SourceLocation &end);
-QMLJS_EXPORT AST::SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *);
+QMLJS_EXPORT SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *);
QMLJS_EXPORT QString idOfObject(AST::Node *object, AST::UiScriptBinding **idBinding = nullptr);
@@ -51,7 +52,7 @@ QMLJS_EXPORT AST::UiQualifiedId *qualifiedTypeNameId(AST::Node *node);
QMLJS_EXPORT bool isValidBuiltinPropertyType(const QString &name);
-QMLJS_EXPORT DiagnosticMessage errorMessage(const AST::SourceLocation &loc,
+QMLJS_EXPORT DiagnosticMessage errorMessage(const SourceLocation &loc,
const QString &message);
QMLJS_EXPORT bool maybeModuleVersion(const QString &version);
@@ -60,7 +61,7 @@ QMLJS_EXPORT QString modulePath(const QString &moduleImportName, const QString &
const QStringList &importPaths);
template <class T>
-AST::SourceLocation locationFromRange(const T *node)
+SourceLocation locationFromRange(const T *node)
{
return locationFromRange(node->firstSourceLocation(), node->lastSourceLocation());
}
diff --git a/src/plugins/autotest/quick/quicktestvisitors.cpp b/src/plugins/autotest/quick/quicktestvisitors.cpp
index 486356f13b..598b16afec 100644
--- a/src/plugins/autotest/quick/quicktestvisitors.cpp
+++ b/src/plugins/autotest/quick/quicktestvisitors.cpp
@@ -33,6 +33,8 @@
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
+#include <QDebug>
+
namespace Autotest {
namespace Internal {
@@ -177,6 +179,11 @@ bool TestQmlVisitor::visit(QmlJS::AST::StringLiteral *ast)
return false;
}
+void TestQmlVisitor::throwRecursionDepthError()
+{
+ qWarning("Warning: Hit maximum recursion depth while visiting AST in TestQmlVisitor");
+}
+
/************************************** QuickTestAstVisitor *************************************/
QuickTestAstVisitor::QuickTestAstVisitor(CPlusPlus::Document::Ptr doc,
diff --git a/src/plugins/autotest/quick/quicktestvisitors.h b/src/plugins/autotest/quick/quicktestvisitors.h
index e4af8661c2..5aff62f458 100644
--- a/src/plugins/autotest/quick/quicktestvisitors.h
+++ b/src/plugins/autotest/quick/quicktestvisitors.h
@@ -65,6 +65,8 @@ public:
bool visit(QmlJS::AST::FunctionDeclaration *ast) override;
bool visit(QmlJS::AST::StringLiteral *ast) override;
+ void throwRecursionDepthError() override;
+
QVector<QuickTestCaseSpec> testCases() const { return m_testCases; }
bool isValid() const { return !m_testCases.isEmpty(); }
diff --git a/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp b/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp
index 7cc1d9d712..a1d7b5fad4 100644
--- a/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/findimplementation.cpp
@@ -35,6 +35,8 @@
#include <qmljs/qmljsscopebuilder.h>
#include <qmljs/qmljsmodelmanagerinterface.h>
+#include <QDebug>
+
namespace {
using namespace QmlJS;
@@ -42,7 +44,7 @@ using namespace QmlJS;
class FindImplementationVisitor: protected AST::Visitor
{
public:
- using Results = QList<AST::SourceLocation>;
+ using Results = QList<SourceLocation>;
FindImplementationVisitor(const Document::Ptr &doc, const ContextPtr &context)
: m_document(doc)
@@ -66,13 +68,13 @@ public:
}
protected:
- QString textAt(const AST::SourceLocation &location)
+ QString textAt(const SourceLocation &location)
{
return m_document->source().mid(location.offset, location.length);
}
- QString textAt(const AST::SourceLocation &from,
- const AST::SourceLocation &to)
+ QString textAt(const SourceLocation &from,
+ const SourceLocation &to)
{
return m_document->source().mid(from.offset, to.end() - from.begin());
}
@@ -206,7 +208,10 @@ protected:
return false;
}
-
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visiting AST in FindImplementationVisitor");
+ }
private:
bool checkTypeName(AST::UiQualifiedId *id)
{
@@ -223,7 +228,7 @@ private:
}
Results m_implemenations;
- AST::SourceLocation m_formLocation;
+ SourceLocation m_formLocation;
Document::Ptr m_document;
ContextPtr m_context;
@@ -281,7 +286,7 @@ QList<QmlJSEditor::FindReferences::Usage> FindImplementation::run(const QString
FindImplementationVisitor visitor(document, context);
FindImplementationVisitor::Results results = visitor(typeName, itemName, targetValue);
- foreach (const AST::SourceLocation &location, results) {
+ foreach (const SourceLocation &location, results) {
usages.append(QmlJSEditor::FindReferences::Usage(fileName,
matchingLine(location.offset, document->source()),
location.startLine, location.startColumn - 1, location.length));
diff --git a/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp
index 7c0688ba9a..3c04d341bb 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/addpropertyvisitor.cpp
@@ -79,8 +79,8 @@ bool AddPropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast)
void AddPropertyVisitor::addInMembers(QmlJS::AST::UiObjectInitializer *initializer)
{
QmlJS::AST::UiObjectMemberList *insertAfter = searchMemberToInsertAfter(initializer->members, m_name, m_propertyOrder);
- QmlJS::AST::SourceLocation endOfPreviousMember;
- QmlJS::AST::SourceLocation startOfNextMember;
+ QmlJS::SourceLocation endOfPreviousMember;
+ QmlJS::SourceLocation startOfNextMember;
bool previousMemberSemicolon = false;
unsigned depth;
diff --git a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp
index d29ac90cde..8633e270e4 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp
@@ -27,6 +27,8 @@
#include <qmljs/parser/qmljsast_p.h>
+#include <QDebug>
+
using namespace QmlDesigner;
ASTObjectTextExtractor::ASTObjectTextExtractor(const QString &text):
@@ -69,3 +71,8 @@ bool ASTObjectTextExtractor::visit(QmlJS::AST::UiObjectDefinition *ast)
return m_text.isEmpty();
}
+
+void ASTObjectTextExtractor::throwRecursionDepthError()
+{
+ qWarning("Warning: Hit maximum recursion depth while visiting the AST in ASTObjectTextExtractor");
+}
diff --git a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h
index 385d8c1c97..ecc00bde18 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h
+++ b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.h
@@ -43,6 +43,8 @@ protected:
bool visit(QmlJS::AST::UiObjectBinding *ast) override;
bool visit(QmlJS::AST::UiObjectDefinition *ast) override;
+ void throwRecursionDepthError() override;
+
private:
QmlJS::Document::MutablePtr m_document;
quint32 m_location = 0;
diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp
index 76ecb59f30..7fe59053da 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp
@@ -98,3 +98,8 @@ bool FirstDefinitionFinder::visit(QmlJS::AST::UiObjectDefinition *ast)
}
return true;
}
+
+void FirstDefinitionFinder::throwRecursionDepthError()
+{
+ qWarning("Warning: Hit maximum recursion depth while visiting the AST in FirstDefinitionFinder");
+}
diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h
index b4e9826f52..2a963ae2fb 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h
+++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.h
@@ -43,6 +43,8 @@ protected:
bool visit(QmlJS::AST::UiObjectBinding *ast) override;
bool visit(QmlJS::AST::UiObjectDefinition *ast) override;
+ void throwRecursionDepthError() override;
+
void extractFirstObjectDefinition(QmlJS::AST::UiObjectInitializer* ast);
private:
diff --git a/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.cpp
index 3be5de5bc9..a4931be538 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.cpp
@@ -147,7 +147,7 @@ void MoveObjectBeforeObjectVisitor::doMove()
moveInfo.prefixToInsert = QString(moveInfo.leadingCharsToRemove, QLatin1Char(' '));
moveInfo.suffixToInsert = separator + QStringLiteral("\n\n");
} else {
- const QmlJS::AST::SourceLocation insertionPoint = lastParentLocation();
+ const QmlJS::SourceLocation insertionPoint = lastParentLocation();
Q_ASSERT(insertionPoint.isValid());
moveInfo.destination = insertionPoint.offset;
int dummy = -1;
@@ -169,7 +169,7 @@ QmlJS::AST::Node *MoveObjectBeforeObjectVisitor::movingObjectParent() const
return nullptr;
}
-QmlJS::AST::SourceLocation MoveObjectBeforeObjectVisitor::lastParentLocation() const
+QmlJS::SourceLocation MoveObjectBeforeObjectVisitor::lastParentLocation() const
{
dump(movingObjectParents);
@@ -179,5 +179,5 @@ QmlJS::AST::SourceLocation MoveObjectBeforeObjectVisitor::lastParentLocation() c
else if (auto initializer = QmlJS::AST::cast<QmlJS::AST::UiArrayBinding*>(parent))
return initializer->rbracketToken;
else
- return QmlJS::AST::SourceLocation();
+ return QmlJS::SourceLocation();
}
diff --git a/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.h b/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.h
index 922d9fe40a..c47caf56e2 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.h
+++ b/src/plugins/qmldesigner/designercore/filemanager/moveobjectbeforeobjectvisitor.h
@@ -58,7 +58,7 @@ private:
void doMove();
QmlJS::AST::Node *movingObjectParent() const;
- QmlJS::AST::SourceLocation lastParentLocation() const;
+ QmlJS::SourceLocation lastParentLocation() const;
private:
QStack<QmlJS::AST::Node *> parents;
diff --git a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp
index e0908f2f27..f54167c2d8 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp
@@ -88,3 +88,8 @@ bool ObjectLengthCalculator::visit(QmlJS::AST::UiObjectDefinition *ast)
return m_offset < end;
}
+
+void ObjectLengthCalculator::throwRecursionDepthError()
+{
+ qWarning("Warning: Hit maximum recursion depth while visiting the AST in ObjectLengthCalculator");
+}
diff --git a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h
index af745d2acd..f9bce822e3 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h
+++ b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.h
@@ -43,6 +43,8 @@ protected:
bool visit(QmlJS::AST::UiObjectBinding *ast) override;
bool visit(QmlJS::AST::UiObjectDefinition *ast) override;
+ void throwRecursionDepthError() override;
+
private:
QmlJS::Document::MutablePtr m_doc;
quint32 m_offset = 0;
diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp
index 94b89efcd9..25a72134b2 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.cpp
@@ -68,12 +68,12 @@ QString QMLRewriter::textBetween(int startPosition, int endPosition) const
return m_textModifier->text().mid(startPosition, endPosition - startPosition);
}
-QString QMLRewriter::textAt(const QmlJS::AST::SourceLocation &location) const
+QString QMLRewriter::textAt(const QmlJS::SourceLocation &location) const
{
return m_textModifier->text().mid(location.offset, location.length);
}
-unsigned QMLRewriter::calculateIndentDepth(const QmlJS::AST::SourceLocation &position) const
+unsigned QMLRewriter::calculateIndentDepth(const QmlJS::SourceLocation &position) const
{
QTextDocument *doc = m_textModifier->textDocument();
QTextCursor tc(doc);
@@ -151,20 +151,20 @@ QString QMLRewriter::removeIndentation(const QString &text, unsigned depth)
return result;
}
-QmlJS::AST::SourceLocation QMLRewriter::calculateLocation(QmlJS::AST::UiQualifiedId *id)
+QmlJS::SourceLocation QMLRewriter::calculateLocation(QmlJS::AST::UiQualifiedId *id)
{
Q_ASSERT(id != nullptr);
- const QmlJS::AST::SourceLocation startLocation = id->identifierToken;
+ const QmlJS::SourceLocation startLocation = id->identifierToken;
QmlJS::AST::UiQualifiedId *nextId = id;
while (nextId->next) {
nextId = nextId->next;
}
- const QmlJS::AST::SourceLocation endLocation = nextId->identifierToken;
+ const QmlJS::SourceLocation endLocation = nextId->identifierToken;
- return QmlJS::AST::SourceLocation(startLocation.offset, endLocation.end() - startLocation.offset);
+ return QmlJS::SourceLocation(startLocation.offset, endLocation.end() - startLocation.offset);
}
bool QMLRewriter::isMissingSemicolon(QmlJS::AST::UiObjectMember *member)
@@ -340,3 +340,8 @@ void QMLRewriter::dump(const ASTPath &path)
qCDebug(qmlRewriter).noquote() << QString(i + 1, QLatin1Char('-')) << typeid(*node).name();
}
}
+
+void QMLRewriter::throwRecursionDepthError()
+{
+ qCWarning(qmlRewriter) << "Warning: Hit maximum recursion level while visiting AST in QMLRewriter";
+}
diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h
index 062710ef4c..c773de35be 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h
+++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h
@@ -51,20 +51,22 @@ public:
protected:
using QmlJS::AST::Visitor::visit;
+ void throwRecursionDepthError() override;
+
virtual void replace(int offset, int length, const QString &text);
virtual void move(const QmlDesigner::TextModifier::MoveInfo &moveInfo);
QString textBetween(int startPosition, int endPosition) const;
- QString textAt(const QmlJS::AST::SourceLocation &location) const;
+ QString textAt(const QmlJS::SourceLocation &location) const;
int indentDepth() const
{ return textModifier()->indentDepth(); }
- unsigned calculateIndentDepth(const QmlJS::AST::SourceLocation &position) const;
+ unsigned calculateIndentDepth(const QmlJS::SourceLocation &position) const;
static QString addIndentation(const QString &text, unsigned depth);
static QString removeIndentation(const QString &text, unsigned depth);
static QString removeIndentationFromLine(const QString &text, int depth);
- static QmlJS::AST::SourceLocation calculateLocation(QmlJS::AST::UiQualifiedId *id);
+ static QmlJS::SourceLocation calculateLocation(QmlJS::AST::UiQualifiedId *id);
static bool isMissingSemicolon(QmlJS::AST::UiObjectMember *member);
static bool isMissingSemicolon(QmlJS::AST::Statement *stmt);
diff --git a/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp b/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp
index a5fddccba9..c1298aa92e 100644
--- a/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp
+++ b/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp
@@ -93,7 +93,7 @@ bool BaseTextEditModifier::renameId(const QString &oldId, const QString &newId)
if (auto bte = qobject_cast<TextEditor::TextEditorWidget*>(plainTextEdit())) {
if (auto document = qobject_cast<QmlJSEditor::QmlJSEditorDocument *>(bte->textDocument())) {
Utils::ChangeSet changeSet;
- foreach (const QmlJS::AST::SourceLocation &loc,
+ foreach (const QmlJS::SourceLocation &loc,
document->semanticInfo().idLocations.value(oldId)) {
changeSet.replace(loc.begin(), loc.end(), newId);
}
diff --git a/src/plugins/qmldesigner/designercore/model/documentmessage.cpp b/src/plugins/qmldesigner/designercore/model/documentmessage.cpp
index cbf5843dac..1d0c124b52 100644
--- a/src/plugins/qmldesigner/designercore/model/documentmessage.cpp
+++ b/src/plugins/qmldesigner/designercore/model/documentmessage.cpp
@@ -26,6 +26,7 @@
#include <documentmessage.h>
#include <qmljs/parser/qmljsengine_p.h>
+#include <qmljs/parser/qmljsdiagnosticmessage_p.h>
namespace QmlDesigner {
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index de07ef230f..a82792b1e8 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -772,8 +772,8 @@ void TextToModelMerger::setupImports(const Document::Ptr &doc,
continue;
QString version;
- if (import->versionToken.isValid())
- version = textAt(doc, import->versionToken);
+ if (import->version != nullptr)
+ version = QLatin1String("%1.%2").arg(import->version->majorVersion).arg(import->version->minorVersion);
const QString &as = import->importId.toString();
if (!import->fileName.isEmpty()) {
@@ -2036,7 +2036,7 @@ void TextToModelMerger::collectLinkErrors(QList<DocumentMessage> *errors, const
void TextToModelMerger::collectImportErrors(QList<DocumentMessage> *errors)
{
if (m_rewriterView->model()->imports().isEmpty()) {
- const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found"));
+ const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found"));
errors->append(DocumentMessage(diagnosticMessage, QUrl::fromLocalFile(m_document->fileName())));
}
@@ -2047,7 +2047,7 @@ void TextToModelMerger::collectImportErrors(QList<DocumentMessage> *errors)
if (supportedQtQuickVersion(import.version())) {
hasQtQuick = true;
} else {
- const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0),
+ const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, SourceLocation(0, 0, 0, 0),
QCoreApplication::translate("QmlDesigner::TextToModelMerger", "Unsupported QtQuick version"));
errors->append(DocumentMessage(diagnosticMessage, QUrl::fromLocalFile(m_document->fileName())));
}
@@ -2172,14 +2172,14 @@ QSet<QPair<QString, QString> > TextToModelMerger::qrcMapping() const
}
QString TextToModelMerger::textAt(const Document::Ptr &doc,
- const AST::SourceLocation &location)
+ const SourceLocation &location)
{
return doc->source().mid(location.offset, location.length);
}
QString TextToModelMerger::textAt(const Document::Ptr &doc,
- const AST::SourceLocation &from,
- const AST::SourceLocation &to)
+ const SourceLocation &from,
+ const SourceLocation &to)
{
return doc->source().mid(from.offset, to.end() - from.begin());
}
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h
index 82def3927f..2884453f8c 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h
@@ -144,10 +144,10 @@ private:
void addIsoIconQrcMapping(const QUrl &fileUrl);
static QString textAt(const QmlJS::Document::Ptr &doc,
- const QmlJS::AST::SourceLocation &location);
+ const QmlJS::SourceLocation &location);
static QString textAt(const QmlJS::Document::Ptr &doc,
- const QmlJS::AST::SourceLocation &from,
- const QmlJS::AST::SourceLocation &to);
+ const QmlJS::SourceLocation &from,
+ const QmlJS::SourceLocation &to);
private:
RewriterView *m_rewriterView;
diff --git a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
index 3afca0b036..9ed886246b 100644
--- a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
+++ b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
@@ -51,6 +51,7 @@
#include <QMessageBox>
using namespace QmlJS::AST;
+using QmlJS::SourceLocation;
using namespace QmlJSTools;
namespace QmlJSEditor {
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 13eab82ce4..c260c2f708 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -86,6 +86,7 @@
#include <QTextCodec>
#include <QTimer>
#include <QTreeView>
+#include <QDebug>
enum {
UPDATE_USES_DEFAULT_INTERVAL = 150,
@@ -230,7 +231,7 @@ bool QmlJSEditorWidget::isOutlineCursorChangesBlocked()
void QmlJSEditorWidget::jumpToOutlineElement(int /*index*/)
{
QModelIndex index = m_outlineCombo->view()->currentIndex();
- AST::SourceLocation location = m_qmlJsEditorDocument->outlineModel()->sourceLocation(index);
+ SourceLocation location = m_qmlJsEditorDocument->outlineModel()->sourceLocation(index);
if (!location.isValid())
return;
@@ -332,7 +333,7 @@ void QmlJSEditorWidget::updateUses()
return;
QList<QTextEdit::ExtraSelection> selections;
- foreach (const AST::SourceLocation &loc,
+ foreach (const SourceLocation &loc,
m_qmlJsEditorDocument->semanticInfo().idLocations.value(wordUnderCursor())) {
if (! loc.isValid())
continue;
@@ -432,6 +433,11 @@ protected:
}
}
}
+
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth visiting AST in SelectedElement");
+ }
};
void QmlJSEditorWidget::setSelectedElements()
@@ -941,7 +947,7 @@ QModelIndex QmlJSEditorWidget::indexForPosition(unsigned cursorPosition, const Q
const int rowCount = model->rowCount(rootIndex);
for (int i = 0; i < rowCount; ++i) {
QModelIndex childIndex = model->index(i, 0, rootIndex);
- AST::SourceLocation location = model->sourceLocation(childIndex);
+ SourceLocation location = model->sourceLocation(childIndex);
if ((cursorPosition >= location.offset)
&& (cursorPosition <= location.offset + location.length)) {
diff --git a/src/plugins/qmljseditor/qmljseditordocument.cpp b/src/plugins/qmljseditor/qmljseditordocument.cpp
index bb487202c0..b600af61c0 100644
--- a/src/plugins/qmljseditor/qmljseditordocument.cpp
+++ b/src/plugins/qmljseditor/qmljseditordocument.cpp
@@ -43,6 +43,8 @@
#include <qmljstools/qmljsmodelmanager.h>
#include <qmljstools/qmljsqtstylecodeformatter.h>
+#include <QDebug>
+
const char QML_UI_FILE_WARNING[] = "QmlJSEditor.QmlUiFileWarning";
using namespace QmlJSEditor;
@@ -69,7 +71,7 @@ struct Declaration
class FindIdDeclarations: protected Visitor
{
public:
- using Result = QHash<QString, QList<AST::SourceLocation> >;
+ using Result = QHash<QString, QList<SourceLocation> >;
Result operator()(Document::Ptr doc)
{
@@ -110,7 +112,7 @@ protected:
if (auto idExpr = AST::cast<const AST::IdentifierExpression *>(stmt->expression)) {
if (!idExpr->name.isEmpty()) {
const QString &id = idExpr->name.toString();
- QList<AST::SourceLocation> *locs = &_ids[id];
+ QList<SourceLocation> *locs = &_ids[id];
locs->append(idExpr->firstSourceLocation());
locs->append(_maybeIds.value(id));
_maybeIds.remove(id);
@@ -138,6 +140,11 @@ protected:
return false;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visiting AST in FindIdDeclarations");
+ }
+
private:
Result _ids;
Result _maybeIds;
@@ -414,6 +421,11 @@ protected:
return true;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visiting AST in CreateRanges");
+ }
+
Range createRange(AST::UiObjectMember *member, AST::UiObjectInitializer *ast)
{
return createRange(member, member->firstSourceLocation(), ast->rbraceToken);
@@ -429,7 +441,7 @@ protected:
return createRange(ast, block->lbraceToken, block->rbraceToken);
}
- Range createRange(AST::Node *ast, AST::SourceLocation start, AST::SourceLocation end)
+ Range createRange(AST::Node *ast, SourceLocation start, SourceLocation end)
{
Range range;
diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp
index 670fc69282..d6f85ef26c 100644
--- a/src/plugins/qmljseditor/qmljsfindreferences.cpp
+++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp
@@ -51,6 +51,7 @@
#include <QTimer>
#include <QtConcurrentRun>
#include <QtConcurrentMap>
+#include <QDebug>
#include <QDir>
#include <QApplication>
#include <QLabel>
@@ -70,7 +71,7 @@ namespace {
class FindUsages: protected Visitor
{
public:
- using Result = QList<AST::SourceLocation>;
+ using Result = QList<SourceLocation>;
FindUsages(Document::Ptr doc, const ContextPtr &context)
: _doc(doc)
@@ -236,6 +237,11 @@ protected:
return true;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visitin AST in FindUsages");
+ }
+
private:
bool contains(const QmlComponentChain *chain)
{
@@ -294,7 +300,7 @@ private:
class FindTypeUsages: protected Visitor
{
public:
- using Result = QList<AST::SourceLocation>;
+ using Result = QList<SourceLocation>;
FindTypeUsages(Document::Ptr doc, const ContextPtr &context)
: _doc(doc)
@@ -427,6 +433,10 @@ protected:
return false;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visitin AST in FindTypeUsages");
+ }
private:
bool checkTypeName(UiQualifiedId *id)
@@ -624,6 +634,11 @@ protected:
return true;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth visiting AST in FindUsages");
+ }
+
private:
bool containsOffset(SourceLocation start, SourceLocation end)
{
@@ -720,7 +735,7 @@ public:
// find all idenfifier expressions, try to resolve them and check if the result is in scope
FindUsages findUsages(doc, context);
FindUsages::Result results = findUsages(name, scope);
- foreach (const AST::SourceLocation &loc, results)
+ foreach (const SourceLocation &loc, results)
usages.append(Usage(fileName, matchingLine(loc.offset, doc->source()), loc.startLine, loc.startColumn - 1, loc.length));
if (future->isPaused())
future->waitForResume();
@@ -762,7 +777,7 @@ public:
// find all idenfifier expressions, try to resolve them and check if the result is in scope
FindTypeUsages findUsages(doc, context);
FindTypeUsages::Result results = findUsages(name, scope);
- foreach (const AST::SourceLocation &loc, results)
+ foreach (const SourceLocation &loc, results)
usages.append(Usage(fileName, matchingLine(loc.offset, doc->source()), loc.startLine, loc.startColumn - 1, loc.length));
if (future->isPaused())
future->waitForResume();
@@ -944,7 +959,7 @@ QList<FindReferences::Usage> FindReferences::findUsageOfType(const QString &file
foreach (const QmlJS::Document::Ptr &doc, snapshot) {
FindTypeUsages findUsages(doc, context);
FindTypeUsages::Result results = findUsages(typeName, targetValue);
- foreach (const AST::SourceLocation &loc, results) {
+ foreach (const SourceLocation &loc, results) {
usages.append(Usage(doc->fileName(), matchingLine(loc.offset, doc->source()), loc.startLine, loc.startColumn - 1, loc.length));
}
}
diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp
index cf73d63d7c..1009a7f543 100644
--- a/src/plugins/qmljseditor/qmljshoverhandler.cpp
+++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp
@@ -63,8 +63,8 @@ namespace QmlJSEditor {
namespace {
QString textAt(const Document::Ptr doc,
- const AST::SourceLocation &from,
- const AST::SourceLocation &to)
+ const SourceLocation &from,
+ const SourceLocation &to)
{
return doc->source().mid(from.offset, to.end() - from.begin());
}
diff --git a/src/plugins/qmljseditor/qmljsoutline.cpp b/src/plugins/qmljseditor/qmljsoutline.cpp
index abd333f468..0fcac6e60a 100644
--- a/src/plugins/qmljseditor/qmljsoutline.cpp
+++ b/src/plugins/qmljseditor/qmljsoutline.cpp
@@ -206,7 +206,7 @@ void QmlJSOutlineWidget::updateTextCursor(const QModelIndex &index)
if (!m_editor->isOutlineCursorChangesBlocked()) {
QModelIndex sourceIndex = m_filterModel->mapToSource(index);
- AST::SourceLocation location
+ SourceLocation location
= m_editor->qmlJsEditorDocument()->outlineModel()->sourceLocation(sourceIndex);
if (!location.isValid())
diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp
index e3b169f46d..65e9b0ca2e 100644
--- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp
+++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp
@@ -46,6 +46,7 @@
#include <utils/qtcassert.h>
#include <utils/runextensions.h>
+#include <QDebug>
#include <QTextDocument>
#include <QThreadPool>
@@ -163,6 +164,11 @@ protected:
return false;
}
+
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visitin AST in CollectStateNames");
+ }
};
class CollectionTask : protected Visitor
@@ -453,6 +459,11 @@ protected:
}
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit Maximum recursion depth when visiting AST in CollectionTask");
+ }
+
private:
void addUse(const SourceLocation &location, SemanticHighlighter::UseType type)
{
diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.h b/src/plugins/qmljseditor/qmljssemantichighlighter.h
index 7fa25b588f..77ea2a7c12 100644
--- a/src/plugins/qmljseditor/qmljssemantichighlighter.h
+++ b/src/plugins/qmljseditor/qmljssemantichighlighter.h
@@ -32,7 +32,7 @@
#include <QVector>
namespace QmlJS {
-namespace AST { class SourceLocation; }
+class SourceLocation;
}
namespace TextEditor { class FontSettings; }
diff --git a/src/plugins/qmljseditor/qmljswrapinloader.cpp b/src/plugins/qmljseditor/qmljswrapinloader.cpp
index d83d34e23e..5f0ef4bb05 100644
--- a/src/plugins/qmljseditor/qmljswrapinloader.cpp
+++ b/src/plugins/qmljseditor/qmljswrapinloader.cpp
@@ -35,6 +35,7 @@
#include <qmljs/qmljsbind.h>
#include <qmljstools/qmljsrefactoringchanges.h>
+#include <QDebug>
#include <QDir>
#include <QFileInfo>
#include <QCoreApplication>
@@ -71,6 +72,11 @@ protected:
return true;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visitin AST in FindIds");
+ }
+
Result result;
};
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp
index 50162fb1fc..0cda207b51 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.cpp
+++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp
@@ -64,7 +64,7 @@ QmlOutlineItem::QmlOutlineItem(QmlOutlineModel *model) :
QVariant QmlOutlineItem::data(int role) const
{
if (role == Qt::ToolTipRole) {
- AST::SourceLocation location = m_outlineModel->sourceLocation(index());
+ SourceLocation location = m_outlineModel->sourceLocation(index());
AST::UiQualifiedId *uiQualifiedId = m_outlineModel->idNode(index());
if (!uiQualifiedId || !location.isValid() || !m_outlineModel->m_semanticInfo.isValid())
return QVariant();
@@ -146,6 +146,11 @@ private:
parent.insert(objMember, stack.last());
}
}
+
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth while visiting AST in ObjectMemberParentVisitor");
+ }
};
@@ -304,6 +309,11 @@ private:
}
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion limit visiting AST in QmlOutlineModelSync");
+ }
+
QmlOutlineModel *m_model;
QHash<AST::Node*, QModelIndex> m_nodeToIndex;
@@ -341,7 +351,7 @@ QMimeData *QmlOutlineModel::mimeData(const QModelIndexList &indexes) const
stream << indexes.size();
for (const auto &index : indexes) {
- AST::SourceLocation location = sourceLocation(index);
+ SourceLocation location = sourceLocation(index);
data->addFile(m_editorDocument->filePath().toString(), location.startLine,
location.startColumn - 1 /*editors have 0-based column*/);
@@ -719,9 +729,9 @@ AST::Node *QmlOutlineModel::nodeForIndex(const QModelIndex &index) const
return nullptr;
}
-AST::SourceLocation QmlOutlineModel::sourceLocation(const QModelIndex &index) const
+SourceLocation QmlOutlineModel::sourceLocation(const QModelIndex &index) const
{
- AST::SourceLocation location;
+ SourceLocation location;
QTC_ASSERT(index.isValid() && (index.model() == this), return location);
AST::Node *node = nodeForIndex(index);
if (node) {
@@ -981,8 +991,8 @@ QString QmlOutlineModel::asString(AST::UiQualifiedId *id)
return text;
}
-AST::SourceLocation QmlOutlineModel::getLocation(AST::UiObjectMember *objMember) {
- AST::SourceLocation location;
+SourceLocation QmlOutlineModel::getLocation(AST::UiObjectMember *objMember) {
+ SourceLocation location;
location = objMember->firstSourceLocation();
location.length = objMember->lastSourceLocation().offset
- objMember->firstSourceLocation().offset
@@ -990,8 +1000,8 @@ AST::SourceLocation QmlOutlineModel::getLocation(AST::UiObjectMember *objMember)
return location;
}
-AST::SourceLocation QmlOutlineModel::getLocation(AST::ExpressionNode *exprNode) {
- AST::SourceLocation location;
+SourceLocation QmlOutlineModel::getLocation(AST::ExpressionNode *exprNode) {
+ SourceLocation location;
location = exprNode->firstSourceLocation();
location.length = exprNode->lastSourceLocation().offset
- exprNode->firstSourceLocation().offset
@@ -999,14 +1009,14 @@ AST::SourceLocation QmlOutlineModel::getLocation(AST::ExpressionNode *exprNode)
return location;
}
-AST::SourceLocation QmlOutlineModel::getLocation(AST::PatternPropertyList *propertyNode) {
+SourceLocation QmlOutlineModel::getLocation(AST::PatternPropertyList *propertyNode) {
if (auto assignment = AST::cast<AST::PatternProperty *>(propertyNode->property))
return getLocation(assignment);
return propertyNode->firstSourceLocation(); // should never happen
}
-AST::SourceLocation QmlOutlineModel::getLocation(AST::PatternProperty *propertyNode) {
- AST::SourceLocation location;
+SourceLocation QmlOutlineModel::getLocation(AST::PatternProperty *propertyNode) {
+ SourceLocation location;
location = propertyNode->name->propertyNameToken;
location.length = propertyNode->initializer->lastSourceLocation().end() - location.offset;
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.h b/src/plugins/qmljseditor/qmloutlinemodel.h
index 17dd08abd8..626b5f3be4 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.h
+++ b/src/plugins/qmljseditor/qmloutlinemodel.h
@@ -90,7 +90,7 @@ public:
void update(const QmlJSTools::SemanticInfo &semanticInfo);
QmlJS::AST::Node *nodeForIndex(const QModelIndex &index) const;
- QmlJS::AST::SourceLocation sourceLocation(const QModelIndex &index) const;
+ QmlJS::SourceLocation sourceLocation(const QModelIndex &index) const;
QmlJS::AST::UiQualifiedId *idNode(const QModelIndex &index) const;
QIcon icon(const QModelIndex &index) const;
@@ -138,10 +138,10 @@ private:
QStandardItem *parentItem();
static QString asString(QmlJS::AST::UiQualifiedId *id);
- static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
- static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::ExpressionNode *exprNode);
- static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::PatternProperty *propertyNode);
- static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::PatternPropertyList *propertyNode);
+ static QmlJS::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
+ static QmlJS::SourceLocation getLocation(QmlJS::AST::ExpressionNode *exprNode);
+ static QmlJS::SourceLocation getLocation(QmlJS::AST::PatternProperty *propertyNode);
+ static QmlJS::SourceLocation getLocation(QmlJS::AST::PatternPropertyList *propertyNode);
QIcon getIcon(QmlJS::AST::UiQualifiedId *objDef);
QString getAnnotation(QmlJS::AST::UiObjectInitializer *objInitializer);
diff --git a/src/plugins/qmljstools/qmljslocatordata.cpp b/src/plugins/qmljstools/qmljslocatordata.cpp
index 3b68bf6521..39ef4f4de5 100644
--- a/src/plugins/qmljstools/qmljslocatordata.cpp
+++ b/src/plugins/qmljstools/qmljslocatordata.cpp
@@ -33,6 +33,7 @@
//#include <qmljs/qmljsinterpreter.h>
#include <qmljs/parser/qmljsast_p.h>
+#include <QDebug>
#include <QMutexLocker>
using namespace QmlJSTools::Internal;
@@ -224,6 +225,11 @@ protected:
return true;
}
+
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion limit visiting AST in FunctionFinder.");
+ }
};
} // anonymous namespace
diff --git a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp
index 3fda024e4e..2cb21f4f55 100644
--- a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp
+++ b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp
@@ -149,7 +149,7 @@ Document::Ptr QmlJSRefactoringFile::qmljsDocument() const
return m_qmljsDocument;
}
-unsigned QmlJSRefactoringFile::startOf(const AST::SourceLocation &loc) const
+unsigned QmlJSRefactoringFile::startOf(const SourceLocation &loc) const
{
return position(loc.startLine, loc.startColumn);
}
@@ -176,7 +176,7 @@ bool QmlJSRefactoringFile::isCursorOn(AST::UiQualifiedId *ast) const
return pos <= ast->identifierToken.end();
}
-bool QmlJSRefactoringFile::isCursorOn(AST::SourceLocation loc) const
+bool QmlJSRefactoringFile::isCursorOn(SourceLocation loc) const
{
const unsigned pos = cursor().position();
return pos >= loc.begin() && pos <= loc.end();
diff --git a/src/plugins/qmljstools/qmljsrefactoringchanges.h b/src/plugins/qmljstools/qmljsrefactoringchanges.h
index 2d6f5788d4..7d4bf37546 100644
--- a/src/plugins/qmljstools/qmljsrefactoringchanges.h
+++ b/src/plugins/qmljstools/qmljsrefactoringchanges.h
@@ -49,11 +49,11 @@ public:
\returns the offset in the document for the start position of the given
source location.
*/
- unsigned startOf(const QmlJS::AST::SourceLocation &loc) const;
+ unsigned startOf(const QmlJS::SourceLocation &loc) const;
bool isCursorOn(QmlJS::AST::UiObjectMember *ast) const;
bool isCursorOn(QmlJS::AST::UiQualifiedId *ast) const;
- bool isCursorOn(QmlJS::AST::SourceLocation loc) const;
+ bool isCursorOn(QmlJS::SourceLocation loc) const;
protected:
QmlJSRefactoringFile(const QString &fileName, const QSharedPointer<TextEditor::RefactoringChangesData> &data);
diff --git a/src/plugins/qmljstools/qmljssemanticinfo.cpp b/src/plugins/qmljstools/qmljssemanticinfo.cpp
index 1e9eae248a..ce490cd445 100644
--- a/src/plugins/qmljstools/qmljssemanticinfo.cpp
+++ b/src/plugins/qmljstools/qmljssemanticinfo.cpp
@@ -30,6 +30,8 @@
#include <qmljs/qmljsscopechain.h>
#include <qmljs/parser/qmljsengine_p.h>
+#include <QDebug>
+
using namespace QmlJS;
using namespace QmlJS::AST;
@@ -63,13 +65,13 @@ protected:
node->accept(this);
}
- bool containsOffset(AST::SourceLocation start, AST::SourceLocation end)
+ bool containsOffset(SourceLocation start, SourceLocation end)
{
return _offset >= start.begin() && _offset <= end.end();
}
bool handle(AST::Node *ast,
- AST::SourceLocation start, AST::SourceLocation end,
+ SourceLocation start, SourceLocation end,
bool addToPath = true)
{
if (containsOffset(start, end)) {
@@ -99,8 +101,8 @@ protected:
bool visit(AST::UiQualifiedId *ast) override
{
- AST::SourceLocation first = ast->identifierToken;
- AST::SourceLocation last;
+ SourceLocation first = ast->identifierToken;
+ SourceLocation last;
for (AST::UiQualifiedId *it = ast; it; it = it->next)
last = it->identifierToken;
if (containsOffset(first, last))
@@ -125,6 +127,10 @@ protected:
return handleLocationAst(ast);
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit maximum recursion depth when visiting the AST in AstPath");
+ }
};
} // anonmymous
diff --git a/src/plugins/qmljstools/qmljssemanticinfo.h b/src/plugins/qmljstools/qmljssemanticinfo.h
index 8d7d1438dc..50bed9a483 100644
--- a/src/plugins/qmljstools/qmljssemanticinfo.h
+++ b/src/plugins/qmljstools/qmljssemanticinfo.h
@@ -85,7 +85,7 @@ public: // attributes
QmlJS::Snapshot snapshot;
QmlJS::ContextPtr context;
QList<Range> ranges;
- QHash<QString, QList<QmlJS::AST::SourceLocation> > idLocations;
+ QHash<QString, QList<QmlJS::SourceLocation> > idLocations;
// these are in addition to the parser messages in the document
QList<QmlJS::DiagnosticMessage> semanticMessages;
diff --git a/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp b/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp
index cc97f7eb6a..3be8aff25b 100644
--- a/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp
@@ -38,6 +38,8 @@
#include <utils/qtcassert.h>
+#include <QDebug>
+
namespace QmlProfiler {
namespace Internal {
@@ -78,12 +80,16 @@ protected:
return true;
}
+ void throwRecursionDepthError() override
+ {
+ qWarning("Warning: Hit mximum recursion depth while visiting AST in PropertyVisitor");
+ }
private:
QmlJS::AST::Node *m_lastValidNode = nullptr;
quint32 m_line = 0;
quint32 m_column = 0;
- bool containsLocation(QmlJS::AST::SourceLocation start, QmlJS::AST::SourceLocation end)
+ bool containsLocation(QmlJS::SourceLocation start, QmlJS::SourceLocation end)
{
return (m_line > start.startLine
|| (m_line == start.startLine && m_column >= start.startColumn))
diff --git a/src/plugins/todo/qmljstodoitemsscanner.cpp b/src/plugins/todo/qmljstodoitemsscanner.cpp
index df6ea53ea8..c3ec33e9cc 100644
--- a/src/plugins/todo/qmljstodoitemsscanner.cpp
+++ b/src/plugins/todo/qmljstodoitemsscanner.cpp
@@ -78,7 +78,7 @@ void QmlJsTodoItemsScanner::processDocument(QmlJS::Document::Ptr doc)
{
QList<TodoItem> itemList;
- foreach (const QmlJS::AST::SourceLocation &sourceLocation, doc->engine()->comments()) {
+ foreach (const QmlJS::SourceLocation &sourceLocation, doc->engine()->comments()) {
QString source = doc->source().mid(sourceLocation.begin(), sourceLocation.length).trimmed();
// Process every line