diff options
author | Vlad Serebrennikov <serebrennikov.vladislav@gmail.com> | 2025-05-01 17:03:47 +0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-01 17:03:47 +0400 |
commit | 001cc34275111df842edbaa874b7319eef930c81 (patch) | |
tree | 73c89d65330a850bc2a2b9718e5bdcc5c27c6e22 /clang/lib/Sema/SemaAccess.cpp | |
parent | a6459debc06f9cb86940ff5cdae35a1f52e1ed19 (diff) | |
download | llvm-001cc34275111df842edbaa874b7319eef930c81.zip llvm-001cc34275111df842edbaa874b7319eef930c81.tar.gz llvm-001cc34275111df842edbaa874b7319eef930c81.tar.bz2 |
[clang] Add scoped enum support to `StreamingDiagnostic` (#138089)
This patch adds templated `operator<<` for diagnostics that pass scoped
enums, saving people from `llvm::to_underlying()` clutter on the side of
emitting the diagnostic. This eliminates 80 out of 220 usages of
`llvm::to_underlying()` in Clang.
I also backported `std::is_scoped_enum_v` from C++23.
Diffstat (limited to 'clang/lib/Sema/SemaAccess.cpp')
-rw-r--r-- | clang/lib/Sema/SemaAccess.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaAccess.cpp b/clang/lib/Sema/SemaAccess.cpp index b77cbdb..890df09 100644 --- a/clang/lib/Sema/SemaAccess.cpp +++ b/clang/lib/Sema/SemaAccess.cpp @@ -1670,24 +1670,21 @@ Sema::AccessResult Sema::CheckConstructorAccess(SourceLocation UseLoc, case InitializedEntity::EK_Base: PD = PDiag(diag::err_access_base_ctor); PD << Entity.isInheritedVirtualBase() - << Entity.getBaseSpecifier()->getType() - << llvm::to_underlying(getSpecialMember(Constructor)); + << Entity.getBaseSpecifier()->getType() << getSpecialMember(Constructor); break; case InitializedEntity::EK_Member: case InitializedEntity::EK_ParenAggInitMember: { const FieldDecl *Field = cast<FieldDecl>(Entity.getDecl()); PD = PDiag(diag::err_access_field_ctor); - PD << Field->getType() - << llvm::to_underlying(getSpecialMember(Constructor)); + PD << Field->getType() << getSpecialMember(Constructor); break; } case InitializedEntity::EK_LambdaCapture: { StringRef VarName = Entity.getCapturedVarName(); PD = PDiag(diag::err_access_lambda_capture); - PD << VarName << Entity.getType() - << llvm::to_underlying(getSpecialMember(Constructor)); + PD << VarName << Entity.getType() << getSpecialMember(Constructor); break; } |