forked from qt-creator/qt-creator
CppTools: CppPreprocessor: Track also unresolved includes
Change-Id: Ia36e7e7142dbc030a428369ed04e76e70e8eef0b Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user