mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
c9c80d2c5f
The only non-obvious changes: - `building/storage_live_dead_in_statics.rs` has a `#[rustfmt::skip]` attribute to avoid reformating a table of data. - Two `.mir` files have slight changes involving line numbers. - In `unusual_item_types.rs` an `EMIT_MIR` annotation is moved to outside a function, which is the usual spot, because `tidy` complains if such a comment is indented. The commit also tweaks the comments in `rustfmt.toml`.
45 lines
722 B
Rust
45 lines
722 B
Rust
// skip-filecheck
|
|
//@ compile-flags: -Z validate-mir
|
|
#![feature(let_chains)]
|
|
struct Droppy(u8);
|
|
impl Drop for Droppy {
|
|
fn drop(&mut self) {
|
|
println!("drop {}", self.0);
|
|
}
|
|
}
|
|
|
|
enum E {
|
|
A(u8),
|
|
B,
|
|
}
|
|
|
|
impl E {
|
|
fn f() -> Self {
|
|
Self::A(1)
|
|
}
|
|
}
|
|
|
|
fn always_true() -> bool {
|
|
true
|
|
}
|
|
|
|
// EMIT_MIR logical_or_in_conditional.test_or.built.after.mir
|
|
fn test_or() {
|
|
if Droppy(0).0 > 0 || Droppy(1).0 > 1 {}
|
|
}
|
|
|
|
// EMIT_MIR logical_or_in_conditional.test_complex.built.after.mir
|
|
fn test_complex() {
|
|
if let E::A(_) = E::f()
|
|
&& ((always_true() && Droppy(0).0 > 0) || Droppy(1).0 > 1)
|
|
{}
|
|
|
|
if !always_true()
|
|
&& let E::B = E::f()
|
|
{}
|
|
}
|
|
|
|
fn main() {
|
|
test_or();
|
|
}
|