rsmith accepted this revision. This revision is now accepted and ready to land.
================ Comment at: include/clang/Basic/DiagnosticParseKinds.td:769 @@ +768,3 @@ + "attribute specifier|'constexpr'}0">; +def err_lambda_declspecifier_repeated : Error< + "%select{'mutable'|'constexpr'}0 cannot appear multiple times in a lambda declarator">; ---------------- declspecifier -> decl_specifier ================ Comment at: lib/AST/ExprConstant.cpp:2049-2063 @@ -2047,3 +2048,17 @@ Result = Frame->getTemporary(VD); + if (!Result && isLambdaCallOperator(Frame->Callee) && + (VD->getDeclContext() != Frame->Callee || VD->isInitCapture())) { + // Assume variables referenced within a lambda's call operator that were + // not declared within the call operator are captures and during checking + // of a potential constant expression, assume they are unknown constant + // expressions. + if (Info.checkingPotentialConstantExpression()) + return false; + // FIXME: implement capture evaluation during constant expr evaluation. + Info.Diag(E->getLocStart(), + diag::note_unimplemented_constexpr_lambda_feature_ast) + << "captures not currently allowed"; + return false; + } assert(Result && "missing value for local variable"); return true; ---------------- I'd prefer to phrase this if/assert arrangement as: if (!Result) { assert(isLambdaCallOperator(...) && (VD->getDeclContext != ... ================ Comment at: lib/Parse/ParseExprCXX.cpp:1077 @@ +1076,3 @@ + default: + return ; + } ---------------- No space before `;`. http://reviews.llvm.org/D14905 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits