@@ -45,13 +45,12 @@ class FindCapturedVars : public ASTWalker {
45
45
bool NoEscape, ObjC, IsGenericFunction;
46
46
47
47
public:
48
- FindCapturedVars (ASTContext &Context,
49
- SourceLoc CaptureLoc,
48
+ FindCapturedVars (SourceLoc CaptureLoc,
50
49
DeclContext *CurDC,
51
50
bool NoEscape,
52
51
bool ObjC,
53
52
bool IsGenericFunction)
54
- : Context(Context ), CaptureLoc(CaptureLoc), CurDC(CurDC),
53
+ : Context(CurDC-> getASTContext () ), CaptureLoc(CaptureLoc), CurDC(CurDC),
55
54
NoEscape(NoEscape), ObjC(ObjC), IsGenericFunction(IsGenericFunction) {}
56
55
57
56
CaptureInfo getCaptureInfo () const {
@@ -595,8 +594,7 @@ void TypeChecker::computeCaptures(AnyFunctionRef AFR) {
595
594
isGeneric = (AFD->getGenericParams () != nullptr );
596
595
597
596
auto &Context = AFR.getAsDeclContext ()->getASTContext ();
598
- FindCapturedVars finder (Context,
599
- AFR.getLoc (),
597
+ FindCapturedVars finder (AFR.getLoc (),
600
598
AFR.getAsDeclContext (),
601
599
AFR.isKnownNoEscape (),
602
600
AFR.isObjC (),
@@ -613,8 +611,7 @@ void TypeChecker::computeCaptures(AnyFunctionRef AFR) {
613
611
if (auto *AFD = AFR.getAbstractFunctionDecl ()) {
614
612
for (auto *P : *AFD->getParameters ()) {
615
613
if (auto E = P->getTypeCheckedDefaultExpr ()) {
616
- FindCapturedVars finder (Context,
617
- E->getLoc (),
614
+ FindCapturedVars finder (E->getLoc (),
618
615
AFD,
619
616
/* isNoEscape=*/ false ,
620
617
/* isObjC=*/ false ,
@@ -680,14 +677,15 @@ void TypeChecker::checkPatternBindingCaptures(NominalTypeDecl *typeDecl) {
680
677
if (init == nullptr )
681
678
continue ;
682
679
683
- FindCapturedVars finder (ctx,
684
- init->getLoc (),
685
- PBD-> getInitContext (i) ,
680
+ auto *DC = PBD-> getInitContext (i);
681
+ FindCapturedVars finder ( init->getLoc (),
682
+ DC ,
686
683
/* NoEscape=*/ false ,
687
684
/* ObjC=*/ false ,
688
685
/* IsGenericFunction*/ false );
689
686
init->walk (finder);
690
687
688
+ auto &ctx = DC->getASTContext ();
691
689
if (finder.getDynamicSelfCaptureLoc ().isValid () && !isLazy (PBD)) {
692
690
ctx.Diags .diagnose (finder.getDynamicSelfCaptureLoc (),
693
691
diag::dynamic_self_stored_property_init);
0 commit comments