forked from qt-creator/qt-creator
C++: Only parse with appropriate defines for open editors.
If two files from different (sub-)projects include the same header file, and the defined macros differ for both files, the header file will be parsed with only the appropriate macros for the including file. Task-number: QTCREATORBUG-9802 Task-number: QTCREATORBUG-1249 Change-Id: I560490afa287b3bb1e863bce1bb4f57af36ad56e Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
@@ -33,12 +33,14 @@
|
||||
#include "cpphighlightingsupport.h"
|
||||
#include "cppmodelmanager.h"
|
||||
#include "cppsemanticinfo.h"
|
||||
#include "cppsnapshotupdater.h"
|
||||
|
||||
#include <cplusplus/CppDocument.h>
|
||||
|
||||
#include <QFuture>
|
||||
#include <QObject>
|
||||
#include <QPointer>
|
||||
#include <QSharedPointer>
|
||||
#include <QTimer>
|
||||
|
||||
namespace CPlusPlus { class AST; }
|
||||
@@ -111,6 +113,8 @@ public:
|
||||
/// thread if it is outdate.
|
||||
SemanticInfo recalculateSemanticInfo(bool emitSignalWhenFinished = true);
|
||||
|
||||
CPlusPlus::Document::Ptr lastSemanticInfoDocument() const;
|
||||
|
||||
/// Recalculates the semantic info in a future, and will emit the
|
||||
/// semanticInfoUpdated() signal when finished.
|
||||
/// Requires that initialized() is true.
|
||||
@@ -119,6 +123,8 @@ public:
|
||||
|
||||
CppCompletionAssistProvider *completionAssistProvider() const;
|
||||
|
||||
QSharedPointer<SnapshotUpdater> snapshotUpdater();
|
||||
|
||||
signals:
|
||||
void documentUpdated();
|
||||
void diagnosticsChanged();
|
||||
@@ -173,6 +179,7 @@ private:
|
||||
QFuture<void> m_documentParser;
|
||||
|
||||
// content caching
|
||||
mutable QMutex m_cachedContentsLock;
|
||||
mutable QByteArray m_cachedContents;
|
||||
mutable int m_cachedContentsEditorRevision;
|
||||
bool m_fileIsBeingReloaded;
|
||||
@@ -188,6 +195,7 @@ private:
|
||||
mutable QMutex m_lastSemanticInfoLock;
|
||||
SemanticInfo m_lastSemanticInfo;
|
||||
QFuture<void> m_futureSemanticInfo;
|
||||
QSharedPointer<SnapshotUpdater> m_snapshotUpdater;
|
||||
|
||||
// Highlighting:
|
||||
unsigned m_lastHighlightRevision;
|
||||
|
||||
Reference in New Issue
Block a user