diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-10-16 15:51:34 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-10-16 21:56:12 +0200 |
commit | 7feab1fb95317b924fe39c49dd9907ca3df61a40 (patch) | |
tree | 41db3b22d74c9971b7549c76d1f9a29af40fa14a /src/qmlcompiler/qqmljsimportvisitor.cpp | |
parent | 813796b303af168045d43574321b48d82b41d48d (diff) |
QmlCompiler: Read the "bindable" attribute from plugins.qmltypes
And refactor QQmlJSMetaProperty to use setters rather than a gigantic
constructor. Also, notice that we don't have to construct the same
property twice just to update its type.
Change-Id: Ia6c195fa7088f6ecdff868daae17d4284c1edb22
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qmlcompiler/qqmljsimportvisitor.cpp')
-rw-r--r-- | src/qmlcompiler/qqmljsimportvisitor.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/qmlcompiler/qqmljsimportvisitor.cpp b/src/qmlcompiler/qqmljsimportvisitor.cpp index f62b27fd35..8f30631b22 100644 --- a/src/qmlcompiler/qqmljsimportvisitor.cpp +++ b/src/qmlcompiler/qqmljsimportvisitor.cpp @@ -173,15 +173,12 @@ bool QQmlJSImportVisitor::visit(UiPublicMember *publicMember) if (const auto idExpression = cast<IdentifierExpression *>(expression->expression)) typeName = idExpression->name; } - QQmlJSMetaProperty prop { - publicMember->name.toString(), - typeName.toString(), - publicMember->typeModifier == QLatin1String("list"), - !publicMember->isReadonlyMember, - false, - isAlias, - 0 - }; + QQmlJSMetaProperty prop; + prop.setPropertyName(publicMember->name.toString()); + prop.setTypeName(typeName.toString()); + prop.setIsList(publicMember->typeModifier == QLatin1String("list")); + prop.setIsWritable(!publicMember->isReadonlyMember); + prop.setIsAlias(isAlias); prop.setType(m_rootScopeImports.value(prop.typeName())); m_currentScope->insertPropertyIdentifier(prop); break; @@ -242,7 +239,8 @@ void QQmlJSImportVisitor::endVisit(QQmlJS::AST::FunctionDeclaration *) bool QQmlJSImportVisitor::visit(QQmlJS::AST::ClassExpression *ast) { - QQmlJSMetaProperty prop { ast->name.toString(), QString(), false, false, false, false, 1 }; + QQmlJSMetaProperty prop; + prop.setPropertyName(ast->name.toString()); m_currentScope->addProperty(prop); enterEnvironment(QQmlJSScope::JSFunctionScope, ast->name.toString(), ast->firstSourceLocation()); @@ -453,8 +451,12 @@ bool QQmlJSImportVisitor::visit(QQmlJS::AST::UiObjectBinding *uiob) name.chop(1); - QQmlJSMetaProperty prop(uiob->qualifiedId->name.toString(), name, false, true, true, - name == QLatin1String("alias"), 0); + QQmlJSMetaProperty prop; + prop.setPropertyName(uiob->qualifiedId->name.toString()); + prop.setTypeName(name); + prop.setIsWritable(true); + prop.setIsPointer(true); + prop.setIsAlias(name == QLatin1String("alias")); prop.setType(m_rootScopeImports.value(uiob->qualifiedTypeNameId->name.toString())); m_currentScope->addProperty(prop); @@ -468,11 +470,8 @@ void QQmlJSImportVisitor::endVisit(QQmlJS::AST::UiObjectBinding *uiob) { const QQmlJSScope::ConstPtr childScope = m_currentScope; leaveEnvironment(); - QQmlJSMetaProperty property(uiob->qualifiedId->name.toString(), - uiob->qualifiedTypeNameId->name.toString(), - false, true, true, - uiob->qualifiedTypeNameId->name == QLatin1String("alias"), - 0); + + QQmlJSMetaProperty property = m_currentScope->property(uiob->qualifiedId->name.toString()); property.setType(childScope); m_currentScope->addProperty(property); } |