summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/cplusplus/CppDocument.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp
index e86cb18b2e..f54420ee73 100644
--- a/src/libs/cplusplus/CppDocument.cpp
+++ b/src/libs/cplusplus/CppDocument.cpp
@@ -31,6 +31,7 @@
#include "FastPreprocessor.h"
#include "LookupContext.h"
#include "Overview.h"
+#include "Bind.h"
#include <Control.h>
#include <TranslationUnit.h>
@@ -545,21 +546,18 @@ void Document::check(CheckMode mode)
if (! isParsed())
parse();
- Semantic semantic(_translationUnit);
+ _globalNamespace = _control->newNamespace(0);
+ Bind semantic(_translationUnit);
if (mode == FastCheck)
semantic.setSkipFunctionBodies(true);
- _globalNamespace = _control->newNamespace(0);
- Scope *globals = _globalNamespace;
if (! _translationUnit->ast())
return; // nothing to do.
if (TranslationUnitAST *ast = _translationUnit->ast()->asTranslationUnit()) {
- for (DeclarationListAST *decl = ast->declaration_list; decl; decl = decl->next) {
- semantic.check(decl->value, globals);
- }
+ semantic(ast, _globalNamespace);
} else if (ExpressionAST *ast = _translationUnit->ast()->asExpression()) {
- semantic.check(ast, globals);
+ semantic(ast, _globalNamespace);
}
}