diff options
author | Anders Carlsson <andersca@mac.com> | 2009-08-25 01:02:06 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-08-25 01:02:06 +0000 |
commit | 66e3067d9821c75f3119e07f087cfb0d30f9c2ed (patch) | |
tree | 27d618ef9636c7e35a1f7fbd31d11c9d321fcb24 /lib/Sema/SemaDeclCXX.cpp | |
parent | b13bc41a8b0e2d8b7f7d824d5836ce5ae0b8ae5f (diff) |
Check that the default argument is well-formed before checking the initializer types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79964 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index ea113301aa..80ecd2a8be 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -124,6 +124,13 @@ Sema::ActOnParamDefaultArgument(DeclPtrTy param, SourceLocation EqualLoc, return; } + // Check that the default argument is well-formed + CheckDefaultArgumentVisitor DefaultArgChecker(DefaultArg.get(), this); + if (DefaultArgChecker.Visit(DefaultArg.get())) { + Param->setInvalidDecl(); + return; + } + // C++ [dcl.fct.default]p5 // A default argument expression is implicitly converted (clause // 4) to the parameter type. The default argument expression has @@ -143,13 +150,6 @@ Sema::ActOnParamDefaultArgument(DeclPtrTy param, SourceLocation EqualLoc, return; } - // Check that the default argument is well-formed - CheckDefaultArgumentVisitor DefaultArgChecker(DefaultArg.get(), this); - if (DefaultArgChecker.Visit(DefaultArg.get())) { - Param->setInvalidDecl(); - return; - } - DefaultArgPtr = MaybeCreateCXXExprWithTemporaries(DefaultArg.take(), /*DestroyTemps=*/false); |