diff options
author | Warwick Allison <warwick.allison@nokia.com> | 2010-02-09 02:32:22 (GMT) |
---|---|---|
committer | Warwick Allison <warwick.allison@nokia.com> | 2010-02-09 02:32:22 (GMT) |
commit | 2f653cc06b97b443b9832d0121dbf92b35dd32c2 (patch) | |
tree | 5929efcc1e746414cac18e3a02e3d1bff59edd0e /src/declarative/qml | |
parent | 64d94b747dfa2448d9ba0157fc2a44c13cf4b1d5 (diff) | |
download | Qt-2f653cc06b97b443b9832d0121dbf92b35dd32c2.zip Qt-2f653cc06b97b443b9832d0121dbf92b35dd32c2.tar.gz Qt-2f653cc06b97b443b9832d0121dbf92b35dd32c2.tar.bz2 |
Remove old implicit module support.
Previously, it was allowed to use type qualification to refer to types
defined in subdirectories - indeed, this was the only form of modularity.
This is no longer desirable since we have good import features.
Task-number: QTBUG-7721
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qmlcompositetypemanager.cpp | 16 | ||||
-rw-r--r-- | src/declarative/qml/qmlengine.cpp | 14 |
2 files changed, 16 insertions, 14 deletions
diff --git a/src/declarative/qml/qmlcompositetypemanager.cpp b/src/declarative/qml/qmlcompositetypemanager.cpp index 9c78912..3504fe9 100644 --- a/src/declarative/qml/qmlcompositetypemanager.cpp +++ b/src/declarative/qml/qmlcompositetypemanager.cpp @@ -512,14 +512,18 @@ int QmlCompositeTypeManager::resolveTypes(QmlCompositeTypeData *unit) int majorVersion; int minorVersion; QmlEnginePrivate::ImportedNamespace *typeNamespace = 0; - if (!QmlEnginePrivate::get(engine)->resolveType(unit->imports, typeName, &ref.type, &url, &majorVersion, &minorVersion, &typeNamespace)) { - // XXX could produce error message here. - } - - if (typeNamespace) { + if (!QmlEnginePrivate::get(engine)->resolveType(unit->imports, typeName, &ref.type, &url, &majorVersion, &minorVersion, &typeNamespace) + || typeNamespace) + { + // Known to not be a type: + // - known to be a namespace (Namespace {}) + // - type with unknown namespace (UnknownNamespace.SomeType {}) QmlError error; error.setUrl(unit->imports.baseUrl()); - error.setDescription(tr("Namespace %1 cannot be used as a type").arg(QString::fromUtf8(typeName))); + if (typeNamespace) + error.setDescription(tr("Namespace %1 cannot be used as a type").arg(QString::fromUtf8(typeName))); + else + error.setDescription(tr("%1 is not a type").arg(QString::fromUtf8(typeName))); if (!parserRef->refObjects.isEmpty()) { QmlParser::Object *obj = parserRef->refObjects.first(); error.setLine(obj->location.start.line); diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index bb26d30..f4dcb7a 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -1276,14 +1276,12 @@ public: QmlEnginePrivate::ImportedNamespace *s = 0; int slash = type.indexOf('/'); if (slash >= 0) { - while (!s) { - s = set.value(QString::fromUtf8(type.left(slash))); - int nslash = type.indexOf('/',slash+1); - if (nslash > 0) - slash = nslash; - else - break; - } + s = set.value(QString::fromUtf8(type.left(slash))); + if (!s) + return false; // qualifier must be a namespace + int nslash = type.indexOf('/',slash+1); + if (nslash > 0) + return false; // only single qualification allowed } else { s = &unqualifiedset; } |