diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-06-26 09:11:14 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-06-26 09:11:14 +0200 |
commit | fd8cd69a47e65a675ec832c580ecb53f0ff94892 (patch) | |
tree | 9e083e8470f51a658d4d60698ffc2a96b5813a09 /src/shared/cplusplus/CheckDeclaration.cpp | |
parent | 0b1bc40b65d59b9c79813e152d26340fe811f4d3 (diff) | |
download | qt-creator-fd8cd69a47e65a675ec832c580ecb53f0ff94892.tar.gz |
Introduced Document::CheckMode.
Diffstat (limited to 'src/shared/cplusplus/CheckDeclaration.cpp')
-rw-r--r-- | src/shared/cplusplus/CheckDeclaration.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index ef71c79809..038d70b9a4 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -304,26 +304,28 @@ bool CheckDeclaration::visit(FunctionDefinitionAST *ast) ast->symbol = fun; _scope->enterSymbol(fun); - if (ast->ctor_initializer) { - bool looksLikeCtor = false; - if (ty.isValid() || ! fun->identity()) - looksLikeCtor = false; - else if (fun->identity()->isNameId() || fun->identity()->isTemplateNameId()) - looksLikeCtor = true; - - if (! looksLikeCtor) { - translationUnit()->error(ast->ctor_initializer->firstToken(), - "only constructors take base initializers"); + if (! semantic()->skipFunctionBodies()) { + if (ast->ctor_initializer) { + bool looksLikeCtor = false; + if (ty.isValid() || ! fun->identity()) + looksLikeCtor = false; + else if (fun->identity()->isNameId() || fun->identity()->isTemplateNameId()) + looksLikeCtor = true; + + if (! looksLikeCtor) { + translationUnit()->error(ast->ctor_initializer->firstToken(), + "only constructors take base initializers"); + } } - } - const int previousVisibility = semantic()->switchVisibility(Symbol::Public); - const int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod); + const int previousVisibility = semantic()->switchVisibility(Symbol::Public); + const int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod); - semantic()->check(ast->function_body, fun->members()); + semantic()->check(ast->function_body, fun->members()); - semantic()->switchMethodKey(previousMethodKey); - semantic()->switchVisibility(previousVisibility); + semantic()->switchMethodKey(previousMethodKey); + semantic()->switchVisibility(previousVisibility); + } return false; } |