aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-08-25 01:02:06 +0000
committerAnders Carlsson <andersca@mac.com>2009-08-25 01:02:06 +0000
commit66e3067d9821c75f3119e07f087cfb0d30f9c2ed (patch)
tree27d618ef9636c7e35a1f7fbd31d11c9d321fcb24 /lib/Sema/SemaDeclCXX.cpp
parentb13bc41a8b0e2d8b7f7d824d5836ce5ae0b8ae5f (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.cpp14
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);