diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-09-23 11:45:24 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-09-23 18:58:01 +0200 |
commit | c09e2fe657b2c9a2a086d57d9c7c9f0ddb3dd4d2 (patch) | |
tree | 76c4bece7a6afd39767aecf72347eb660ecafdc1 /src | |
parent | 2d02307e73b63c8d2ce935a9d7dd7b177c017f87 (diff) |
QQmlTypeCompiler: Resolve aliases earlier
This is a prequisite for determining whether a change handler of an
alias should use its change signal, or whether it can use the alias
target's bindable interface.
Change-Id: I6f5220a6889601327cb478479c7c9e58f1a64d97
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/qml/qqmltypecompiler.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/qml/qml/qqmltypecompiler.cpp b/src/qml/qml/qqmltypecompiler.cpp index 4be64aecf3..ca8a24439b 100644 --- a/src/qml/qml/qqmltypecompiler.cpp +++ b/src/qml/qml/qqmltypecompiler.cpp @@ -94,6 +94,18 @@ QQmlRefPointer<QV4::ExecutableCompilationUnit> QQmlTypeCompiler::compile() merger.mergeDefaultProperties(); } + + // Resolve component boundaries and aliases + + { + // Scan for components, determine their scopes and resolve aliases within the scope. + QQmlComponentAndAliasResolver resolver(this); + if (!resolver.resolve()) + return nullptr; + + pendingGroupPropertyBindings.resolveMissingPropertyCaches(engine, &m_propertyCaches); + } + { SignalHandlerConverter converter(this); if (!converter.convertSignalHandlerExpressionsToFunctionDeclarations()) @@ -116,17 +128,6 @@ QQmlRefPointer<QV4::ExecutableCompilationUnit> QQmlTypeCompiler::compile() annotator.annotateBindingsToAliases(); } - // Resolve component boundaries and aliases - - { - // Scan for components, determine their scopes and resolve aliases within the scope. - QQmlComponentAndAliasResolver resolver(this); - if (!resolver.resolve()) - return nullptr; - - pendingGroupPropertyBindings.resolveMissingPropertyCaches(engine, &m_propertyCaches); - } - { QQmlDeferredAndCustomParserBindingScanner deferredAndCustomParserBindingScanner(this); if (!deferredAndCustomParserBindingScanner.scanObject()) |