diff options
author | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2020-02-28 17:51:32 +0100 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2020-03-03 15:31:10 +0000 |
commit | b09a48599e7e5db5447189136353b79aca3898cf (patch) | |
tree | 5f6f3b1d4da3ed746caa612992d94ed21978dd75 /src/plugins/qmljstools/qmljssemanticinfo.cpp | |
parent | a24dead5f63d7eb0b209539daebf5b2ce558b1c0 (diff) | |
download | qt-creator-b09a48599e7e5db5447189136353b79aca3898cf.tar.gz |
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>
Diffstat (limited to 'src/plugins/qmljstools/qmljssemanticinfo.cpp')
-rw-r--r-- | src/plugins/qmljstools/qmljssemanticinfo.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
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 |