diff options
5 files changed, 7 insertions, 40 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; } diff --git a/tests/auto/qml/qqmllanguage/data/lowercaseEnumCompileTime.1.errors.txt b/tests/auto/qml/qqmllanguage/data/lowercaseEnumCompileTime.1.errors.txt deleted file mode 100644 index 33360e96cf..0000000000 --- a/tests/auto/qml/qqmllanguage/data/lowercaseEnumCompileTime.1.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:5:Invalid property assignment: Enum value "lowercaseEnumVal" cannot start with a lowercase letter diff --git a/tests/auto/qml/qqmllanguage/data/lowercaseEnumCompileTime.2.errors.txt b/tests/auto/qml/qqmllanguage/data/lowercaseEnumCompileTime.2.errors.txt deleted file mode 100644 index 33360e96cf..0000000000 --- a/tests/auto/qml/qqmllanguage/data/lowercaseEnumCompileTime.2.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:5:Invalid property assignment: Enum value "lowercaseEnumVal" cannot start with a lowercase letter diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index 3dbaa2ec4e..b4888f6fa7 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -4073,40 +4073,35 @@ void tst_qqmllanguage::globalEnums() void tst_qqmllanguage::lowercaseEnumRuntime_data() { QTest::addColumn<QString>("file"); - QTest::addColumn<QString>("errorMessage"); - QTest::newRow("enum from normal type") << "lowercaseEnumRuntime.1.qml" << ":8: TypeError: Cannot access enum value 'lowercaseEnumVal' of 'MyTypeObject', enum values need to start with an uppercase letter."; - QTest::newRow("enum from singleton type") << "lowercaseEnumRuntime.2.qml" << ":8: TypeError: Cannot access enum value 'lowercaseEnumVal' of 'MyTypeObjectSingleton', enum values need to start with an uppercase letter."; + QTest::newRow("enum from normal type") << "lowercaseEnumRuntime.1.qml"; + QTest::newRow("enum from singleton type") << "lowercaseEnumRuntime.2.qml"; } void tst_qqmllanguage::lowercaseEnumRuntime() { QFETCH(QString, file); - QFETCH(QString, errorMessage); QQmlComponent component(&engine, testFileUrl(file)); VERIFY_ERRORS(0); - QString warning = component.url().toString() + errorMessage; - QTest::ignoreMessage(QtWarningMsg, qPrintable(warning)); delete component.create(); } void tst_qqmllanguage::lowercaseEnumCompileTime_data() { QTest::addColumn<QString>("file"); - QTest::addColumn<QString>("errorFile"); - QTest::newRow("assignment to int property") << "lowercaseEnumCompileTime.1.qml" << "lowercaseEnumCompileTime.1.errors.txt"; - QTest::newRow("assignment to enum property") << "lowercaseEnumCompileTime.2.qml" << "lowercaseEnumCompileTime.2.errors.txt"; + QTest::newRow("assignment to int property") << "lowercaseEnumCompileTime.1.qml"; + QTest::newRow("assignment to enum property") << "lowercaseEnumCompileTime.2.qml"; } void tst_qqmllanguage::lowercaseEnumCompileTime() { QFETCH(QString, file); - QFETCH(QString, errorFile); QQmlComponent component(&engine, testFileUrl(file)); - VERIFY_ERRORS(qPrintable(errorFile)); + VERIFY_ERRORS(0); + delete component.create(); } void tst_qqmllanguage::scopedEnum() |