pfusik created this revision. Herald added a project: All. pfusik requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Fixes https://github.com/llvm/llvm-project/issues/48527 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D159528 Files: clang/lib/Sema/SemaStmt.cpp clang/test/SemaCXX/gh48527.cpp Index: clang/test/SemaCXX/gh48527.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/gh48527.cpp @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +int main() { // expected-note {{to match this '{'}} + auto a = [](void)__attribute__((b(({ // expected-note {{to match this '('}} + return 0; +} // expected-error 3 {{expected ')'}} \ + // expected-error {{expected ';' at end of declaration}} +// expected-error@+2 {{expected ')'}} +// expected-error@+1 {{expected body of lambda expression}} +// expected-error {{expected '}'}} Index: clang/lib/Sema/SemaStmt.cpp =================================================================== --- clang/lib/Sema/SemaStmt.cpp +++ clang/lib/Sema/SemaStmt.cpp @@ -3577,6 +3577,8 @@ CapturingScopeInfo *CurCap = cast<CapturingScopeInfo>(getCurFunction()); QualType FnRetType = CurCap->ReturnType; LambdaScopeInfo *CurLambda = dyn_cast<LambdaScopeInfo>(CurCap); + if (CurLambda && CurLambda->CallOperator->getType().isNull()) + return StmtError(); bool HasDeducedReturnType = CurLambda && hasDeducedReturnType(CurLambda->CallOperator);
Index: clang/test/SemaCXX/gh48527.cpp =================================================================== --- /dev/null +++ clang/test/SemaCXX/gh48527.cpp @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +int main() { // expected-note {{to match this '{'}} + auto a = [](void)__attribute__((b(({ // expected-note {{to match this '('}} + return 0; +} // expected-error 3 {{expected ')'}} \ + // expected-error {{expected ';' at end of declaration}} +// expected-error@+2 {{expected ')'}} +// expected-error@+1 {{expected body of lambda expression}} +// expected-error {{expected '}'}} Index: clang/lib/Sema/SemaStmt.cpp =================================================================== --- clang/lib/Sema/SemaStmt.cpp +++ clang/lib/Sema/SemaStmt.cpp @@ -3577,6 +3577,8 @@ CapturingScopeInfo *CurCap = cast<CapturingScopeInfo>(getCurFunction()); QualType FnRetType = CurCap->ReturnType; LambdaScopeInfo *CurLambda = dyn_cast<LambdaScopeInfo>(CurCap); + if (CurLambda && CurLambda->CallOperator->getType().isNull()) + return StmtError(); bool HasDeducedReturnType = CurLambda && hasDeducedReturnType(CurLambda->CallOperator);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits