diff --git a/src/libs/qmljs/qmljs_dependencies.pri b/src/libs/qmljs/qmljs_dependencies.pri index 3686f2e6287..2b2b2781383 100644 --- a/src/libs/qmljs/qmljs_dependencies.pri +++ b/src/libs/qmljs/qmljs_dependencies.pri @@ -2,4 +2,5 @@ QTC_LIB_NAME = QmlJS QTC_LIB_DEPENDS += \ utils \ languageutils \ - cplusplus + cplusplus \ + extensionsystem diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index f1add81b30c..82855e35688 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -1124,6 +1124,15 @@ public: const LanguageUtils::FakeMetaMethod &fakeMetaMethod() const; }; +class QMLJS_EXPORT CustomImportsProvider : public QObject +{ + Q_OBJECT +public: + explicit CustomImportsProvider(QObject *parent = 0) : QObject(parent) {} + virtual ~CustomImportsProvider() {} + virtual QList imports(ValueOwner *valueOwner, const Document *context) const = 0; +}; + } // namespace QmlJS #endif // QMLJS_INTERPRETER_H diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 83f82f81546..d9dc7f2ba95 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -38,6 +38,8 @@ #include "qmljsqrcparser.h" #include "qmljsconstants.h" +#include + #include using namespace LanguageUtils; @@ -213,6 +215,13 @@ Context::ImportsPerDocument LinkPrivate::linkImports() if (document) { // do it on document first, to make sure import errors are shown Imports *imports = new Imports(valueOwner); + + // Add custom imports for the opened document + auto providers = ExtensionSystem::PluginManager::getObjects(); + foreach (const auto &provider, providers) + foreach (const auto &import, provider->imports(valueOwner, document.data())) + importCache.insert(ImportCacheKey(import.info), import); + populateImportedTypes(imports, document); importsPerDocument.insert(document.data(), QSharedPointer(imports)); } diff --git a/tests/auto/qml/codemodel/importscheck/importscheck.pro b/tests/auto/qml/codemodel/importscheck/importscheck.pro index b36550a10a2..2821fb95ef2 100644 --- a/tests/auto/qml/codemodel/importscheck/importscheck.pro +++ b/tests/auto/qml/codemodel/importscheck/importscheck.pro @@ -1,4 +1,4 @@ -QTC_LIB_DEPENDS += cplusplus utils +QTC_LIB_DEPENDS += cplusplus utils extensionsystem include(../../../qttest.pri) include($$IDE_SOURCE_TREE/src/rpath.pri) DEFINES += QMLJS_BUILD_DIR