diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-07-25 11:21:31 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-08-22 11:57:27 +0200 |
commit | fd9293dd0af0e8f253c0934ede60b72496ee0314 (patch) | |
tree | a06df33a43e1eaeddf12d14e863aa84031428c73 /src/libs/cplusplus | |
parent | 2fe1fec16b82561f2e4371bebe1b6d2c29e8fb96 (diff) | |
download | qt-creator-fd9293dd0af0e8f253c0934ede60b72496ee0314.tar.gz |
CppTools: CppPreprocessor: Track also unresolved includes
Change-Id: Ia36e7e7142dbc030a428369ed04e76e70e8eef0b
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/libs/cplusplus')
-rw-r--r-- | src/libs/cplusplus/CppDocument.cpp | 13 | ||||
-rw-r--r-- | src/libs/cplusplus/CppDocument.h | 10 | ||||
-rw-r--r-- | src/libs/cplusplus/FastPreprocessor.cpp | 4 | ||||
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 2 | ||||
-rw-r--r-- | src/libs/cplusplus/SnapshotSymbolVisitor.cpp | 2 | ||||
-rw-r--r-- | src/libs/cplusplus/TypeOfExpression.cpp | 2 |
6 files changed, 21 insertions, 12 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index 301019e909..fd299f7ca0 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -341,7 +341,7 @@ QString Document::fileName() const QStringList Document::includedFiles() const { QStringList files; - foreach (const Include &i, _includes) + foreach (const Include &i, _resolvedIncludes) files.append(i.resolvedFileName()); files.removeDuplicates(); return files; @@ -350,7 +350,10 @@ QStringList Document::includedFiles() const // This assumes to be called with a QDir::cleanPath cleaned fileName. void Document::addIncludeFile(const Document::Include &include) { - _includes.append(include); + if (include.resolvedFileName().isEmpty()) + _unresolvedIncludes.append(include); + else + _resolvedIncludes.append(include); } void Document::appendMacro(const Macro ¯o) @@ -740,7 +743,8 @@ Document::Ptr Snapshot::preprocessedDocument(const QString &source, const QStrin newDoc->_revision = thisDocument->_revision; newDoc->_editorRevision = thisDocument->_editorRevision; newDoc->_lastModified = thisDocument->_lastModified; - newDoc->_includes = thisDocument->_includes; + newDoc->_resolvedIncludes = thisDocument->_resolvedIncludes; + newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes; } FastPreprocessor pp(*this); @@ -758,7 +762,8 @@ Document::Ptr Snapshot::documentFromSource(const QByteArray &preprocessedCode, newDoc->_revision = thisDocument->_revision; newDoc->_editorRevision = thisDocument->_editorRevision; newDoc->_lastModified = thisDocument->_lastModified; - newDoc->_includes = thisDocument->_includes; + newDoc->_resolvedIncludes = thisDocument->_resolvedIncludes; + newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes; newDoc->_definedMacros = thisDocument->_definedMacros; newDoc->_macroUses = thisDocument->_macroUses; } diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index 593d604c2b..980535bb4d 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -312,8 +312,11 @@ public: QStringList includedFiles() const; void addIncludeFile(const Include &include); - QList<Include> includes() const - { return _includes; } + QList<Include> resolvedIncludes() const + { return _resolvedIncludes; } + + QList<Include> unresolvedIncludes() const + { return _unresolvedIncludes; } QList<Block> skippedBlocks() const { return _skippedBlocks; } @@ -348,7 +351,8 @@ private: /// All messages generated during lexical/syntactic/semantic analysis. QList<DiagnosticMessage> _diagnosticMessages; - QList<Include> _includes; + QList<Include> _resolvedIncludes; + QList<Include> _unresolvedIncludes; QList<Macro> _definedMacros; QList<Block> _skippedBlocks; QList<MacroUse> _macroUses; diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp index 7156b51f3d..70f271e13b 100644 --- a/src/libs/cplusplus/FastPreprocessor.cpp +++ b/src/libs/cplusplus/FastPreprocessor.cpp @@ -52,7 +52,7 @@ QByteArray FastPreprocessor::run(Document::Ptr newDoc, const QString &source) _merged.insert(fileName); mergeEnvironment(Preprocessor::configurationFileName); - foreach (const Document::Include &i, doc->includes()) + foreach (const Document::Include &i, doc->resolvedIncludes()) mergeEnvironment(i.resolvedFileName()); } @@ -78,7 +78,7 @@ void FastPreprocessor::mergeEnvironment(const QString &fileName) _merged.insert(fileName); if (Document::Ptr doc = _snapshot.document(fileName)) { - foreach (const Document::Include &i, doc->includes()) + foreach (const Document::Include &i, doc->resolvedIncludes()) mergeEnvironment(i.resolvedFileName()); _env.addMacros(doc->definedMacros()); diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index d6a5ecb865..cf9f2be7e1 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -1454,7 +1454,7 @@ void CreateBindings::process(Document::Ptr doc) if (! _processed.contains(globalNamespace)) { _processed.insert(globalNamespace); - foreach (const Document::Include &i, doc->includes()) { + foreach (const Document::Include &i, doc->resolvedIncludes()) { if (Document::Ptr incl = _snapshot.document(i.resolvedFileName())) process(incl); } diff --git a/src/libs/cplusplus/SnapshotSymbolVisitor.cpp b/src/libs/cplusplus/SnapshotSymbolVisitor.cpp index 9599607973..1406d778be 100644 --- a/src/libs/cplusplus/SnapshotSymbolVisitor.cpp +++ b/src/libs/cplusplus/SnapshotSymbolVisitor.cpp @@ -49,7 +49,7 @@ void SnapshotSymbolVisitor::accept(Document::Ptr doc, QSet<QString> *processed) if (doc && doc->globalNamespace() && ! processed->contains(doc->fileName())) { processed->insert(doc->fileName()); - foreach (const Document::Include &i, doc->includes()) { + foreach (const Document::Include &i, doc->resolvedIncludes()) { if (Document::Ptr incl = _snapshot.document(i.resolvedFileName())) accept(incl, processed); } diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp index 0808bf1a2a..01e9c8f7df 100644 --- a/src/libs/cplusplus/TypeOfExpression.cpp +++ b/src/libs/cplusplus/TypeOfExpression.cpp @@ -177,7 +177,7 @@ void TypeOfExpression::processEnvironment(Document::Ptr doc, Environment *env, if (doc && ! processed->contains(doc->fileName())) { processed->insert(doc->fileName()); - foreach (const Document::Include &incl, doc->includes()) + foreach (const Document::Include &incl, doc->resolvedIncludes()) processEnvironment(m_snapshot.document(incl.resolvedFileName()), env, processed); foreach (const Macro ¯o, doc->definedMacros()) |