From 1ec6cbd91358f7e0b84904bbf8ca4ac6f022e243 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Fri, 29 Jan 2010 13:36:07 +0100 Subject: [PATCH] Fix for renamed directory imports in the QML code model. --- src/libs/qmljs/qmljslink.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 56b15e53676..d7498c3e8a3 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -60,6 +60,8 @@ void LinkImports::linkImports(Bind *bind, const QList<Bind *> &binds) path += it->import->fileName->asString(); path = QDir::cleanPath(path); + ObjectValue *importNamespace = 0; + foreach (Bind *otherBind, binds) { Document::Ptr otherDoc = otherBind->_doc; QFileInfo otherFileInfo(otherDoc->fileName()); @@ -70,11 +72,9 @@ void LinkImports::linkImports(Bind *bind, const QList<Bind *> &binds) if (!directoryImport && !fileImport) continue; - ObjectValue *importInto = bind->_typeEnvironment; - if (directoryImport && it->import->importId) { - ObjectValue *namespaceObject = bind->_interp->newObject(/*prototype =*/0); - importInto->setProperty(it->import->importId->asString(), namespaceObject); - importInto = namespaceObject; + if (directoryImport && it->import->importId && !importNamespace) { + importNamespace = bind->_interp->newObject(/*prototype =*/0); + bind->_typeEnvironment->setProperty(it->import->importId->asString(), importNamespace); } QString targetName; @@ -84,6 +84,10 @@ void LinkImports::linkImports(Bind *bind, const QList<Bind *> &binds) targetName = componentName(otherFileInfo.fileName()); } + ObjectValue *importInto = bind->_typeEnvironment; + if (importNamespace) + importInto = importNamespace; + importInto->setProperty(targetName, otherBind->_rootObjectValue); } } -- GitLab