From 9318ff735cad16f1dcffea67a803e6aa64ccefd1 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 15 Jul 2010 13:41:51 +0200 Subject: [PATCH] Ensure the chunks are completed. --- src/plugins/cppeditor/cppchecksymbols.cpp | 17 ++++++++++++++--- src/plugins/cppeditor/cppchecksymbols.h | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/plugins/cppeditor/cppchecksymbols.cpp b/src/plugins/cppeditor/cppchecksymbols.cpp index 0e9af30b392..635ddb6285c 100644 --- a/src/plugins/cppeditor/cppchecksymbols.cpp +++ b/src/plugins/cppeditor/cppchecksymbols.cpp @@ -268,6 +268,8 @@ CheckSymbols::CheckSymbols(Document::Ptr doc, const LookupContext &context) CollectTypes collectTypes(doc, context.snapshot()); _potentialTypes = collectTypes.types(); _scopes = collectTypes.scopes(); + _flushRequested = false; + _flushLine = 0; } CheckSymbols::~CheckSymbols() @@ -473,10 +475,16 @@ void CheckSymbols::endVisit(TemplateDeclarationAST *) void CheckSymbols::addTypeUsage(const Use &use) { - _typeUsages.append(use); + if (_typeUsages.size() >= 50) { + if (_flushRequested && use.line != _flushLine) + flush(); + else if (! _flushRequested) { + _flushRequested = true; + _flushLine = use.line; + } + } - if (_typeUsages.size() == 50) - flush(); + _typeUsages.append(use); } void CheckSymbols::addTypeUsage(ClassOrNamespace *b, NameAST *ast) @@ -563,6 +571,9 @@ Scope *CheckSymbols::findScope(AST *ast) const void CheckSymbols::flush() { + _flushRequested = false; + _flushLine = 0; + if (_typeUsages.isEmpty()) return; diff --git a/src/plugins/cppeditor/cppchecksymbols.h b/src/plugins/cppeditor/cppchecksymbols.h index 1e5d74c1b32..876132ab3f4 100644 --- a/src/plugins/cppeditor/cppchecksymbols.h +++ b/src/plugins/cppeditor/cppchecksymbols.h @@ -119,6 +119,8 @@ private: QList<ScopedSymbol *> _scopes; QList<TemplateDeclarationAST *> _templateDeclarationStack; QVector<Use> _typeUsages; + bool _flushRequested; + unsigned _flushLine; }; } // end of namespace CPlusPlus -- GitLab