diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 996d8de4ab559a0378b3f000d57fe6a6ea278802..f6eb31a3239b3307501c18f19024be5a46e0b45b 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -174,7 +174,7 @@ Check::Check(Document::Ptr doc, const Snapshot &snapshot, const QStringList &imp
     : _doc(doc)
     , _snapshot(snapshot)
     , _context(&_engine)
-    , _link(&_context, snapshot, importPaths)
+    , _link(&_context, doc, snapshot, importPaths)
     , _scopeBuilder(doc, &_context)
 {
 }
diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index 356ebbabcfa587691e41be916d92a6265f781d00..47c69c3a922ec963d575c3641e2609477865ce35 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -1305,7 +1305,7 @@ Context::~Context()
 void Context::build(const QList<Node *> &astPath, QmlJS::Document::Ptr doc,
                     const QmlJS::Snapshot &snapshot, const QStringList &importPaths)
 {
-    Link link(this, snapshot, importPaths);
+    Link link(this, doc, snapshot, importPaths);
     link.scopeChainAt(doc, astPath);
 }
 
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp
index 5b597f2b622410bbad1aece809171ca43621b2a3..072710bac827fc70b9bae0397e6dbdba16b926e2 100644
--- a/src/libs/qmljs/qmljslink.cpp
+++ b/src/libs/qmljs/qmljslink.cpp
@@ -14,9 +14,10 @@ using namespace QmlJS;
 using namespace QmlJS::Interpreter;
 using namespace QmlJS::AST;
 
-Link::Link(Context *context, const Snapshot &snapshot,
+Link::Link(Context *context, const Document::Ptr &doc, const Snapshot &snapshot,
            const QStringList &importPaths)
-    : _snapshot(snapshot)
+    : _doc(doc)
+    , _snapshot(snapshot)
     , _context(context)
     , _importPaths(importPaths)
 {
@@ -240,9 +241,8 @@ void Link::importFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc,
 
         importNamespace->setProperty(targetName, importedDoc->bind()->rootObjectValue());
     } else {
-        _diagnosticMessages.append(DiagnosticMessage(
-                DiagnosticMessage::Error, import->fileNameToken,
-                QCoreApplication::translate("QmlJS::Link", "could not find file or directory")));
+        error(doc, import->fileNameToken,
+              QCoreApplication::translate("QmlJS::Link", "could not find file or directory"));
     }
 }
 
@@ -283,19 +283,16 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A
         const QString versionString = doc->source().mid(import->versionToken.offset, import->versionToken.length);
         const int dotIdx = versionString.indexOf(QLatin1Char('.'));
         if (dotIdx == -1) {
-            _diagnosticMessages.append(DiagnosticMessage(
-                    DiagnosticMessage::Error, import->versionToken,
-                    QCoreApplication::translate("QmlJS::Link", "expected two numbers separated by a dot")));
+            error(doc, import->versionToken,
+                  QCoreApplication::translate("QmlJS::Link", "expected two numbers separated by a dot"));
             return;
         } else {
             majorVersion = versionString.left(dotIdx).toInt();
             minorVersion = versionString.mid(dotIdx + 1).toInt();
         }
     } else {
-        _diagnosticMessages.append(DiagnosticMessage(
-                DiagnosticMessage::Error,
-                locationFromRange(import->firstSourceLocation(), import->lastSourceLocation()),
-                QCoreApplication::translate("QmlJS::Link", "package import requires a version number")));
+        error(doc, locationFromRange(import->firstSourceLocation(), import->lastSourceLocation()),
+              QCoreApplication::translate("QmlJS::Link", "package import requires a version number"));
         return;
     }
 
@@ -339,10 +336,8 @@ void Link::importNonFile(Interpreter::ObjectValue *typeEnv, Document::Ptr doc, A
         }
     }
 
-    _diagnosticMessages.append(DiagnosticMessage(
-            DiagnosticMessage::Error,
-            locationFromRange(import->firstSourceLocation(), import->lastSourceLocation()),
-            QCoreApplication::translate("QmlJS::Link", "package not found")));
+    error(doc, locationFromRange(import->firstSourceLocation(), import->lastSourceLocation()),
+          QCoreApplication::translate("QmlJS::Link", "package not found"));
 }
 
 UiQualifiedId *Link::qualifiedTypeNameId(Node *node)
@@ -354,3 +349,9 @@ UiQualifiedId *Link::qualifiedTypeNameId(Node *node)
     else
         return 0;
 }
+
+void Link::error(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message)
+{
+    if (doc->fileName() == _doc->fileName())
+        _diagnosticMessages.append(DiagnosticMessage(DiagnosticMessage::Error, loc, message));
+}
diff --git a/src/libs/qmljs/qmljslink.h b/src/libs/qmljs/qmljslink.h
index 87ca0ad2d6887fd429ee1a8d57e249e32beae3ee..6852e57caf50c5277b73010dc1e06bc1e5fdf41c 100644
--- a/src/libs/qmljs/qmljslink.h
+++ b/src/libs/qmljs/qmljslink.h
@@ -20,7 +20,8 @@ class Link
 {
 public:
     // Link all documents in snapshot
-    Link(Interpreter::Context *context, const Snapshot &snapshot, const QStringList &importPaths);
+    Link(Interpreter::Context *context, const Document::Ptr &doc, const Snapshot &snapshot,
+         const QStringList &importPaths);
     ~Link();
 
     // Get the scope chain for the currentObject inside doc.
@@ -49,7 +50,10 @@ private:
                        AST::UiImport *import);
     void importObject(Bind *bind, const QString &name, Interpreter::ObjectValue *object, NameId *targetNamespace);
 
+    void error(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message);
+
 private:
+    Document::Ptr _doc;
     Snapshot _snapshot;
     Interpreter::Context *_context;
     QMultiHash<QString, Document::Ptr> _documentByPath;