diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 5a6eee9ffc54e6f718963498e1ed0caebc2447cd..bd3f5fdc57b5abdb647bc8b3efe644c9c7cb5dc4 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -1354,6 +1354,8 @@ void QmlJSTextEditor::updateSemanticInfo(const SemanticInfo &semanticInfo)
     appendExtraSelectionsForMessages(&selections, doc->diagnosticMessages(), document());
     appendExtraSelectionsForMessages(&selections, m_semanticInfo.semanticMessages, document());
     setExtraSelections(CodeWarningsSelection, selections);
+
+    emit semanticInfoUpdated(semanticInfo);
 }
 
 void QmlJSTextEditor::onCursorPositionChanged()
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index 472243ada02821e2c955fbe0304db92782b1b227..0239050713c24ca38f74e2419e07c4bf83e8393e 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -218,6 +218,9 @@ public slots:
     void followSymbolUnderCursor();
     virtual void setFontSettings(const TextEditor::FontSettings &);
 
+signals:
+    void semanticInfoUpdated(const QmlJSEditor::Internal::SemanticInfo &semanticInfo);
+
 private slots:
     void onDocumentUpdated(QmlJS::Document::Ptr doc);
     void modificationChanged(bool);