Skip to content

Commit e2dc12c

Browse files
committed
use ArrayRef instead of MutableArrayRef
1 parent 617437c commit e2dc12c

File tree

2 files changed

+20
-22
lines changed

2 files changed

+20
-22
lines changed

clang/include/clang/Basic/Attr.td

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,29 +1896,23 @@ def LifetimeCaptureBy : DeclOrTypeAttr {
18961896
let Documentation = [LifetimeCaptureByDocs];
18971897
let AdditionalMembers = [{
18981898
private:
1899-
MutableArrayRef<IdentifierInfo*> ArgIdents;
1900-
MutableArrayRef<SourceLocation> ArgLocs;
1899+
ArrayRef<IdentifierInfo*> ArgIdents;
1900+
ArrayRef<SourceLocation> ArgLocs;
19011901

19021902
public:
19031903
static constexpr int THIS = 0;
19041904
static constexpr int INVALID = -1;
19051905
static constexpr int UNKNOWN = -2;
19061906
static constexpr int GLOBAL = -3;
19071907

1908-
void CreateArgs(ASTContext &Ctx) {
1909-
ArgIdents =
1910-
MutableArrayRef<IdentifierInfo *>(new (Ctx) IdentifierInfo *[params_Size], params_Size);
1911-
ArgLocs =
1912-
MutableArrayRef<SourceLocation>(new (Ctx) SourceLocation[params_Size], params_Size);
1913-
}
1914-
auto getArgIdents() const {
1915-
assert(ArgIdents.size() == params_Size);
1916-
return ArgIdents;
1917-
}
1918-
auto getArgLocs() const {
1919-
assert(ArgLocs.size() == params_Size);
1920-
return ArgLocs;
1908+
void setArgs( ArrayRef<IdentifierInfo*> Idents, ArrayRef<SourceLocation> Locs) {
1909+
assert(Idents.size() == params_Size);
1910+
assert(Locs.size() == params_Size);
1911+
ArgIdents = Idents;
1912+
ArgLocs = Locs;
19211913
}
1914+
auto getArgIdents() const { return ArgIdents; }
1915+
auto getArgLocs() const { return ArgLocs; }
19221916
void setParamIdx(size_t Idx, int Val) {
19231917
assert(Idx < params_Size);
19241918
params_[Idx] = Val;

clang/lib/Sema/SemaDeclAttr.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3878,12 +3878,10 @@ LifetimeCaptureByAttr *Sema::ParseLifetimeCaptureByAttr(const ParsedAttr &AL,
38783878
return nullptr;
38793879
}
38803880
unsigned N = AL.getNumArgs();
3881-
SmallVector<int> FakeParamIndices(N, LifetimeCaptureByAttr::INVALID);
3882-
auto *CapturedBy = ::new (Context)
3883-
LifetimeCaptureByAttr(Context, AL, FakeParamIndices.data(), N);
3884-
CapturedBy->CreateArgs(Context);
3885-
MutableArrayRef<SourceLocation> ParamLocs = CapturedBy->getArgLocs();
3886-
MutableArrayRef<IdentifierInfo *> ParamIdents = CapturedBy->getArgIdents();
3881+
auto ParamIdents =
3882+
MutableArrayRef<IdentifierInfo *>(new (Context) IdentifierInfo *[N], N);
3883+
auto ParamLocs =
3884+
MutableArrayRef<SourceLocation>(new (Context) SourceLocation[N], N);
38873885
bool IsValid = true;
38883886
for (unsigned I = 0; I < N; ++I) {
38893887
if (AL.isArgExpr(I)) {
@@ -3903,7 +3901,13 @@ LifetimeCaptureByAttr *Sema::ParseLifetimeCaptureByAttr(const ParsedAttr &AL,
39033901
ParamIdents[I] = IdLoc->Ident;
39043902
ParamLocs[I] = IdLoc->Loc;
39053903
}
3906-
return IsValid ? CapturedBy : nullptr;
3904+
if (!IsValid)
3905+
return nullptr;
3906+
SmallVector<int> FakeParamIndices(N, LifetimeCaptureByAttr::INVALID);
3907+
auto *CapturedBy =
3908+
LifetimeCaptureByAttr::Create(Context, FakeParamIndices.data(), N, AL);
3909+
CapturedBy->setArgs(ParamIdents, ParamLocs);
3910+
return CapturedBy;
39073911
}
39083912

39093913
static void handleLifetimeCaptureByAttr(Sema &S, Decl *D,

0 commit comments

Comments
 (0)