Skip to content

Commit afc0bb9

Browse files
committed
clean up GeneratorSubsts
1 parent ef9fe10 commit afc0bb9

File tree

20 files changed

+58
-71
lines changed

20 files changed

+58
-71
lines changed

src/librustc/ty/sty.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ impl<'tcx> GeneratorSubsts<'tcx> {
512512
/// variant indices.
513513
#[inline]
514514
pub fn discriminants(
515-
&'tcx self,
515+
self,
516516
def_id: DefId,
517517
tcx: TyCtxt<'tcx>,
518518
) -> impl Iterator<Item = (VariantIdx, Discr<'tcx>)> + Captures<'tcx> {
@@ -524,7 +524,7 @@ impl<'tcx> GeneratorSubsts<'tcx> {
524524
/// Calls `f` with a reference to the name of the enumerator for the given
525525
/// variant `v`.
526526
#[inline]
527-
pub fn variant_name(&self, v: VariantIdx) -> Cow<'static, str> {
527+
pub fn variant_name(self, v: VariantIdx) -> Cow<'static, str> {
528528
match v.as_usize() {
529529
Self::UNRESUMED => Cow::from(Self::UNRESUMED_NAME),
530530
Self::RETURNED => Cow::from(Self::RETURNED_NAME),
@@ -570,7 +570,7 @@ impl<'tcx> GeneratorSubsts<'tcx> {
570570
#[derive(Debug, Copy, Clone)]
571571
pub enum UpvarSubsts<'tcx> {
572572
Closure(SubstsRef<'tcx>),
573-
Generator(GeneratorSubsts<'tcx>),
573+
Generator(SubstsRef<'tcx>),
574574
}
575575

576576
impl<'tcx> UpvarSubsts<'tcx> {
@@ -582,7 +582,7 @@ impl<'tcx> UpvarSubsts<'tcx> {
582582
) -> impl Iterator<Item = Ty<'tcx>> + 'tcx {
583583
let upvar_kinds = match self {
584584
UpvarSubsts::Closure(substs) => substs.as_closure().split(def_id, tcx).upvar_kinds,
585-
UpvarSubsts::Generator(substs) => substs.split(def_id, tcx).upvar_kinds,
585+
UpvarSubsts::Generator(substs) => substs.as_generator().split(def_id, tcx).upvar_kinds,
586586
};
587587
upvar_kinds.iter().map(|t| {
588588
if let GenericArgKind::Type(ty) = t.unpack() {

src/librustc/ty/subst.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ impl<'a, 'tcx> InternalSubsts<'tcx> {
198198
/// Closure substitutions have a particular structure controlled by the
199199
/// compiler that encodes information like the signature and generator kind;
200200
/// see `ty::GeneratorSubsts` struct for more comments.
201-
pub fn as_generator(&'a self) -> GeneratorSubsts<'a> {
201+
pub fn as_generator(&'tcx self) -> GeneratorSubsts<'tcx> {
202202
GeneratorSubsts { substs: self }
203203
}
204204

src/librustc_codegen_llvm/debuginfo/metadata.rs

+10-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use rustc::ty::Instance;
3030
use rustc::ty::{self, AdtKind, ParamEnv, Ty, TyCtxt};
3131
use rustc::ty::layout::{self, Align, Integer, IntegerExt, LayoutOf,
3232
PrimitiveExt, Size, TyLayout, VariantIdx};
33-
use rustc::ty::subst::GenericArgKind;
33+
use rustc::ty::subst::{GenericArgKind, SubstsRef};
3434
use rustc::session::config::{self, DebugInfo};
3535
use rustc::util::nodemap::FxHashMap;
3636
use rustc_fs_util::path_to_c_string;
@@ -692,9 +692,10 @@ pub fn type_metadata(
692692
Some(containing_scope)).finalize(cx)
693693
}
694694
ty::Generator(def_id, substs, _) => {
695-
let upvar_tys : Vec<_> = substs.prefix_tys(def_id, cx.tcx).map(|t| {
696-
cx.tcx.normalize_erasing_regions(ParamEnv::reveal_all(), t)
697-
}).collect();
695+
let upvar_tys : Vec<_> = substs
696+
.as_generator().prefix_tys(def_id, cx.tcx).map(|t| {
697+
cx.tcx.normalize_erasing_regions(ParamEnv::reveal_all(), t)
698+
}).collect();
698699
prepare_enum_metadata(cx,
699700
t,
700701
def_id,
@@ -1338,7 +1339,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
13381339
ty::Adt(adt, _) => VariantInfo::Adt(&adt.variants[index]),
13391340
ty::Generator(def_id, substs, _) => {
13401341
let generator_layout = cx.tcx.generator_layout(*def_id);
1341-
VariantInfo::Generator(*substs, generator_layout, index)
1342+
VariantInfo::Generator(substs, generator_layout, index)
13421343
}
13431344
_ => bug!(),
13441345
}
@@ -1611,15 +1612,15 @@ enum EnumDiscriminantInfo<'ll> {
16111612
#[derive(Copy, Clone)]
16121613
enum VariantInfo<'tcx> {
16131614
Adt(&'tcx ty::VariantDef),
1614-
Generator(ty::GeneratorSubsts<'tcx>, &'tcx GeneratorLayout<'tcx>, VariantIdx),
1615+
Generator(SubstsRef<'tcx>, &'tcx GeneratorLayout<'tcx>, VariantIdx),
16151616
}
16161617

16171618
impl<'tcx> VariantInfo<'tcx> {
16181619
fn map_struct_name<R>(&self, f: impl FnOnce(&str) -> R) -> R {
16191620
match self {
16201621
VariantInfo::Adt(variant) => f(&variant.ident.as_str()),
16211622
VariantInfo::Generator(substs, _, variant_index) =>
1622-
f(&substs.variant_name(*variant_index)),
1623+
f(&substs.as_generator().variant_name(*variant_index)),
16231624
}
16241625
}
16251626

@@ -1763,9 +1764,10 @@ fn prepare_enum_metadata(
17631764
})
17641765
.collect(),
17651766
ty::Generator(_, substs, _) => substs
1767+
.as_generator()
17661768
.variant_range(enum_def_id, cx.tcx)
17671769
.map(|variant_index| {
1768-
let name = SmallCStr::new(&substs.variant_name(variant_index));
1770+
let name = SmallCStr::new(&substs.as_generator().variant_name(variant_index));
17691771
unsafe {
17701772
Some(llvm::LLVMRustDIBuilderCreateEnumerator(
17711773
DIB(cx),

src/librustc_codegen_llvm/type_of.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ fn uncached_llvm_type<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>,
6565
if let (&ty::Generator(_, substs, _), &layout::Variants::Single { index })
6666
= (&layout.ty.kind, &layout.variants)
6767
{
68-
write!(&mut name, "::{}", substs.variant_name(index)).unwrap();
68+
write!(&mut name, "::{}", substs.as_generator().variant_name(index)).unwrap();
6969
}
7070
Some(name)
7171
}

src/librustc_codegen_ssa/mir/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ fn arg_local_refs<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
636636
ty::Generator(def_id, substs, _) => (def_id, substs),
637637
_ => bug!("generator layout without generator substs"),
638638
};
639-
let state_tys = gen_substs.state_tys(def_id, tcx);
639+
let state_tys = gen_substs.as_generator().state_tys(def_id, tcx);
640640

641641
generator_layout.variant_fields.iter()
642642
.zip(state_tys)

src/librustc_codegen_utils/symbol_names/legacy.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ impl Printer<'tcx> for SymbolPrinter<'tcx> {
225225
ty::Projection(ty::ProjectionTy { item_def_id: def_id, substs }) |
226226
ty::UnnormalizedProjection(ty::ProjectionTy { item_def_id: def_id, substs }) |
227227
ty::Closure(def_id, substs) |
228-
ty::Generator(def_id, ty::GeneratorSubsts { substs }, _) => {
228+
ty::Generator(def_id, substs, _) => {
229229
self.print_def_path(def_id, substs)
230230
}
231231
_ => self.pretty_print_type(ty),

src/librustc_codegen_utils/symbol_names/v0.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ impl Printer<'tcx> for SymbolMangler<'tcx> {
415415
ty::Projection(ty::ProjectionTy { item_def_id: def_id, substs }) |
416416
ty::UnnormalizedProjection(ty::ProjectionTy { item_def_id: def_id, substs }) |
417417
ty::Closure(def_id, substs) |
418-
ty::Generator(def_id, ty::GeneratorSubsts { substs }, _) => {
418+
ty::Generator(def_id, substs, _) => {
419419
self = self.print_def_path(def_id, substs)?;
420420
}
421421
ty::Foreign(def_id) => {

src/librustc_mir/borrow_check/nll/constraint_generation.rs

+1-8
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use rustc::mir::{
1212
SourceInfo, Statement, StatementKind, Terminator, TerminatorKind, UserTypeProjection,
1313
};
1414
use rustc::ty::fold::TypeFoldable;
15-
use rustc::ty::{self, GeneratorSubsts, RegionVid, Ty};
15+
use rustc::ty::{self, RegionVid, Ty};
1616
use rustc::ty::subst::SubstsRef;
1717

1818
pub(super) fn generate_constraints<'cx, 'tcx>(
@@ -91,13 +91,6 @@ impl<'cg, 'cx, 'tcx> Visitor<'tcx> for ConstraintGeneration<'cg, 'cx, 'tcx> {
9191
self.super_ty(ty);
9292
}
9393

94-
/// We sometimes have `generator_substs` within an rvalue, or within a
95-
/// call. Make them live at the location where they appear.
96-
fn visit_generator_substs(&mut self, substs: &GeneratorSubsts<'tcx>, location: Location) {
97-
self.add_regular_live_constraint(*substs, location);
98-
self.super_generator_substs(substs);
99-
}
100-
10194
fn visit_statement(
10295
&mut self,
10396
statement: &Statement<'tcx>,

src/librustc_mir/borrow_check/nll/renumber.rs

+1-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rustc::ty::subst::SubstsRef;
2-
use rustc::ty::{self, GeneratorSubsts, Ty, TypeFoldable};
2+
use rustc::ty::{self, Ty, TypeFoldable};
33
use rustc::mir::{Location, Body, Promoted};
44
use rustc::mir::visit::{MutVisitor, TyContext};
55
use rustc::infer::{InferCtxt, NLLRegionVariableOrigin};
@@ -82,18 +82,4 @@ impl<'a, 'tcx> MutVisitor<'tcx> for NLLVisitor<'a, 'tcx> {
8282
fn visit_const(&mut self, constant: &mut &'tcx ty::Const<'tcx>, _location: Location) {
8383
*constant = self.renumber_regions(&*constant);
8484
}
85-
86-
fn visit_generator_substs(&mut self,
87-
substs: &mut GeneratorSubsts<'tcx>,
88-
location: Location) {
89-
debug!(
90-
"visit_generator_substs(substs={:?}, location={:?})",
91-
substs,
92-
location,
93-
);
94-
95-
*substs = self.renumber_regions(substs);
96-
97-
debug!("visit_generator_substs: substs={:?}", substs);
98-
}
9985
}

src/librustc_mir/borrow_check/nll/type_check/mod.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -759,13 +759,13 @@ impl<'a, 'b, 'tcx> TypeVerifier<'a, 'b, 'tcx> {
759759
PlaceTy { ty, variant_index: Some(variant_index) } => match ty.kind {
760760
ty::Adt(adt_def, substs) => (&adt_def.variants[variant_index], substs),
761761
ty::Generator(def_id, substs, _) => {
762-
let mut variants = substs.state_tys(def_id, tcx);
762+
let mut variants = substs.as_generator().state_tys(def_id, tcx);
763763
let mut variant = match variants.nth(variant_index.into()) {
764764
Some(v) => v,
765765
None => {
766766
bug!("variant_index of generator out of range: {:?}/{:?}",
767767
variant_index,
768-
substs.state_tys(def_id, tcx).count())
768+
substs.as_generator().state_tys(def_id, tcx).count())
769769
}
770770
};
771771
return match variant.nth(field.index()) {
@@ -791,10 +791,10 @@ impl<'a, 'b, 'tcx> TypeVerifier<'a, 'b, 'tcx> {
791791
ty::Generator(def_id, substs, _) => {
792792
// Only prefix fields (upvars and current state) are
793793
// accessible without a variant index.
794-
return match substs.prefix_tys(def_id, tcx).nth(field.index()) {
794+
return match substs.as_generator().prefix_tys(def_id, tcx).nth(field.index()) {
795795
Some(ty) => Ok(ty),
796796
None => Err(FieldAccessError::OutOfRange {
797-
field_count: substs.prefix_tys(def_id, tcx).count(),
797+
field_count: substs.as_generator().prefix_tys(def_id, tcx).count(),
798798
}),
799799
}
800800
}
@@ -1963,10 +1963,10 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
19631963
// It doesn't make sense to look at a field beyond the prefix;
19641964
// these require a variant index, and are not initialized in
19651965
// aggregate rvalues.
1966-
match substs.prefix_tys(def_id, tcx).nth(field_index) {
1966+
match substs.as_generator().prefix_tys(def_id, tcx).nth(field_index) {
19671967
Some(ty) => Ok(ty),
19681968
None => Err(FieldAccessError::OutOfRange {
1969-
field_count: substs.prefix_tys(def_id, tcx).count(),
1969+
field_count: substs.as_generator().prefix_tys(def_id, tcx).count(),
19701970
}),
19711971
}
19721972
}
@@ -2541,7 +2541,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
25412541
// these extra requirements are basically like where
25422542
// clauses on the struct.
25432543
AggregateKind::Closure(def_id, substs)
2544-
| AggregateKind::Generator(def_id, ty::GeneratorSubsts { substs }, _) => {
2544+
| AggregateKind::Generator(def_id, substs, _) => {
25452545
self.prove_closure_bounds(tcx, *def_id, substs, location)
25462546
}
25472547

src/librustc_mir/borrow_check/nll/universal_regions.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use rustc::infer::{InferCtxt, NLLRegionVariableOrigin};
1919
use rustc::middle::lang_items;
2020
use rustc::ty::fold::TypeFoldable;
2121
use rustc::ty::subst::{InternalSubsts, SubstsRef, Subst};
22-
use rustc::ty::{self, GeneratorSubsts, RegionVid, Ty, TyCtxt};
22+
use rustc::ty::{self, RegionVid, Ty, TyCtxt};
2323
use rustc::util::nodemap::FxHashMap;
2424
use rustc_index::vec::{Idx, IndexVec};
2525
use rustc_errors::DiagnosticBuilder;
@@ -90,7 +90,7 @@ pub enum DefiningTy<'tcx> {
9090
/// The MIR is a generator. The signature is that generators take
9191
/// no parameters and return the result of
9292
/// `ClosureSubsts::generator_return_ty`.
93-
Generator(DefId, ty::GeneratorSubsts<'tcx>, hir::GeneratorMovability),
93+
Generator(DefId, SubstsRef<'tcx>, hir::GeneratorMovability),
9494

9595
/// The MIR is a fn item with the given `DefId` and substs. The signature
9696
/// of the function can be bound then with the `fn_sig` query.
@@ -113,7 +113,7 @@ impl<'tcx> DefiningTy<'tcx> {
113113
substs.as_closure().upvar_tys(def_id, tcx)
114114
),
115115
DefiningTy::Generator(def_id, substs, _) => {
116-
Either::Right(Either::Left(substs.upvar_tys(def_id, tcx)))
116+
Either::Right(Either::Left(substs.as_generator().upvar_tys(def_id, tcx)))
117117
}
118118
DefiningTy::FnDef(..) | DefiningTy::Const(..) => {
119119
Either::Right(Either::Right(iter::empty()))
@@ -334,7 +334,7 @@ impl<'tcx> UniversalRegions<'tcx> {
334334
err.note(&format!(
335335
"defining type: {:?} with generator substs {:#?}",
336336
def_id,
337-
&substs.substs[..]
337+
&substs[..]
338338
));
339339

340340
// FIXME: As above, we'd like to print out the region
@@ -470,7 +470,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> {
470470

471471
let yield_ty = match defining_ty {
472472
DefiningTy::Generator(def_id, substs, _) => {
473-
Some(substs.yield_ty(def_id, self.infcx.tcx))
473+
Some(substs.as_generator().yield_ty(def_id, self.infcx.tcx))
474474
}
475475
_ => None,
476476
};
@@ -549,7 +549,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> {
549549
let identity_substs = InternalSubsts::identity_for_item(tcx, closure_base_def_id);
550550
let fr_substs = match defining_ty {
551551
DefiningTy::Closure(_, ref substs)
552-
| DefiningTy::Generator(_, GeneratorSubsts { ref substs }, _) => {
552+
| DefiningTy::Generator(_, ref substs, _) => {
553553
// In the case of closures, we rely on the fact that
554554
// the first N elements in the ClosureSubsts are
555555
// inherited from the `closure_base_def_id`.
@@ -612,7 +612,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> {
612612

613613
DefiningTy::Generator(def_id, substs, movability) => {
614614
assert_eq!(self.mir_def_id, def_id);
615-
let output = substs.return_ty(def_id, tcx);
615+
let output = substs.as_generator().return_ty(def_id, tcx);
616616
let generator_ty = tcx.mk_generator(def_id, substs, movability);
617617
let inputs_and_output = self.infcx.tcx.intern_type_list(&[generator_ty, output]);
618618
ty::Binder::dummy(inputs_and_output)

src/librustc_mir/build/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ pub fn mir_build(tcx: TyCtxt<'_>, def_id: DefId) -> Body<'_> {
146146
let (yield_ty, return_ty) = if body.generator_kind.is_some() {
147147
let gen_sig = match ty.kind {
148148
ty::Generator(gen_def_id, gen_substs, ..) =>
149-
gen_substs.sig(gen_def_id, tcx),
149+
gen_substs.as_generator().sig(gen_def_id, tcx),
150150
_ =>
151151
span_bug!(tcx.hir().span(id),
152152
"generator w/o generator type: {:?}", ty),

src/librustc_mir/interpret/intrinsics/type_name.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ impl<'tcx> Printer<'tcx> for AbsolutePathPrinter<'tcx> {
6868
| ty::Projection(ty::ProjectionTy { item_def_id: def_id, substs })
6969
| ty::UnnormalizedProjection(ty::ProjectionTy { item_def_id: def_id, substs })
7070
| ty::Closure(def_id, substs)
71-
| ty::Generator(def_id, ty::GeneratorSubsts { substs }, _)
72-
=> self.print_def_path(def_id, substs),
71+
| ty::Generator(def_id, substs, _) => self.print_def_path(def_id, substs),
7372
ty::Foreign(def_id) => self.print_def_path(def_id, &[]),
7473

7574
ty::GeneratorWitness(_) => {

src/librustc_mir/interpret/operand.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -664,14 +664,18 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
664664
bits_discr
665665
};
666666
// Make sure we catch invalid discriminants
667-
let index = match &rval.layout.ty.kind {
667+
let index = match rval.layout.ty.kind {
668668
ty::Adt(adt, _) => adt
669669
.discriminants(self.tcx.tcx)
670670
.find(|(_, var)| var.val == real_discr),
671-
ty::Generator(def_id, substs, _) => substs
672-
.discriminants(*def_id, self.tcx.tcx)
673-
.find(|(_, var)| var.val == real_discr),
671+
ty::Generator(def_id, substs, _) => {
672+
let substs = substs.as_generator();
673+
substs
674+
.discriminants(def_id, self.tcx.tcx)
675+
.find(|(_, var)| var.val == real_discr)
676+
}
674677
_ => bug!("tagged layout for non-adt non-generator"),
678+
675679
}.ok_or_else(
676680
|| err_unsup!(InvalidDiscriminant(raw_discr.erase_tag()))
677681
)?;

src/librustc_mir/shim.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ fn build_drop_shim<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId, ty: Option<Ty<'tcx>>)
169169
// Check if this is a generator, if so, return the drop glue for it
170170
if let Some(&ty::TyS { kind: ty::Generator(gen_def_id, substs, _), .. }) = ty {
171171
let body = &**tcx.optimized_mir(gen_def_id).generator_drop.as_ref().unwrap();
172-
return body.subst(tcx, substs.substs);
172+
return body.subst(tcx, substs);
173173
}
174174

175175
let substs = if let Some(ty) = ty {

src/librustc_mir/transform/generator.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,7 @@ impl<'tcx> MirPass<'tcx> for StateTransform {
11261126
// Get the interior types and substs which typeck computed
11271127
let (upvars, interior, discr_ty, movable) = match gen_ty.kind {
11281128
ty::Generator(_, substs, movability) => {
1129+
let substs = substs.as_generator();
11291130
(substs.upvar_tys(def_id, tcx).collect(),
11301131
substs.witness(def_id, tcx),
11311132
substs.discr_ty(tcx),

src/librustc_mir/util/elaborate_drops.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ where
798798
// It effetively only contains upvars until the generator transformation runs.
799799
// See librustc_body/transform/generator.rs for more details.
800800
ty::Generator(def_id, substs, _) => {
801-
let tys : Vec<_> = substs.upvar_tys(def_id, self.tcx()).collect();
801+
let tys : Vec<_> = substs.as_generator().upvar_tys(def_id, self.tcx()).collect();
802802
self.open_drop_for_tuple(&tys)
803803
}
804804
ty::Tuple(..) => {

src/librustc_traits/dropck_outlives.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ fn dtorck_constraint_for_ty<'tcx>(
223223
// *do* incorporate the upvars here.
224224

225225
let constraint = DtorckConstraint {
226-
outlives: substs.upvar_tys(def_id, tcx).map(|t| t.into()).collect(),
226+
outlives: substs.as_generator().upvar_tys(def_id, tcx).map(|t| t.into()).collect(),
227227
dtorck_types: vec![],
228228
overflows: vec![],
229229
};

src/librustc_traits/generic_types.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ crate fn closure(tcx: TyCtxt<'tcx>, def_id: DefId) -> Ty<'tcx> {
7373
}
7474

7575
crate fn generator(tcx: TyCtxt<'tcx>, def_id: DefId) -> Ty<'tcx> {
76-
tcx.mk_generator(def_id, ty::GeneratorSubsts {
77-
substs: InternalSubsts::bound_vars_for_item(tcx, def_id),
78-
}, hir::GeneratorMovability::Movable)
76+
tcx.mk_generator(
77+
def_id,
78+
InternalSubsts::bound_vars_for_item(tcx, def_id),
79+
hir::GeneratorMovability::Movable
80+
)
7981
}

0 commit comments

Comments
 (0)