[AST] NFC: Add a way to request initialized/accesses properties from init accessor

This commit is contained in:
Pavel Yaskevich
2023-07-06 15:44:12 -07:00
parent 94522ff81a
commit 28a39d6df1
9 changed files with 79 additions and 104 deletions

View File

@@ -1304,22 +1304,14 @@ HasMemberwiseInitRequest::evaluate(Evaluator &evaluator,
if (auto *initAccessor = var->getAccessor(AccessorKind::Init)) {
// Make sure that all properties accessed by init accessor
// are previously initialized.
if (auto accessAttr =
initAccessor->getAttrs().getAttribute<AccessesAttr>()) {
for (auto *property : accessAttr->getPropertyDecls(initAccessor)) {
if (!initializedProperties.count(property))
invalidOrderings.push_back(
{var, property->getName()});
}
for (auto *property : initAccessor->getAccessedProperties()) {
if (!initializedProperties.count(property))
invalidOrderings.push_back({var, property->getName()});
}
// Record all of the properties initialized by calling init accessor.
if (auto initAttr =
initAccessor->getAttrs().getAttribute<InitializesAttr>()) {
auto properties = initAttr->getPropertyDecls(initAccessor);
initializedProperties.insert(properties.begin(), properties.end());
}
auto properties = initAccessor->getInitializedProperties();
initializedProperties.insert(properties.begin(), properties.end());
continue;
}