Skip to content

Commit 55a6c62

Browse files
author
Alex Muscar
committed
Make Debruijn indices zero-based
1 parent 5d7f892 commit 55a6c62

File tree

9 files changed

+16
-17
lines changed

9 files changed

+16
-17
lines changed

src/librustc/infer/higher_ranked/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ impl<'a, 'gcx, 'tcx> CombineFields<'a, 'gcx, 'tcx> {
417417
{
418418
for (a_br, a_r) in a_map {
419419
if *a_r == r {
420-
return infcx.tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(1), *a_br));
420+
return infcx.tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(0), *a_br));
421421
}
422422
}
423423
span_bug!(

src/librustc/middle/resolve_lifetime.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ impl Region {
9898
}
9999

100100
fn late(hir_map: &Map, def: &hir::LifetimeDef) -> (hir::LifetimeName, Region) {
101-
let depth = ty::DebruijnIndex::new(1);
101+
let depth = ty::DebruijnIndex::new(0);
102102
let def_id = hir_map.local_def_id(def.lifetime.id);
103103
let origin = LifetimeDefOrigin::from_is_in_band(def.in_band);
104104
(def.lifetime.name, Region::LateBound(depth, def_id, origin))
@@ -107,7 +107,7 @@ impl Region {
107107
fn late_anon(index: &Cell<u32>) -> Region {
108108
let i = index.get();
109109
index.set(i + 1);
110-
let depth = ty::DebruijnIndex::new(1);
110+
let depth = ty::DebruijnIndex::new(0);
111111
Region::LateBoundAnon(depth, i)
112112
}
113113

src/librustc/ty/fold.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
448448
let mut counter = 0;
449449
Binder(self.replace_late_bound_regions(sig, |_| {
450450
counter += 1;
451-
self.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(1), ty::BrAnon(counter)))
451+
self.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(0), ty::BrAnon(counter)))
452452
}).0)
453453
}
454454
}

src/librustc/ty/sty.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1156,7 +1156,6 @@ impl<'a, 'tcx, 'gcx> PolyExistentialProjection<'tcx> {
11561156

11571157
impl DebruijnIndex {
11581158
pub fn new(depth: u32) -> DebruijnIndex {
1159-
assert!(depth > 0);
11601159
DebruijnIndex { depth: depth }
11611160
}
11621161

src/librustc/ty/util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
589589
-> Option<ty::Binder<Ty<'tcx>>>
590590
{
591591
let closure_ty = self.mk_closure(closure_def_id, closure_substs);
592-
let env_region = ty::ReLateBound(ty::DebruijnIndex::new(1), ty::BrEnv);
592+
let env_region = ty::ReLateBound(ty::DebruijnIndex::new(0), ty::BrEnv);
593593
let closure_kind_ty = closure_substs.closure_kind_ty(closure_def_id, self);
594594
let closure_kind = closure_kind_ty.to_opt_closure_kind()?;
595595
let env_ty = match closure_kind {

src/librustc/util/ppaux.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ impl PrintContext {
497497
name)
498498
}
499499
};
500-
tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(1), br))
500+
tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(0), br))
501501
}).0;
502502
start_or_continue(f, "", "> ")?;
503503

src/librustc_driver/test.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ impl<'a, 'gcx, 'tcx> Env<'a, 'gcx, 'tcx> {
327327
}
328328

329329
pub fn t_rptr_late_bound(&self, id: u32) -> Ty<'tcx> {
330-
let r = self.re_late_bound_with_debruijn(id, ty::DebruijnIndex::new(1));
330+
let r = self.re_late_bound_with_debruijn(id, ty::DebruijnIndex::new(0));
331331
self.infcx.tcx.mk_imm_ref(r, self.tcx().types.isize)
332332
}
333333

@@ -484,7 +484,7 @@ fn subst_ty_renumber_bound() {
484484

485485
// t_expected = fn(&'a isize)
486486
let t_expected = {
487-
let t_ptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(2));
487+
let t_ptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(1));
488488
env.t_fn(&[t_ptr_bound2], env.t_nil())
489489
};
490490

@@ -521,7 +521,7 @@ fn subst_ty_renumber_some_bounds() {
521521
//
522522
// but not that the Debruijn index is different in the different cases.
523523
let t_expected = {
524-
let t_rptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(2));
524+
let t_rptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(1));
525525
env.t_pair(t_rptr_bound1, env.t_fn(&[t_rptr_bound2], env.t_nil()))
526526
};
527527

@@ -549,10 +549,10 @@ fn escaping() {
549549
let t_rptr_free1 = env.t_rptr_free(1);
550550
assert!(!t_rptr_free1.has_escaping_regions());
551551

552-
let t_rptr_bound1 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(1));
552+
let t_rptr_bound1 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(0));
553553
assert!(t_rptr_bound1.has_escaping_regions());
554554

555-
let t_rptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(2));
555+
let t_rptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(1));
556556
assert!(t_rptr_bound2.has_escaping_regions());
557557

558558
// t_fn = fn(A)
@@ -568,7 +568,7 @@ fn escaping() {
568568
#[test]
569569
fn subst_region_renumber_region() {
570570
test_env(EMPTY_SOURCE_STR, errors(&[]), |env| {
571-
let re_bound1 = env.re_late_bound_with_debruijn(1, ty::DebruijnIndex::new(1));
571+
let re_bound1 = env.re_late_bound_with_debruijn(1, ty::DebruijnIndex::new(0));
572572

573573
// type t_source<'a> = fn(&'a isize)
574574
let t_source = {
@@ -583,7 +583,7 @@ fn subst_region_renumber_region() {
583583
//
584584
// but not that the Debruijn index is different in the different cases.
585585
let t_expected = {
586-
let t_rptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(2));
586+
let t_rptr_bound2 = env.t_rptr_late_bound_with_debruijn(1, ty::DebruijnIndex::new(1));
587587
env.t_fn(&[t_rptr_bound2], env.t_nil())
588588
};
589589

src/librustc_trans/common.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ pub fn ty_fn_sig<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>,
425425
let tcx = cx.tcx;
426426
let sig = substs.generator_poly_sig(def_id, cx.tcx);
427427

428-
let env_region = ty::ReLateBound(ty::DebruijnIndex::new(1), ty::BrEnv);
428+
let env_region = ty::ReLateBound(ty::DebruijnIndex::new(0), ty::BrEnv);
429429
let env_ty = tcx.mk_mut_ref(tcx.mk_region(env_region), ty);
430430

431431
sig.map_bound(|sig| {

src/librustc_typeck/check/intrinsic.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ pub fn check_intrinsic_type<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
119119
"pref_align_of" | "min_align_of" => (1, Vec::new(), tcx.types.usize),
120120
"size_of_val" | "min_align_of_val" => {
121121
(1, vec![
122-
tcx.mk_imm_ref(tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(1),
122+
tcx.mk_imm_ref(tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(0),
123123
ty::BrAnon(0))),
124124
param(0))
125125
], tcx.types.usize)
@@ -298,7 +298,7 @@ pub fn check_intrinsic_type<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
298298
"unlikely" => (0, vec![tcx.types.bool], tcx.types.bool),
299299

300300
"discriminant_value" => (1, vec![
301-
tcx.mk_imm_ref(tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(1),
301+
tcx.mk_imm_ref(tcx.mk_region(ty::ReLateBound(ty::DebruijnIndex::new(0),
302302
ty::BrAnon(0))),
303303
param(0))], tcx.types.u64),
304304

0 commit comments

Comments
 (0)