@@ -1628,13 +1628,15 @@ class ClosureType : public BaseType, public SubstitutionRef
1628
1628
ClosureType (HirId ref, DefId id, RustIdent ident,
1629
1629
TyTy::TupleType *parameters, TyVar result_type,
1630
1630
std::vector<SubstitutionParamMapping> subst_refs,
1631
+ std::set<NodeId> captures,
1631
1632
std::set<HirId> refs = std::set<HirId> (),
1632
1633
std::vector<TypeBoundPredicate> specified_bounds
1633
1634
= std::vector<TypeBoundPredicate> ())
1634
1635
: BaseType (ref, ref, TypeKind::CLOSURE, ident, refs),
1635
1636
SubstitutionRef (std::move (subst_refs),
1636
1637
SubstitutionArgumentMappings::error ()),
1637
- parameters (parameters), result_type (std::move (result_type)), id (id)
1638
+ parameters (parameters), result_type (std::move (result_type)), id (id),
1639
+ captures (captures)
1638
1640
{
1639
1641
LocalDefId local_def_id = id.localDefId ;
1640
1642
rust_assert (local_def_id != UNKNOWN_LOCAL_DEFID);
@@ -1644,13 +1646,15 @@ class ClosureType : public BaseType, public SubstitutionRef
1644
1646
ClosureType (HirId ref, HirId ty_ref, RustIdent ident, DefId id,
1645
1647
TyTy::TupleType *parameters, TyVar result_type,
1646
1648
std::vector<SubstitutionParamMapping> subst_refs,
1649
+ std::set<NodeId> captures,
1647
1650
std::set<HirId> refs = std::set<HirId> (),
1648
1651
std::vector<TypeBoundPredicate> specified_bounds
1649
1652
= std::vector<TypeBoundPredicate> ())
1650
1653
: BaseType (ref, ty_ref, TypeKind::CLOSURE, ident, refs),
1651
1654
SubstitutionRef (std::move (subst_refs),
1652
1655
SubstitutionArgumentMappings::error ()),
1653
- parameters (parameters), result_type (std::move (result_type)), id (id)
1656
+ parameters (parameters), result_type (std::move (result_type)), id (id),
1657
+ captures (captures)
1654
1658
{
1655
1659
LocalDefId local_def_id = id.localDefId ;
1656
1660
rust_assert (local_def_id != UNKNOWN_LOCAL_DEFID);
@@ -1699,10 +1703,13 @@ class ClosureType : public BaseType, public SubstitutionRef
1699
1703
1700
1704
void setup_fn_once_output () const ;
1701
1705
1706
+ const std::set<NodeId> &get_captures () const { return captures; }
1707
+
1702
1708
private:
1703
1709
TyTy::TupleType *parameters;
1704
1710
TyVar result_type;
1705
1711
DefId id;
1712
+ std::set<NodeId> captures;
1706
1713
};
1707
1714
1708
1715
class ArrayType : public BaseType
0 commit comments