llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: CedricSWA (CedricSwa) <details> <summary>Changes</summary> close issue #<!-- -->94764 --- Full diff: https://github.com/llvm/llvm-project/pull/94865.diff 2 Files Affected: - (modified) clang/include/clang/Basic/DiagnosticSemaKinds.td (+2) - (modified) clang/lib/Sema/SemaLambda.cpp (+6-1) ``````````diff diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 9f0b6f5a36389..fdf4409125c00 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -8173,6 +8173,8 @@ let CategoryName = "Lambda Issue" in { "'&' must precede a capture when the capture default is '='">; def err_capture_does_not_name_variable : Error< "%0 in capture list does not name a variable">; + def err_capture_class_member_does_not_name_variable : Error< + "class member %0 cannot appear in capture list as it is not a variable">; def err_capture_non_automatic_variable : Error< "%0 cannot be captured because it does not have automatic storage " "duration">; diff --git a/clang/lib/Sema/SemaLambda.cpp b/clang/lib/Sema/SemaLambda.cpp index e9476a0c93c5d..79c10c3bad6d7 100644 --- a/clang/lib/Sema/SemaLambda.cpp +++ b/clang/lib/Sema/SemaLambda.cpp @@ -1246,7 +1246,12 @@ void Sema::ActOnLambdaExpressionAfterIntroducer(LambdaIntroducer &Intro, if (auto *BD = R.getAsSingle<BindingDecl>()) Var = BD; - else + else if (auto *FD = R.getAsSingle<FieldDecl>()) { + Var = R.getAsSingle<VarDecl>(); + Diag(C->Loc, diag::err_capture_class_member_does_not_name_variable) + << C->Id; + continue; + } else Var = R.getAsSingle<VarDecl>(); if (Var && DiagnoseUseOfDecl(Var, C->Loc)) continue; `````````` </details> https://github.com/llvm/llvm-project/pull/94865 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits