@@ -1229,7 +1229,18 @@ UnresolvedSpecializeExpr *UnresolvedSpecializeExpr::create(ASTContext &ctx,
12291229 UnresolvedParams, RAngleLoc);
12301230}
12311231
1232+ CaptureListEntry::CaptureListEntry (PatternBindingDecl *PBD) : PBD(PBD) {
1233+ assert (PBD);
1234+ assert (PBD->getSingleVar () &&
1235+ " Capture lists only support single-var patterns" );
1236+ }
1237+
1238+ VarDecl *CaptureListEntry::getVar () const {
1239+ return PBD->getSingleVar ();
1240+ }
1241+
12321242bool CaptureListEntry::isSimpleSelfCapture () const {
1243+ auto *Var = getVar ();
12331244 auto &ctx = Var->getASTContext ();
12341245
12351246 if (Var->getName () != ctx.Id_self )
@@ -1239,10 +1250,10 @@ bool CaptureListEntry::isSimpleSelfCapture() const {
12391250 if (attr->get () == ReferenceOwnership::Weak)
12401251 return false ;
12411252
1242- if (Init ->getPatternList ().size () != 1 )
1253+ if (PBD ->getPatternList ().size () != 1 )
12431254 return false ;
12441255
1245- auto *expr = Init ->getInit (0 );
1256+ auto *expr = PBD ->getInit (0 );
12461257
12471258 if (auto *DRE = dyn_cast<DeclRefExpr>(expr)) {
12481259 if (auto *VD = dyn_cast<VarDecl>(DRE->getDecl ())) {
@@ -1265,7 +1276,7 @@ CaptureListExpr *CaptureListExpr::create(ASTContext &ctx,
12651276 auto *expr = ::new (mem) CaptureListExpr (captureList, closureBody);
12661277
12671278 for (auto capture : captureList)
1268- capture.Var ->setParentCaptureList (expr);
1279+ capture.getVar () ->setParentCaptureList (expr);
12691280
12701281 return expr;
12711282}
0 commit comments