diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2020-05-06 12:22:50 +0200 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2020-05-19 08:10:11 +0200 |
commit | d29f3d7a62780d74f62330b0e3a0703a72155852 (patch) | |
tree | 8c1b520890827c059ba93d1e15f579a1bf011437 /src | |
parent | 98277a1e8f7bc7a32035e9ade9a55a4f51d8dd80 (diff) |
Allow using lowercase enum names
Fixes: QTBUG-83395
Change-Id: I98dd953497c6e28a1cfb5228095f05547e49b11d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/qml/qqmltypecompiler.cpp | 5 | ||||
-rw-r--r-- | src/qml/qml/qqmltypewrapper.cpp | 23 |
2 files changed, 1 insertions, 27 deletions
diff --git a/src/qml/qml/qqmltypecompiler.cpp b/src/qml/qml/qqmltypecompiler.cpp index 65b9213954..6a4966ffba 100644 --- a/src/qml/qml/qqmltypecompiler.cpp +++ b/src/qml/qml/qqmltypecompiler.cpp @@ -551,11 +551,8 @@ bool QQmlEnumTypeResolver::resolveEnumBindings() return true; } -bool QQmlEnumTypeResolver::assignEnumToBinding(QmlIR::Binding *binding, const QStringRef &enumName, int enumValue, bool isQtObject) +bool QQmlEnumTypeResolver::assignEnumToBinding(QmlIR::Binding *binding, const QStringRef &, int enumValue, bool) { - if (enumName.length() > 0 && enumName[0].isLower() && !isQtObject) { - COMPILE_EXCEPTION(binding, tr("Invalid property assignment: Enum value \"%1\" cannot start with a lowercase letter").arg(enumName.toString())); - } binding->type = QV4::CompiledData::Binding::Type_Number; binding->value.constantValueIndex = compiler->registerConstant(QV4::Encode((double)enumValue)); // binding->setNumberValueInternal((double)enumValue); diff --git a/src/qml/qml/qqmltypewrapper.cpp b/src/qml/qml/qqmltypewrapper.cpp index da76659ef4..6258403f33 100644 --- a/src/qml/qml/qqmltypewrapper.cpp +++ b/src/qml/qml/qqmltypewrapper.cpp @@ -158,14 +158,6 @@ static int enumForSingleton(QV4::ExecutionEngine *v4, String *name, QObject *qob return -1; } -static ReturnedValue throwLowercaseEnumError(QV4::ExecutionEngine *v4, String *name, const QQmlType &type) -{ - const QString message = - QStringLiteral("Cannot access enum value '%1' of '%2', enum values need to start with an uppercase letter.") - .arg(name->toQString()).arg(QLatin1String(type.typeName())); - return v4->throwTypeError(message); -} - ReturnedValue QQmlTypeWrapper::virtualGet(const Managed *m, PropertyKey id, const Value *receiver, bool *hasProperty) { // Keep this code in sync with ::virtualResolveLookupGetter @@ -220,13 +212,6 @@ ReturnedValue QQmlTypeWrapper::virtualGet(const Managed *m, PropertyKey id, cons if (hasProperty) *hasProperty = ok; - // Warn when attempting to access a lowercased enum value, singleton case - if (!ok && includeEnums && !name->startsWithUpper()) { - enumForSingleton(v4, name, qobjectSingleton, type, &ok); - if (ok) - return throwLowercaseEnumError(v4, name, type); - } - return result; } } else if (type.isQJSValueSingleton()) { @@ -304,14 +289,6 @@ ReturnedValue QQmlTypeWrapper::virtualGet(const Managed *m, PropertyKey id, cons if (hasProperty) *hasProperty = ok; - // Warn when attempting to access a lowercased enum value, non-singleton case - if (!ok && type.isValid() && !type.isSingleton() && !name->startsWithUpper()) { - bool enumOk = false; - type.enumValue(QQmlEnginePrivate::get(v4->qmlEngine()), name, &enumOk); - if (enumOk) - return throwLowercaseEnumError(v4, name, type); - } - return result; } |