File tree Expand file tree Collapse file tree 4 files changed +12
-6
lines changed Expand file tree Collapse file tree 4 files changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -3598,7 +3598,7 @@ class LookupAllConformancesInContextRequest
35983598class CheckRedeclarationRequest
35993599 : public SimpleRequest<
36003600 CheckRedeclarationRequest,
3601- evaluator::SideEffect (ValueDecl *),
3601+ evaluator::SideEffect (ValueDecl *, NominalTypeDecl * ),
36023602 RequestFlags::SeparatelyCached | RequestFlags::DependencySource |
36033603 RequestFlags::DependencySink> {
36043604public:
@@ -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
36163617public:
36173618 // Separate caching.
Original file line number Diff line number Diff 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 ;
Original file line number Diff line number Diff 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 {
Original file line number Diff line number Diff line change @@ -691,7 +691,8 @@ static void checkRedeclaration(PrecedenceGroupDecl *group) {
691691
692692// / Check whether \c current is a redeclaration.
693693evaluator::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 ();
You can’t perform that action at this time.
0 commit comments