Skip to content
Snippets Groups Projects
Commit 8caff494 authored by Roberto Raggi's avatar Roberto Raggi
Browse files

Simplify Process.

parent dca2e821
No related branches found
No related tags found
No related merge requests found
......@@ -270,44 +270,43 @@ class Process: public std::unary_function<Document::Ptr, void>
{
QPointer<CppModelManager> _modelManager;
Snapshot _snapshot;
CppModelManager::WorkingCopy _workingCopy;
Document::Ptr _doc;
Document::CheckMode _mode;
public:
Process(QPointer<CppModelManager> modelManager,
Snapshot snapshot,
Document::Ptr doc,
const Snapshot &snapshot,
const CppModelManager::WorkingCopy &workingCopy)
: _modelManager(modelManager),
_snapshot(snapshot),
_workingCopy(workingCopy)
{ }
void operator()(Document::Ptr doc)
_doc(doc),
_mode(Document::FastCheck)
{
_doc = doc;
Document::CheckMode mode = Document::FastCheck;
if (_workingCopy.contains(doc->fileName()))
mode = Document::FullCheck;
if (workingCopy.contains(_doc->fileName()))
_mode = Document::FullCheck;
}
doc->check(mode);
void operator()()
{
_doc->check(_mode);
if (mode == Document::FullCheck) {
if (_mode == Document::FullCheck) {
// run the binding pass
NamespaceBindingPtr ns = bind(doc, _snapshot);
NamespaceBindingPtr ns = bind(_doc, _snapshot);
// check for undefined symbols.
CheckUndefinedSymbols checkUndefinedSymbols(doc);
CheckUndefinedSymbols checkUndefinedSymbols(_doc);
checkUndefinedSymbols.setGlobalNamespaceBinding(ns);
checkUndefinedSymbols(doc->translationUnit()->ast()); // ### FIXME
checkUndefinedSymbols(_doc->translationUnit()->ast()); // ### FIXME
}
doc->releaseTranslationUnit();
_doc->releaseTranslationUnit();
if (_modelManager)
_modelManager->emitDocumentUpdated(doc); // ### TODO: compress
_modelManager->emitDocumentUpdated(_doc); // ### TODO: compress
}
};
} // end of anonymous namespace
......@@ -600,9 +599,9 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type, unsigned
m_todo.remove(fileName);
#ifndef ICHECK_BUILD
Process process(m_modelManager, snapshot, m_workingCopy);
Process process(m_modelManager, doc, snapshot, m_workingCopy);
process(doc);
process();
(void) switchDocument(previousDoc);
#else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment