Skip to content

Commit a884e51

Browse files
committed
Don't ask for the typechecked body in featureset
1 parent 42b4161 commit a884e51

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

include/swift/AST/TypeCheckRequests.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3598,7 +3598,7 @@ class LookupAllConformancesInContextRequest
35983598
class CheckRedeclarationRequest
35993599
: public SimpleRequest<
36003600
CheckRedeclarationRequest,
3601-
evaluator::SideEffect(ValueDecl *),
3601+
evaluator::SideEffect(ValueDecl *, NominalTypeDecl *),
36023602
RequestFlags::SeparatelyCached | RequestFlags::DependencySource |
36033603
RequestFlags::DependencySink> {
36043604
public:
@@ -3611,7 +3611,8 @@ class CheckRedeclarationRequest
36113611
/// \p SelfNominalType is \c VD->getDeclContext()->getSelfNominalType().
36123612
/// Passed as a parameter in here so this request doesn't tigger self nominal
36133613
/// type computation.
3614-
evaluator::SideEffect evaluate(Evaluator &evaluator, ValueDecl *VD) const;
3614+
evaluator::SideEffect evaluate(Evaluator &evaluator, ValueDecl *VD,
3615+
NominalTypeDecl *SelfNominalType) const;
36153616

36163617
public:
36173618
// Separate caching.

lib/AST/FeatureSet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ static bool usesFeatureValueGenericsNameLookup(Decl *decl) {
507507
if (!fn)
508508
return false;
509509

510-
auto body = fn->getTypecheckedBody();
510+
auto body = fn->getMacroExpandedBody();
511511

512512
if (!body)
513513
return false;

lib/AST/TypeCheckRequests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1579,7 +1579,7 @@ void CheckRedeclarationRequest::writeDependencySink(
15791579
return;
15801580

15811581
if (currentDC->isTypeContext()) {
1582-
if (auto nominal = currentDC->getSelfNominalTypeDecl()) {
1582+
if (auto nominal = std::get<1>(getStorage())) {
15831583
tracker.addUsedMember(nominal, current->getBaseName());
15841584
}
15851585
} else {

lib/Sema/TypeCheckDeclPrimary.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,8 @@ static void checkRedeclaration(PrecedenceGroupDecl *group) {
691691

692692
/// Check whether \c current is a redeclaration.
693693
evaluator::SideEffect
694-
CheckRedeclarationRequest::evaluate(Evaluator &eval, ValueDecl *current) const {
694+
CheckRedeclarationRequest::evaluate(Evaluator &eval, ValueDecl *current,
695+
NominalTypeDecl *SelfNominalType) const {
695696
// Ignore invalid and anonymous declarations.
696697
if (current->isInvalid() || !current->hasName())
697698
return std::make_tuple<>();
@@ -2362,7 +2363,11 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
23622363
// Force some requests, which can produce diagnostics.
23632364

23642365
// Check redeclaration.
2365-
(void)evaluateOrDefault(Ctx.evaluator, CheckRedeclarationRequest{VD}, {});
2366+
(void)evaluateOrDefault(
2367+
Ctx.evaluator,
2368+
CheckRedeclarationRequest{
2369+
VD, VD->getDeclContext()->getSelfNominalTypeDecl()},
2370+
{});
23662371

23672372
// Compute access level.
23682373
(void) VD->getFormalAccess();

0 commit comments

Comments
 (0)