mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-26 13:01:27 +03:00
72abf370bb
Long ago, UI tests were divided into "compile" and "run" tests. Later, the compile tests were further subdivided into "check" and "build" tests, to speed up tests that don't need a full build. The same split was never applied to incremental test revisions, so the only way to perform a check build in incremental tests is (confusingly) to use a `cfail` revision and then specify `//@ check-fail` or `//@ check-pass`. This PR makes room for dedicated check-fail and check-pass revisions by renaming the existing `cfail` and `cpass` revisions to `bfail` and `bpass`, since they currently perform a full build.
49 lines
969 B
Rust
49 lines
969 B
Rust
// Test incremental compilation tracking where we change field names
|
|
// in between revisions (hashing should be stable).
|
|
|
|
//@ revisions: rpass1 bfail2
|
|
//@ compile-flags: -Z query-dep-graph
|
|
//@ [bfail2] compile-flags: -Z query-dep-graph -Z assert-incr-state=loaded
|
|
|
|
#![feature(rustc_attrs)]
|
|
#![allow(unused_variables)]
|
|
|
|
#[cfg(rpass1)]
|
|
pub struct X {
|
|
pub x: u32
|
|
}
|
|
|
|
#[cfg(bfail2)]
|
|
pub struct X {
|
|
pub y: u32
|
|
}
|
|
|
|
pub struct EmbedX {
|
|
x: X
|
|
}
|
|
|
|
pub struct Y {
|
|
pub y: char
|
|
}
|
|
|
|
#[rustc_clean(except="typeck_root", cfg="bfail2")]
|
|
pub fn use_x() -> u32 {
|
|
let x: X = X { x: 22 };
|
|
//[bfail2]~^ ERROR struct `X` has no field named `x`
|
|
x.x as u32
|
|
//[bfail2]~^ ERROR no field `x` on type `X`
|
|
}
|
|
|
|
#[rustc_clean(except="typeck_root", cfg="bfail2")]
|
|
pub fn use_embed_x(embed: EmbedX) -> u32 {
|
|
embed.x.x as u32
|
|
//[bfail2]~^ ERROR no field `x` on type `X`
|
|
}
|
|
|
|
#[rustc_clean(cfg="bfail2")]
|
|
pub fn use_y() {
|
|
let x: Y = Y { y: 'c' };
|
|
}
|
|
|
|
pub fn main() { }
|