QQmlSA::ScriptBindingKind: Turn into scoped enumeration
and remove the Script_ prefix from its entries. This is more aligned
with Qt's namings conventions.
Change-Id: Ie97c2ce204b5532ab6bd6b136145f2a537175fbb
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
(cherry picked from commit d12d7a901f
)
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
This commit is contained in:
parent
eac67c26f2
commit
e96e929f80
|
@ -1775,7 +1775,7 @@ QQmlJSImportVisitor::parseBindingExpression(const QString &name,
|
|||
|
||||
QQmlJSMetaPropertyBinding binding(location, name);
|
||||
binding.setScriptBinding(addFunctionOrExpression(m_currentScope, name),
|
||||
QQmlSA::ScriptBindingKind::Script_PropertyBinding);
|
||||
QQmlSA::ScriptBindingKind::PropertyBinding);
|
||||
m_bindings.append(UnfinishedBinding { m_currentScope, [=]() { return binding; } });
|
||||
return BindingExpressionParseResult::Script;
|
||||
}
|
||||
|
@ -1819,7 +1819,7 @@ QQmlJSImportVisitor::parseBindingExpression(const QString &name,
|
|||
binding.setStringLiteral(templateLit->value);
|
||||
} else {
|
||||
binding.setScriptBinding(addFunctionOrExpression(m_currentScope, name),
|
||||
QQmlSA::ScriptBindingKind::Script_PropertyBinding);
|
||||
QQmlSA::ScriptBindingKind::PropertyBinding);
|
||||
for (QQmlJS::AST::TemplateLiteral *l = templateLit; l; l = l->next) {
|
||||
if (QQmlJS::AST::ExpressionNode *expression = l->expression)
|
||||
expression->accept(this);
|
||||
|
@ -1841,7 +1841,7 @@ QQmlJSImportVisitor::parseBindingExpression(const QString &name,
|
|||
if (!binding.isValid()) {
|
||||
// consider this to be a script binding (see IRBuilder::setBindingValue)
|
||||
binding.setScriptBinding(addFunctionOrExpression(m_currentScope, name),
|
||||
QQmlSA::ScriptBindingKind::Script_PropertyBinding,
|
||||
QQmlSA::ScriptBindingKind::PropertyBinding,
|
||||
isUndefinedBinding ? ScriptBindingValueType::ScriptValue_Undefined
|
||||
: ScriptBindingValueType::ScriptValue_Unknown);
|
||||
}
|
||||
|
@ -2031,18 +2031,18 @@ bool QQmlJSImportVisitor::visit(UiScriptBinding *scriptBinding)
|
|||
signalParameters]() {
|
||||
// when encountering a signal handler, add it as a script binding
|
||||
Q_ASSERT(scope->isFullyResolved());
|
||||
QQmlSA::ScriptBindingKind kind = QQmlSA::ScriptBindingKind::Script_Invalid;
|
||||
QQmlSA::ScriptBindingKind kind = QQmlSA::ScriptBindingKind::Invalid;
|
||||
const auto methods = scope->methods(signalName, QQmlJSMetaMethodType::Signal);
|
||||
if (!methods.isEmpty()) {
|
||||
kind = QQmlSA::ScriptBindingKind::Script_SignalHandler;
|
||||
kind = QQmlSA::ScriptBindingKind::SignalHandler;
|
||||
checkSignal(scope, groupLocation, name, signalParameters);
|
||||
} else if (QQmlJSUtils::changeHandlerProperty(scope, signalName).has_value()) {
|
||||
kind = QQmlSA::ScriptBindingKind::Script_ChangeHandler;
|
||||
kind = QQmlSA::ScriptBindingKind::ChangeHandler;
|
||||
checkSignal(scope, groupLocation, name, signalParameters);
|
||||
} else if (scope->hasProperty(name)) {
|
||||
// Not a signal handler after all.
|
||||
// We can see this now because the type is fully resolved.
|
||||
kind = QQmlSA::ScriptBindingKind::Script_PropertyBinding;
|
||||
kind = QQmlSA::ScriptBindingKind::PropertyBinding;
|
||||
m_signalHandlers.remove(firstSourceLocation);
|
||||
} else {
|
||||
// We already know it's bad, but let's allow checkSignal() to do its thing.
|
||||
|
|
|
@ -520,7 +520,7 @@ class Q_QMLCOMPILER_PRIVATE_EXPORT QQmlJSMetaPropertyBinding
|
|||
friend bool operator!=(Script a, Script b) { return !(a == b); }
|
||||
QQmlJSMetaMethod::RelativeFunctionIndex index =
|
||||
QQmlJSMetaMethod::RelativeFunctionIndex::Invalid;
|
||||
ScriptBindingKind kind = ScriptBindingKind::Script_Invalid;
|
||||
ScriptBindingKind kind = ScriptBindingKind::Invalid;
|
||||
ScriptBindingValueType valueType = ScriptBindingValueType::ScriptValue_Unknown;
|
||||
};
|
||||
struct Object {
|
||||
|
@ -753,7 +753,7 @@ public:
|
|||
if (auto *script = std::get_if<Content::Script>(&m_bindingContent))
|
||||
return script->kind;
|
||||
// warn
|
||||
return ScriptBindingKind::Script_Invalid;
|
||||
return ScriptBindingKind::Invalid;
|
||||
}
|
||||
|
||||
ScriptBindingValueType scriptValueType() const
|
||||
|
|
|
@ -27,11 +27,11 @@ enum class BindingType : unsigned int {
|
|||
GroupProperty,
|
||||
};
|
||||
|
||||
enum ScriptBindingKind : unsigned int {
|
||||
Script_Invalid,
|
||||
Script_PropertyBinding, // property int p: 1 + 1
|
||||
Script_SignalHandler, // onSignal: { ... }
|
||||
Script_ChangeHandler, // onXChanged: { ... }
|
||||
enum class ScriptBindingKind : unsigned int {
|
||||
Invalid,
|
||||
PropertyBinding, // property int p: 1 + 1
|
||||
SignalHandler, // onSignal: { ... }
|
||||
ChangeHandler, // onXChanged: { ... }
|
||||
};
|
||||
|
||||
enum class ScopeType {
|
||||
|
|
|
@ -720,12 +720,12 @@ void tst_qqmljsscope::resolvedNonUniqueScopes()
|
|||
auto onCompletedBinding = value(componentBindings, u"onCompleted"_s);
|
||||
QVERIFY(onCompletedBinding.isValid());
|
||||
QCOMPARE(onCompletedBinding.bindingType(), QQmlSA::BindingType::Script);
|
||||
QCOMPARE(onCompletedBinding.scriptKind(), QQmlSA::ScriptBindingKind::Script_SignalHandler);
|
||||
QCOMPARE(onCompletedBinding.scriptKind(), QQmlSA::ScriptBindingKind::SignalHandler);
|
||||
auto onDestructionBinding = value(componentBindings, u"onDestruction"_s);
|
||||
QVERIFY(onDestructionBinding.isValid());
|
||||
QCOMPARE(onDestructionBinding.bindingType(), QQmlSA::BindingType::Script);
|
||||
QCOMPARE(onDestructionBinding.scriptKind(),
|
||||
QQmlSA::ScriptBindingKind::Script_SignalHandler);
|
||||
QQmlSA::ScriptBindingKind::SignalHandler);
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -738,7 +738,7 @@ void tst_qqmljsscope::resolvedNonUniqueScopes()
|
|||
auto onXChangedBinding = value(pBindings, u"onXChanged"_s);
|
||||
QVERIFY(onXChangedBinding.isValid());
|
||||
QCOMPARE(onXChangedBinding.bindingType(), QQmlSA::BindingType::Script);
|
||||
QCOMPARE(onXChangedBinding.scriptKind(), QQmlSA::ScriptBindingKind::Script_SignalHandler);
|
||||
QCOMPARE(onXChangedBinding.scriptKind(), QQmlSA::ScriptBindingKind::SignalHandler);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ void SignalHandlerPass::run(const QQmlSA::Element &element)
|
|||
|
||||
// Already script binding, check if the script kind is signal handler
|
||||
if (propertyBinding.bindingType() == QQmlSA::BindingType::Script) {
|
||||
if (propertyBinding.scriptKind() == QQmlSA::ScriptBindingKind::Script_SignalHandler) {
|
||||
if (propertyBinding.scriptKind() == QQmlSA::ScriptBindingKind::SignalHandler) {
|
||||
emitWarning(u"Declared signal handler \"%1\""_s.arg(propertyName),
|
||||
qmlControlsSanity, propertyBinding.sourceLocation());
|
||||
}
|
||||
|
|
|
@ -1685,7 +1685,7 @@ void QmltcCompiler::compileScriptBinding(QmltcType ¤t,
|
|||
};
|
||||
|
||||
switch (binding.scriptKind()) {
|
||||
case QQmlSA::ScriptBindingKind::Script_PropertyBinding: {
|
||||
case QQmlSA::ScriptBindingKind::PropertyBinding: {
|
||||
if (!propertyType) {
|
||||
recordError(binding.sourceLocation(),
|
||||
u"Binding on property '" + propertyName + u"' of unknown type");
|
||||
|
@ -1727,13 +1727,13 @@ void QmltcCompiler::compileScriptBinding(QmltcType ¤t,
|
|||
property, valueTypeIndex, accessor.name);
|
||||
break;
|
||||
}
|
||||
case QQmlSA::ScriptBindingKind::Script_SignalHandler: {
|
||||
case QQmlSA::ScriptBindingKind::SignalHandler: {
|
||||
const auto name = QQmlJSUtils::signalName(propertyName);
|
||||
Q_ASSERT(name.has_value());
|
||||
compileScriptSignal(*name);
|
||||
break;
|
||||
}
|
||||
case QQmlSA ::ScriptBindingKind::Script_ChangeHandler: {
|
||||
case QQmlSA ::ScriptBindingKind::ChangeHandler: {
|
||||
const QString objectClassName = objectType->internalName();
|
||||
const QString bindingFunctorName = newSymbol(bindingSymbolName + u"Functor");
|
||||
|
||||
|
|
Loading…
Reference in New Issue