forked from qt-creator/qt-creator
Use the document in the snapshot when available.
This commit is contained in:
@@ -42,10 +42,10 @@
|
||||
|
||||
using namespace CPlusPlus;
|
||||
|
||||
CheckUndefinedSymbols::CheckUndefinedSymbols(Document::Ptr doc, const Snapshot &snapshot)
|
||||
: ASTVisitor(doc->translationUnit()), _context(doc, snapshot)
|
||||
CheckUndefinedSymbols::CheckUndefinedSymbols(TranslationUnit *unit, const LookupContext &context)
|
||||
: ASTVisitor(unit), _context(context)
|
||||
{
|
||||
_fileName = doc->fileName();
|
||||
_fileName = context.thisDocument()->fileName();
|
||||
}
|
||||
|
||||
CheckUndefinedSymbols::~CheckUndefinedSymbols()
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace CPlusPlus {
|
||||
class CPLUSPLUS_EXPORT CheckUndefinedSymbols: protected ASTVisitor
|
||||
{
|
||||
public:
|
||||
CheckUndefinedSymbols(Document::Ptr doc, const Snapshot &snapshot);
|
||||
CheckUndefinedSymbols(TranslationUnit *unit, const LookupContext &context);
|
||||
virtual ~CheckUndefinedSymbols();
|
||||
|
||||
QList<Document::DiagnosticMessage> operator()(AST *ast);
|
||||
|
||||
@@ -1997,15 +1997,24 @@ SemanticInfo SemanticHighlighter::semanticInfo(const Source &source)
|
||||
}
|
||||
|
||||
if (! doc) {
|
||||
const QByteArray preprocessedCode = source.snapshot.preprocessedCode(source.code, source.fileName);
|
||||
|
||||
snapshot = source.snapshot;
|
||||
doc = source.snapshot.documentFromSource(preprocessedCode, source.fileName);
|
||||
const QByteArray preprocessedCode = snapshot.preprocessedCode(source.code, source.fileName);
|
||||
|
||||
doc = snapshot.documentFromSource(preprocessedCode, source.fileName);
|
||||
doc->check();
|
||||
|
||||
// ### check undefined symbols.
|
||||
CheckUndefinedSymbols checkUndefinedSymbols(doc, snapshot);
|
||||
diagnosticMessages = checkUndefinedSymbols(doc->translationUnit()->ast());
|
||||
Document::Ptr documentInSnapshot = snapshot.document(source.fileName);
|
||||
if (! documentInSnapshot) {
|
||||
// use the newly parsed document.
|
||||
documentInSnapshot = doc;
|
||||
}
|
||||
|
||||
LookupContext context(doc, snapshot);
|
||||
|
||||
if (TranslationUnit *unit = doc->translationUnit()) {
|
||||
CheckUndefinedSymbols checkUndefinedSymbols(unit, context);
|
||||
diagnosticMessages = checkUndefinedSymbols(unit->ast());
|
||||
}
|
||||
}
|
||||
|
||||
TranslationUnit *translationUnit = doc->translationUnit();
|
||||
|
||||
Reference in New Issue
Block a user