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:
Fabian Kosmale 2023-08-30 10:35:00 +02:00 committed by Ulf Hermann
parent eac67c26f2
commit e96e929f80
6 changed files with 21 additions and 21 deletions

View File

@ -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.

View File

@ -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

View File

@ -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 {

View File

@ -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);
}
}

View File

@ -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());
}

View File

@ -1685,7 +1685,7 @@ void QmltcCompiler::compileScriptBinding(QmltcType &current,
};
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 &current,
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");