From 8f6956e6ec2c5255f8e0dae94bd1ba5f5df24d9c Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Fri, 10 Jul 2009 12:09:26 +0200
Subject: [PATCH] Ignore outdated semantic info.

---
 src/plugins/cppeditor/cppeditor.cpp | 13 +++++++++++++
 src/plugins/cppeditor/cppeditor.h   |  4 +++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 59c68c2f5b3..b16d5e87804 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1256,6 +1256,11 @@ Symbol *CPPEditor::findDefinition(Symbol *symbol)
     return 0;
 }
 
+SemanticInfo CPPEditor::semanticInfo() const
+{
+    return m_lastSemanticInfo;
+}
+
 bool CPPEditor::isElectricCharacter(const QChar &ch) const
 {
     if (ch == QLatin1Char('{') ||
@@ -1616,6 +1621,14 @@ void CPPEditor::semanticRehighlight()
 
 void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo)
 {
+    if (semanticInfo.revision != document()->revision()) {
+        // got outdated semantic info
+        semanticRehighlight();
+        return;
+    }
+
+    m_lastSemanticInfo = semanticInfo;
+
     int line = 0, column = 0;
     convertPosition(position(), &line, &column);
 
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index 8fa991fc8ff..98889697798 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -181,11 +181,12 @@ public:
 
     CPPEditor(QWidget *parent);
     ~CPPEditor();
-
     void unCommentSelection();
 
     void indentInsertedText(const QTextCursor &tc);
 
+    SemanticInfo semanticInfo() const;
+
 public Q_SLOTS:
     virtual void setFontSettings(const TextEditor::FontSettings &);
     virtual void setDisplaySettings(const TextEditor::DisplaySettings &);
@@ -302,6 +303,7 @@ private:
     bool m_inRename;
 
     SemanticHighlighter *m_semanticHighlighter;
+    SemanticInfo m_lastSemanticInfo;
 };
 
 
-- 
GitLab