diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmltc/main.cpp | 11 | ||||
-rw-r--r-- | tools/qmltc/qmltctyperesolver.cpp | 3 |
2 files changed, 11 insertions, 3 deletions
diff --git a/tools/qmltc/main.cpp b/tools/qmltc/main.cpp index fb3c55a344..0541203571 100644 --- a/tools/qmltc/main.cpp +++ b/tools/qmltc/main.cpp @@ -24,6 +24,8 @@ #include <QtQml/private/qqmljsastvisitor_p.h> #include <QtQml/private/qqmljsast_p.h> #include <QtQml/private/qqmljsdiagnosticmessage_p.h> +#include <QtQmlCompiler/qqmlsa.h> +#include <QtQmlCompiler/private/qqmljsliteralbindingcheck_p.h> #include <cstdlib> // EXIT_SUCCESS, EXIT_FAILURE @@ -279,6 +281,15 @@ int main(int argc, char **argv) QmltcTypeResolver typeResolver { &importer }; typeResolver.init(&visitor, qmlParser.rootNode()); + using PassManagerPtr = + std::unique_ptr<QQmlSA::PassManager, + decltype(&QQmlSA::PassManagerPrivate::deletePassManager)>; + PassManagerPtr passMan(QQmlSA::PassManagerPrivate::createPassManager(&visitor, &typeResolver), + &QQmlSA::PassManagerPrivate::deletePassManager); + passMan->registerPropertyPass(std::make_unique<QQmlJSLiteralBindingCheck>(passMan.get()), + QString(), QString(), QString()); + passMan->analyze(QQmlJSScope::createQQmlSAElement(visitor.result())); + if (logger.hasErrors()) return EXIT_FAILURE; diff --git a/tools/qmltc/qmltctyperesolver.cpp b/tools/qmltc/qmltctyperesolver.cpp index 045f3af088..a7bf9debac 100644 --- a/tools/qmltc/qmltctyperesolver.cpp +++ b/tools/qmltc/qmltctyperesolver.cpp @@ -18,9 +18,6 @@ void QmltcTypeResolver::init(QmltcVisitor *visitor, QQmlJS::AST::Node *program) { QQmlJSTypeResolver::init(visitor, program); - QQmlJSLiteralBindingCheck literalCheck; - literalCheck.run(visitor, this); - m_root = visitor->result(); QQueue<QQmlJSScope::Ptr> objects; |