summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2010-02-09 02:32:22 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2010-02-09 02:32:22 (GMT)
commit2f653cc06b97b443b9832d0121dbf92b35dd32c2 (patch)
tree5929efcc1e746414cac18e3a02e3d1bff59edd0e /src/declarative/qml
parent64d94b747dfa2448d9ba0157fc2a44c13cf4b1d5 (diff)
downloadQt-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.cpp16
-rw-r--r--src/declarative/qml/qmlengine.cpp14
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;
}