[cfe-commits] r150584 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaStmt.cpp test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp
Douglas Gregor
dgregor at apple.com
Wed Feb 15 07:57:22 PST 2012
Author: dgregor
Date: Wed Feb 15 09:57:22 2012
New Revision: 150584
URL: http://llvm.org/viewvc/llvm-project?rev=150584&view=rev
Log:
Specialize the diagnostic complaining about conflicting types of
return statements within a lambda; this diagnostic previously referred
to blocks.
Modified:
cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
cfe/trunk/lib/Sema/SemaStmt.cpp
cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp
Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=150584&r1=150583&r2=150584&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Wed Feb 15 09:57:22 2012
@@ -4142,8 +4142,8 @@
"%select{none|const|restrict|const and restrict|volatile|const and volatile|"
"volatile and restrict|const, volatile, and restrict}6)}4">;
def err_typecheck_missing_return_type_incompatible : Error<
- "return type %0 must match previous return type %1 when block"
- " literal has unspecified explicit return type">;
+ "return type %0 must match previous return type %1 when %select{block "
+ "literal|lambda expression}2 has unspecified explicit return type">;
def warn_incompatible_qualified_id : Warning<
"%select{assigning to|passing|returning|converting|initializing|sending|casting}2"
Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=150584&r1=150583&r2=150584&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
+++ cfe/trunk/lib/Sema/SemaStmt.cpp Wed Feb 15 09:57:22 2012
@@ -1847,9 +1847,9 @@
!CurCap->ReturnType->isDependentType() &&
!ReturnT->isDependentType() &&
!Context.hasSameType(ReturnT, CurCap->ReturnType)) {
- // FIXME: Adapt diagnostic for lambdas.
Diag(ReturnLoc, diag::err_typecheck_missing_return_type_incompatible)
- << ReturnT << CurCap->ReturnType;
+ << ReturnT << CurCap->ReturnType
+ << getCurLambda() != 0;
return StmtError();
}
CurCap->ReturnType = ReturnT;
Modified: cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp?rev=150584&r1=150583&r2=150584&view=diff
==============================================================================
--- cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp (original)
+++ cfe/trunk/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp Wed Feb 15 09:57:22 2012
@@ -37,8 +37,8 @@
return [x](int y) { // expected-warning{{omitted result type}}
if (y > 0)
return X();
- else // FIXME: shouldn't mention blocks
- return x; // expected-error{{return type 'const X' must match previous return type 'X' when block literal has unspecified explicit return type}}
+ else
+ return x; // expected-error{{return type 'const X' must match previous return type 'X' when lambda expression has unspecified explicit return type}}
}(5);
}
More information about the cfe-commits
mailing list