Skip to content

Commit 0d4cb75

Browse files
committed
rustc: Create def IDs for region parameters
1 parent 2975bcd commit 0d4cb75

File tree

7 files changed

+899
-841
lines changed

7 files changed

+899
-841
lines changed

src/rustc/metadata/astencode.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ impl of tr for ast::def {
434434
ast::def_class_method(did0, did1) {
435435
ast::def_class_method(did0.tr(xcx), did1.tr(xcx))
436436
}
437+
ast::def_region_param(did) { ast::def_region_param(did.tr(xcx)) }
437438
}
438439
}
439440
}
@@ -1004,4 +1005,4 @@ fn test_simplification() {
10041005
}
10051006
_ { fail; }
10061007
}
1007-
}
1008+
}

src/rustc/metadata/astencode_gen.rs

Lines changed: 886 additions & 834 deletions
Large diffs are not rendered by default.

src/rustc/middle/resolve.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1711,7 +1711,8 @@ fn ns_for_def(d: def) -> namespace {
17111711
{ ns_val(value_or_enum) }
17121712
ast::def_mod(_) | ast::def_native_mod(_) { ns_module }
17131713
ast::def_ty(_) | ast::def_binding(_) | ast::def_use(_) |
1714-
ast::def_ty_param(_, _) | ast::def_prim_ty(_) | ast::def_class(_)
1714+
ast::def_ty_param(_, _) | ast::def_prim_ty(_) | ast::def_class(_) |
1715+
ast::def_region_param(_)
17151716
{ ns_type }
17161717
}
17171718
}

src/rustc/syntax/ast.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ enum ty_param_bound {
2828

2929
type ty_param = {ident: ident, id: node_id, bounds: @[ty_param_bound]};
3030

31+
type region_param = {ident: ident, id: node_id};
32+
3133
enum def {
3234
def_fn(def_id, purity),
3335
def_self(node_id),
@@ -50,7 +52,8 @@ enum def {
5052
def_class_field(def_id, def_id),
5153
// No purity allowed for now, I guess
5254
// (simpler this way, b/c presumably methods read mutable state)
53-
def_class_method(def_id, def_id)
55+
def_class_method(def_id, def_id),
56+
def_region_param(def_id),
5457
}
5558

5659
// The set of meta_items that define the compilation environment of the crate,
@@ -342,7 +345,7 @@ enum prim_ty {
342345

343346
enum region {
344347
re_inferred,
345-
re_named(ident),
348+
re_named(region_param),
346349
re_self
347350
}
348351

src/rustc/syntax/ast_util.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ fn def_id_of_def(d: def) -> def_id {
3939
def_native_mod(id) | def_const(id) |
4040
def_variant(_, id) | def_ty(id) | def_ty_param(id, _) |
4141
def_use(id) |
42-
def_class(id) | def_class_field(_, id) | def_class_method(_, id) { id }
42+
def_class(id) | def_class_field(_, id) | def_class_method(_, id) |
43+
def_region_param(id) { id }
4344

4445
def_arg(id, _) | def_local(id, _) | def_self(id) |
4546
def_upvar(id, _, _) | def_binding(id) {

src/rustc/syntax/parse/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ fn parse_region(p: parser) -> ast::region {
424424
if string == "self" {
425425
ast::re_self
426426
} else {
427-
ast::re_named(string)
427+
ast::re_named({ ident: string, id: p.get_id()})
428428
}
429429
}
430430
_ { ast::re_inferred }

src/rustc/syntax/print/pprust.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ fn print_native_mod(s: ps, nmod: ast::native_mod, attrs: [ast::attribute]) {
316316
fn print_region(s: ps, region: ast::region) {
317317
alt region {
318318
ast::re_inferred { /* no-op */ }
319-
ast::re_named(name) { word(s.s, name); word(s.s, "."); }
319+
ast::re_named(name) { word(s.s, name.ident); word(s.s, "."); }
320320
ast::re_self { word(s.s, "self"); word(s.s, "."); }
321321
}
322322
}

0 commit comments

Comments
 (0)