From c1c155f5bb746e7891726588036f007fb84e00e7 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Thu, 25 Mar 2010 15:23:57 +0100 Subject: [PATCH] Fix code model for nested Qml packages like Qt.labs.particles. Task-number: QTCREATORBUG-926 Reviewed-by: Erik Verbruggen --- src/libs/qmljs/qmljsinterpreter.cpp | 2 +- src/libs/qmljs/qmljslink.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 8de65a1b5bf..b9237424a87 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -430,7 +430,7 @@ private: } bool split(const QString &name, QString *packageName, QString *className) { - int dotIdx = name.indexOf(QLatin1Char('.')); + int dotIdx = name.lastIndexOf(QLatin1Char('.')); if (dotIdx != -1) { if (packageName) *packageName = name.left(dotIdx); diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 24c4b0bc759..5b597f2b622 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -275,7 +275,7 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A namespaceObject = typeEnv; } - const QString package = Bind::toString(import->importUri, '/'); + const QString packageName = Bind::toString(import->importUri, '.'); int majorVersion = QmlObjectValue::NoVersion; int minorVersion = QmlObjectValue::NoVersion; @@ -300,18 +300,19 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A } // if the package is in the meta type system, use it - if (engine()->metaTypeSystem().hasPackage(package)) { - foreach (QmlObjectValue *object, engine()->metaTypeSystem().staticTypesForImport(package, majorVersion, minorVersion)) { + if (engine()->metaTypeSystem().hasPackage(packageName)) { + foreach (QmlObjectValue *object, engine()->metaTypeSystem().staticTypesForImport(packageName, majorVersion, minorVersion)) { namespaceObject->setProperty(object->className(), object); } return; } else { // check the filesystem + const QString packagePath = Bind::toString(import->importUri, QDir::separator()); QStringList localImportPaths = _importPaths; localImportPaths.prepend(doc->path()); foreach (const QString &importPath, localImportPaths) { QDir dir(importPath); - if (!dir.cd(package)) + if (!dir.cd(packagePath)) continue; const LibraryInfo libraryInfo = _snapshot.libraryInfo(dir.path()); -- GitLab