summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-07-25 11:21:31 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-08-22 11:57:27 +0200
commitfd9293dd0af0e8f253c0934ede60b72496ee0314 (patch)
treea06df33a43e1eaeddf12d14e863aa84031428c73 /src/libs/cplusplus
parent2fe1fec16b82561f2e4371bebe1b6d2c29e8fb96 (diff)
downloadqt-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.cpp13
-rw-r--r--src/libs/cplusplus/CppDocument.h10
-rw-r--r--src/libs/cplusplus/FastPreprocessor.cpp4
-rw-r--r--src/libs/cplusplus/LookupContext.cpp2
-rw-r--r--src/libs/cplusplus/SnapshotSymbolVisitor.cpp2
-rw-r--r--src/libs/cplusplus/TypeOfExpression.cpp2
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 &macro)
@@ -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 &macro, doc->definedMacros())