From a8ff5e8343286608e86e0d06a6681b7cd0b48d5e Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Sun, 28 Apr 2013 11:20:02 +0300
Subject: [PATCH] Fix link error with MSVC

CppTools.lib(CppTools.dll) : error LNK2005: "public: virtual __thiscall
  QFutureInterface<class TextEditor::HighlightingResult>::~QFutureInterface<class TextEditor::HighlightingResult>(void)"
  (??1?$QFutureInterface@VHighlightingResult@TextEditor@@@@UAE@XZ) already defined in moc_cppeditor.obj
   Creating library ..\..\..\lib\qtcreator\plugins\QtProject\CppEditor.lib and object
   ..\..\..\lib\qtcreator\plugins\QtProject\CppEditor.exp..\..\..\lib\qtcreator\plugins\QtProject\CppEditor.dll :
   fatal error LNK1169: one or more multiply defined symbols found

Change-Id: Id53a0f8a99dbd18a9cbdf2af57b4f3970f5c41a3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
---
 src/plugins/cppeditor/cppeditor.cpp            | 8 ++++----
 src/plugins/cppeditor/cppeditor.h              | 2 +-
 src/plugins/cpptools/cpptoolseditorsupport.cpp | 4 ++--
 src/plugins/cpptools/cpptoolseditorsupport.h   | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 2b31c7bebe0..a4c50fc659f 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -534,8 +534,8 @@ CPPEditorWidget::CPPEditorWidget(QWidget *parent)
                 this, SLOT(onDocumentUpdated()));
         connect(editorSupport, SIGNAL(semanticInfoUpdated(CppTools::SemanticInfo)),
                 this, SLOT(updateSemanticInfo(CppTools::SemanticInfo)));
-        connect(editorSupport, SIGNAL(highlighterStarted(QFuture<TextEditor::HighlightingResult>, unsigned)),
-                this, SLOT(highlighterStarted(QFuture<TextEditor::HighlightingResult>, unsigned)));
+        connect(editorSupport, SIGNAL(highlighterStarted(QFuture<TextEditor::HighlightingResult> *, unsigned)),
+                this, SLOT(highlighterStarted(QFuture<TextEditor::HighlightingResult> *, unsigned)));
 
         m_completionSupport = m_modelManager->completionSupport(editor());
     }
@@ -1978,10 +1978,10 @@ void CPPEditorWidget::semanticRehighlight(bool force)
     m_modelManager->cppEditorSupport(editor())->recalculateSemanticInfoDetached(force);
 }
 
-void CPPEditorWidget::highlighterStarted(QFuture<TextEditor::HighlightingResult> highlighter,
+void CPPEditorWidget::highlighterStarted(QFuture<TextEditor::HighlightingResult> *highlighter,
                                          unsigned revision)
 {
-    m_highlighter = highlighter;
+    m_highlighter = *highlighter;
     m_highlightRevision = revision;
     m_highlightWatcher.setFuture(m_highlighter);
 }
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index 679bcb9c55d..ae7506cb66f 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -141,7 +141,7 @@ public Q_SLOTS:
     void findUsages();
     void renameUsagesNow(const QString &replacement = QString());
     void semanticRehighlight(bool force = false);
-    void highlighterStarted(QFuture<TextEditor::HighlightingResult> highlighter, unsigned revision);
+    void highlighterStarted(QFuture<TextEditor::HighlightingResult> *highlighter, unsigned revision);
 
 protected:
     bool event(QEvent *e);
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.cpp b/src/plugins/cpptools/cpptoolseditorsupport.cpp
index bc2e91b56c6..f9e37b51901 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.cpp
+++ b/src/plugins/cpptools/cpptoolseditorsupport.cpp
@@ -290,13 +290,13 @@ void CppEditorSupport::startHighlighting()
 
         m_highlighter = m_highlightingSupport->highlightingFuture(doc, snapshot);
         m_lastHighlightRevision = revision;
-        emit highlighterStarted(m_highlighter, m_lastHighlightRevision);
+        emit highlighterStarted(&m_highlighter, m_lastHighlightRevision);
     } else {
         static const Document::Ptr dummyDoc;
         static const Snapshot dummySnapshot;
         m_highlighter = m_highlightingSupport->highlightingFuture(dummyDoc, dummySnapshot);
         m_lastHighlightRevision = editorRevision();
-        emit highlighterStarted(m_highlighter, m_lastHighlightRevision);
+        emit highlighterStarted(&m_highlighter, m_lastHighlightRevision);
     }
 }
 
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.h b/src/plugins/cpptools/cpptoolseditorsupport.h
index c36951c1b38..d7534f33e25 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.h
+++ b/src/plugins/cpptools/cpptoolseditorsupport.h
@@ -111,7 +111,7 @@ signals:
     void documentUpdated();
     void diagnosticsChanged();
     void semanticInfoUpdated(CppTools::SemanticInfo);
-    void highlighterStarted(QFuture<TextEditor::HighlightingResult>, unsigned revision);
+    void highlighterStarted(QFuture<TextEditor::HighlightingResult> *, unsigned revision);
 
 private slots:
     void updateDocument();
-- 
GitLab