From b5a5556dd4807ee97cb51ab395d5dbfc858152dd Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Thu, 28 Sep 2017 15:56:28 -0300 Subject: [PATCH] Generate DepNodeIndexNew using newtype_index macro --- src/librustc/dep_graph/graph.rs | 2 +- src/librustc/lib.rs | 1 + src/librustc_data_structures/indexed_vec.rs | 7 +++++++ src/librustc_mir/lib.rs | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/librustc/dep_graph/graph.rs b/src/librustc/dep_graph/graph.rs index 2d2558fd815c..5057b1c6065b 100644 --- a/src/librustc/dep_graph/graph.rs +++ b/src/librustc/dep_graph/graph.rs @@ -406,7 +406,7 @@ impl DepGraph { for (current_dep_node_index, edges) in current_dep_graph.edges.iter_enumerated() { let start = edge_list_data.len() as u32; // This should really just be a memcpy :/ - edge_list_data.extend(edges.iter().map(|i| SerializedDepNodeIndex(i.index))); + edge_list_data.extend(edges.iter().map(|i| SerializedDepNodeIndex(i.index() as u32))); let end = edge_list_data.len() as u32; debug_assert_eq!(current_dep_node_index.index(), edge_list_indices.len()); diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index 3322142c9cf2..015dbbb7affa 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -43,6 +43,7 @@ #![feature(box_patterns)] #![feature(box_syntax)] #![feature(conservative_impl_trait)] +#![feature(const_fn)] #![feature(core_intrinsics)] #![feature(i128_type)] #![cfg_attr(windows, feature(libc))] diff --git a/src/librustc_data_structures/indexed_vec.rs b/src/librustc_data_structures/indexed_vec.rs index 82882f944404..ce2468fb9f1f 100644 --- a/src/librustc_data_structures/indexed_vec.rs +++ b/src/librustc_data_structures/indexed_vec.rs @@ -49,6 +49,13 @@ macro_rules! newtype_index { RustcEncodable, RustcDecodable)] pub struct $name(u32); + impl $name { + // HACK use for constants + pub const fn const_new(x: u32) -> Self { + $name(x) + } + } + impl Idx for $name { fn new(value: usize) -> Self { assert!(value < (::std::u32::MAX) as usize); diff --git a/src/librustc_mir/lib.rs b/src/librustc_mir/lib.rs index 3339e7a2c30d..7e4206e14c56 100644 --- a/src/librustc_mir/lib.rs +++ b/src/librustc_mir/lib.rs @@ -18,6 +18,7 @@ Rust MIR: a lowered representation of Rust. Also: an experiment! #![feature(box_patterns)] #![feature(box_syntax)] +#![feature(const_fn)] #![feature(core_intrinsics)] #![feature(i128_type)] #![feature(rustc_diagnostic_macros)]