diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-11-24 23:38:44 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-11-24 23:38:44 +0000 |
commit | d6f7850117e25b64b9f79a1b30e30293db3ae95a (patch) | |
tree | f451621cdd0e4bb8448cea949587602e09b53c84 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | d4d40670e8b9ff752362d157806e41028d523007 (diff) | |
download | bcm5719-llvm-d6f7850117e25b64b9f79a1b30e30293db3ae95a.tar.gz bcm5719-llvm-d6f7850117e25b64b9f79a1b30e30293db3ae95a.zip |
Have the parser tell sema whether a member declaration is a function definition. This allows sema to not emit spurious diagnostics in some invalid code.
llvm-svn: 89816
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 797dbf5fe27..b5419c1c907 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -790,7 +790,8 @@ std::string Sema::getAmbiguousPathsDisplayString(CXXBasePaths &Paths) { Sema::DeclPtrTy Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, - ExprTy *BW, ExprTy *InitExpr, bool Deleted) { + ExprTy *BW, ExprTy *InitExpr, bool IsDefinition, + bool Deleted) { const DeclSpec &DS = D.getDeclSpec(); DeclarationName Name = GetNameForDeclarator(D); Expr *BitWidth = static_cast<Expr*>(BW); @@ -872,7 +873,7 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, AS); assert(Member && "HandleField never returns null"); } else { - Member = HandleDeclarator(S, D, move(TemplateParameterLists), false) + Member = HandleDeclarator(S, D, move(TemplateParameterLists), IsDefinition) .getAs<Decl>(); if (!Member) { if (BitWidth) DeleteExpr(BitWidth); |