diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-04-17 16:25:20 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-04-17 16:25:20 +0000 |
commit | 3cb4c6307335ca4d294d7710cac3c28f1e519340 (patch) | |
tree | 90b19d894f9fec45e796005a6e47b2126b6d2f69 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | 9c2ccd622fe14bc7f0d752cda7263423722f441c (diff) | |
download | bcm5719-llvm-3cb4c6307335ca4d294d7710cac3c28f1e519340.tar.gz bcm5719-llvm-3cb4c6307335ca4d294d7710cac3c28f1e519340.zip |
DR974: Lambdas can have default arguments.
llvm-svn: 179688
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index a318f64765f..d2051b52e83 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -636,22 +636,12 @@ void Sema::CheckCXXDefaultArguments(FunctionDecl *FD) { bool IsLambda = FD->getOverloadedOperator() == OO_Call && isa<CXXMethodDecl>(FD) && cast<CXXMethodDecl>(FD)->getParent()->isLambda(); - + // Find first parameter with a default argument for (p = 0; p < NumParams; ++p) { ParmVarDecl *Param = FD->getParamDecl(p); - if (Param->hasDefaultArg()) { - // C++11 [expr.prim.lambda]p5: - // [...] Default arguments (8.3.6) shall not be specified in the - // parameter-declaration-clause of a lambda-declarator. - // - // FIXME: Core issue 974 strikes this sentence, we only provide an - // extension warning. - if (IsLambda) - Diag(Param->getLocation(), diag::ext_lambda_default_arguments) - << Param->getDefaultArgRange(); + if (Param->hasDefaultArg()) break; - } } // C++ [dcl.fct.default]p4: |