aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlcompiler/qqmljsimportvisitor.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-10-16 15:51:34 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-10-16 21:56:12 +0200
commit7feab1fb95317b924fe39c49dd9907ca3df61a40 (patch)
tree41db3b22d74c9971b7549c76d1f9a29af40fa14a /src/qmlcompiler/qqmljsimportvisitor.cpp
parent813796b303af168045d43574321b48d82b41d48d (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.cpp33
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);
}