diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index db02449a3dd12..216084344c00d 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -1997,10 +1997,12 @@ private: ArrayRef ArgLocs; public: - static constexpr int THIS = 0; - static constexpr int INVALID = -1; - static constexpr int UNKNOWN = -2; - static constexpr int GLOBAL = -3; + enum ArgIndex { + This = 0, + Invalid = -1, + Unknown = -2, + Global = -3, + }; void setArgs(ArrayRef Idents, ArrayRef Locs) { assert(Idents.size() == params_Size); diff --git a/clang/lib/Sema/CheckExprLifetime.cpp b/clang/lib/Sema/CheckExprLifetime.cpp index 1f87001f35b57..060ba31660556 100644 --- a/clang/lib/Sema/CheckExprLifetime.cpp +++ b/clang/lib/Sema/CheckExprLifetime.cpp @@ -665,7 +665,7 @@ static void visitFunctionCallArguments(IndirectLocalPath &Path, Expr *Call, CanonCallee->getParamDecl(I)->getAttr(); CaptureAttr && isa(CanonCallee) && llvm::any_of(CaptureAttr->params(), [](int ArgIdx) { - return ArgIdx == LifetimeCaptureByAttr::THIS; + return ArgIdx == LifetimeCaptureByAttr::This; })) // `lifetime_capture_by(this)` in a class constructor has the same // semantics as `lifetimebound`: diff --git a/clang/lib/Sema/SemaAttr.cpp b/clang/lib/Sema/SemaAttr.cpp index 44726c4cea123..c1675a6c67f14 100644 --- a/clang/lib/Sema/SemaAttr.cpp +++ b/clang/lib/Sema/SemaAttr.cpp @@ -290,7 +290,7 @@ void Sema::inferLifetimeCaptureByAttribute(FunctionDecl *FD) { // pointer-like reference types (`const T&`, `T&&`). if (PVD->getType()->isReferenceType() && sema::isGLSPointerType(PVD->getType().getNonReferenceType())) { - int CaptureByThis[] = {LifetimeCaptureByAttr::THIS}; + int CaptureByThis[] = {LifetimeCaptureByAttr::This}; PVD->addAttr( LifetimeCaptureByAttr::CreateImplicit(Context, CaptureByThis, 1)); } diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 373ca549cb23b..aba39c0eb3299 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -3333,8 +3333,8 @@ void Sema::checkLifetimeCaptureBy(FunctionDecl *FD, bool IsMemberFunction, if (!FD || Args.empty()) return; auto GetArgAt = [&](int Idx) -> const Expr * { - if (Idx == LifetimeCaptureByAttr::GLOBAL || - Idx == LifetimeCaptureByAttr::UNKNOWN) + if (Idx == LifetimeCaptureByAttr::Global || + Idx == LifetimeCaptureByAttr::Unknown) return nullptr; if (IsMemberFunction && Idx == 0) return ThisArg; @@ -3349,7 +3349,7 @@ void Sema::checkLifetimeCaptureBy(FunctionDecl *FD, bool IsMemberFunction, for (int CapturingParamIdx : Attr->params()) { // lifetime_capture_by(this) case is handled in the lifetimebound expr // initialization codepath. - if (CapturingParamIdx == LifetimeCaptureByAttr::THIS && + if (CapturingParamIdx == LifetimeCaptureByAttr::This && isa(FD)) continue; Expr *Capturing = const_cast(GetArgAt(CapturingParamIdx)); diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 119ba8486b09f..f34b70ea61a5d 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -4155,7 +4155,7 @@ LifetimeCaptureByAttr *Sema::ParseLifetimeCaptureByAttr(const ParsedAttr &AL, } if (!IsValid) return nullptr; - SmallVector FakeParamIndices(N, LifetimeCaptureByAttr::INVALID); + SmallVector FakeParamIndices(N, LifetimeCaptureByAttr::Invalid); auto *CapturedBy = LifetimeCaptureByAttr::Create(Context, FakeParamIndices.data(), N, AL); CapturedBy->setArgs(ParamIdents, ParamLocs); @@ -4198,8 +4198,8 @@ void Sema::LazyProcessLifetimeCaptureByParams(FunctionDecl *FD) { if (Attrs.empty()) return; llvm::StringMap NameIdxMapping = { - {"global", LifetimeCaptureByAttr::GLOBAL}, - {"unknown", LifetimeCaptureByAttr::UNKNOWN}}; + {"global", LifetimeCaptureByAttr::Global}, + {"unknown", LifetimeCaptureByAttr::Unknown}}; int Idx = 0; if (HasImplicitThisParam) { NameIdxMapping["this"] = 0;