Skip to content

Commit 1922656

Browse files
committed
Get out of bootstrapping pickle.
1 parent 7a7146c commit 1922656

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

src/librustc_target/abi/mod.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,20 +105,34 @@ impl TargetDataLayout {
105105
let mut dl = TargetDataLayout::default();
106106
let mut i128_align_src = 64;
107107
for spec in target.data_layout.split('-') {
108-
match spec.split(':').collect::<Vec<_>>()[..] {
108+
let spec_parts = spec.split(':').collect::<Vec<_>>();
109+
110+
match &*spec_parts {
109111
["e"] => dl.endian = Endian::Little,
110112
["E"] => dl.endian = Endian::Big,
111113
[p] if p.starts_with("P") => {
112114
dl.instruction_address_space = parse_address_space(&p[1..], "P")?
113115
}
114-
["a", ref a..] => dl.aggregate_align = align(a, "a")?,
115-
["f32", ref a..] => dl.f32_align = align(a, "f32")?,
116-
["f64", ref a..] => dl.f64_align = align(a, "f64")?,
117-
[p @ "p", s, ref a..] | [p @ "p0", s, ref a..] => {
116+
// FIXME: Ping cfg(bootstrap) -- Use `ref a @ ..` with new bootstrap compiler.
117+
["a", ..] => {
118+
let a = &spec_parts[1..]; // FIXME inline into pattern.
119+
dl.aggregate_align = align(a, "a")?
120+
}
121+
["f32", ..] => {
122+
let a = &spec_parts[1..]; // FIXME inline into pattern.
123+
dl.f32_align = align(a, "f32")?
124+
}
125+
["f64", ..] => {
126+
let a = &spec_parts[1..]; // FIXME inline into pattern.
127+
dl.f64_align = align(a, "f64")?
128+
}
129+
[p @ "p", s, ..] | [p @ "p0", s, ..] => {
130+
let a = &spec_parts[2..]; // FIXME inline into pattern.
118131
dl.pointer_size = size(s, p)?;
119132
dl.pointer_align = align(a, p)?;
120133
}
121-
[s, ref a..] if s.starts_with("i") => {
134+
[s, ..] if s.starts_with("i") => {
135+
let a = &spec_parts[1..]; // FIXME inline into pattern.
122136
let bits = match s[1..].parse::<u64>() {
123137
Ok(bits) => bits,
124138
Err(_) => {
@@ -142,7 +156,8 @@ impl TargetDataLayout {
142156
dl.i128_align = a;
143157
}
144158
}
145-
[s, ref a..] if s.starts_with("v") => {
159+
[s, ..] if s.starts_with("v") => {
160+
let a = &spec_parts[1..]; // FIXME inline into pattern.
146161
let v_size = size(&s[1..], "v")?;
147162
let a = align(a, s)?;
148163
if let Some(v) = dl.vector_align.iter_mut().find(|v| v.0 == v_size) {

src/librustc_typeck/check/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1815,7 +1815,9 @@ fn bad_variant_count<'tcx>(tcx: TyCtxt<'tcx>, adt: &'tcx ty::AdtDef, sp: Span, d
18151815
);
18161816
let mut err = struct_span_err!(tcx.sess, sp, E0731, "transparent enum {}", msg);
18171817
err.span_label(sp, &msg);
1818-
if let &[ref start.., ref end] = &variant_spans[..] {
1818+
if let &[.., ref end] = &variant_spans[..] {
1819+
// FIXME: Ping cfg(bootstrap) -- Use `ref start @ ..` with new bootstrap compiler.
1820+
let start = &variant_spans[..variant_spans.len() - 1];
18191821
for variant_span in start {
18201822
err.span_label(*variant_span, "");
18211823
}

0 commit comments

Comments
 (0)