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
3598
3598
class CheckRedeclarationRequest
3599
3599
: public SimpleRequest<
3600
3600
CheckRedeclarationRequest,
3601
- evaluator::SideEffect (ValueDecl *),
3601
+ evaluator::SideEffect (ValueDecl *, NominalTypeDecl * ),
3602
3602
RequestFlags::SeparatelyCached | RequestFlags::DependencySource |
3603
3603
RequestFlags::DependencySink> {
3604
3604
public:
@@ -3611,7 +3611,8 @@ class CheckRedeclarationRequest
3611
3611
// / \p SelfNominalType is \c VD->getDeclContext()->getSelfNominalType().
3612
3612
// / Passed as a parameter in here so this request doesn't tigger self nominal
3613
3613
// / type computation.
3614
- evaluator::SideEffect evaluate (Evaluator &evaluator, ValueDecl *VD) const ;
3614
+ evaluator::SideEffect evaluate (Evaluator &evaluator, ValueDecl *VD,
3615
+ NominalTypeDecl *SelfNominalType) const ;
3615
3616
3616
3617
public:
3617
3618
// Separate caching.
Original file line number Diff line number Diff line change @@ -507,7 +507,7 @@ static bool usesFeatureValueGenericsNameLookup(Decl *decl) {
507
507
if (!fn)
508
508
return false ;
509
509
510
- auto body = fn->getTypecheckedBody ();
510
+ auto body = fn->getMacroExpandedBody ();
511
511
512
512
if (!body)
513
513
return false ;
Original file line number Diff line number Diff line change @@ -1579,7 +1579,7 @@ void CheckRedeclarationRequest::writeDependencySink(
1579
1579
return ;
1580
1580
1581
1581
if (currentDC->isTypeContext ()) {
1582
- if (auto nominal = currentDC-> getSelfNominalTypeDecl ( )) {
1582
+ if (auto nominal = std::get< 1 >( getStorage () )) {
1583
1583
tracker.addUsedMember (nominal, current->getBaseName ());
1584
1584
}
1585
1585
} else {
Original file line number Diff line number Diff line change @@ -691,7 +691,8 @@ static void checkRedeclaration(PrecedenceGroupDecl *group) {
691
691
692
692
// / Check whether \c current is a redeclaration.
693
693
evaluator::SideEffect
694
- CheckRedeclarationRequest::evaluate (Evaluator &eval, ValueDecl *current) const {
694
+ CheckRedeclarationRequest::evaluate (Evaluator &eval, ValueDecl *current,
695
+ NominalTypeDecl *SelfNominalType) const {
695
696
// Ignore invalid and anonymous declarations.
696
697
if (current->isInvalid () || !current->hasName ())
697
698
return std::make_tuple<>();
@@ -2362,7 +2363,11 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2362
2363
// Force some requests, which can produce diagnostics.
2363
2364
2364
2365
// Check redeclaration.
2365
- (void )evaluateOrDefault (Ctx.evaluator , CheckRedeclarationRequest{VD}, {});
2366
+ (void )evaluateOrDefault (
2367
+ Ctx.evaluator ,
2368
+ CheckRedeclarationRequest{
2369
+ VD, VD->getDeclContext ()->getSelfNominalTypeDecl ()},
2370
+ {});
2366
2371
2367
2372
// Compute access level.
2368
2373
(void ) VD->getFormalAccess ();
You can’t perform that action at this time.
0 commit comments