[AST] Add 'initializes' and 'accesses' attributes for init accessor

definite initialization dependencies.
This commit is contained in:
Holly Borla
2023-05-23 16:52:18 -07:00
committed by Pavel Yaskevich
parent df69020eca
commit e5f75029de
9 changed files with 191 additions and 3 deletions

View File

@@ -2906,6 +2906,34 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
return;
}
case DAK_Initializes: {
auto abbrCode = S.DeclTypeAbbrCodes[InitializesDeclAttrLayout::Code];
auto attr = cast<InitializesAttr>(DA);
SmallVector<IdentifierID, 4> properties;
for (auto identifier : attr->getProperties()) {
properties.push_back(S.addDeclBaseNameRef(identifier));
}
InitializesDeclAttrLayout::emitRecord(
S.Out, S.ScratchRecord, abbrCode, properties);
return;
}
case DAK_Accesses: {
auto abbrCode = S.DeclTypeAbbrCodes[AccessesDeclAttrLayout::Code];
auto attr = cast<InitializesAttr>(DA);
SmallVector<IdentifierID, 4> properties;
for (auto identifier : attr->getProperties()) {
properties.push_back(S.addDeclBaseNameRef(identifier));
}
AccessesDeclAttrLayout::emitRecord(
S.Out, S.ScratchRecord, abbrCode, properties);
return;
}
case DAK_DynamicReplacement: {
auto abbrCode =
S.DeclTypeAbbrCodes[DynamicReplacementDeclAttrLayout::Code];