mirror of
https://github.com/rust-lang/rust
synced 2024-11-05 20:45:15 +00:00
40 lines
769 B
Rust
40 lines
769 B
Rust
//@ pretty-expanded FIXME #23616
|
|
|
|
|
|
//@ run-pass
|
|
#![allow(dead_code)]
|
|
|
|
// Tests for a previous bug that occurred due to an interaction
|
|
// between struct field initialization and the auto-coercion
|
|
// from a vector to a slice. The drop glue was being invoked on
|
|
// the temporary slice with a wrong type, triggering an LLVM assert.
|
|
|
|
|
|
struct Thing1<'a> {
|
|
baz: &'a [Box<isize>],
|
|
bar: Box<u64>,
|
|
}
|
|
|
|
struct Thing2<'a> {
|
|
baz: &'a [Box<isize>],
|
|
bar: u64,
|
|
}
|
|
|
|
pub fn main() {
|
|
let _t1_fixed = Thing1 {
|
|
baz: &[],
|
|
bar: Box::new(32),
|
|
};
|
|
Thing1 {
|
|
baz: &Vec::new(),
|
|
bar: Box::new(32),
|
|
};
|
|
let _t2_fixed = Thing2 {
|
|
baz: &[],
|
|
bar: 32,
|
|
};
|
|
Thing2 {
|
|
baz: &Vec::new(),
|
|
bar: 32,
|
|
};
|
|
}
|