diff options
Diffstat (limited to '')
-rw-r--r-- | tests/incremental/string_constant.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/incremental/string_constant.rs b/tests/incremental/string_constant.rs new file mode 100644 index 000000000..e15a8d18f --- /dev/null +++ b/tests/incremental/string_constant.rs @@ -0,0 +1,42 @@ +// revisions: cfail1 cfail2 +// compile-flags: -Z query-dep-graph +// build-pass (FIXME(62277): could be check-pass?) + +#![allow(warnings)] +#![feature(rustc_attrs)] +#![crate_type = "rlib"] + +// Here the only thing which changes is the string constant in `x`. +// Therefore, the compiler deduces (correctly) that typeck is not +// needed even for callers of `x`. + +pub mod x { + #[cfg(cfail1)] + pub fn x() { + println!("{}", "1"); + } + + #[cfg(cfail2)] + #[rustc_clean(except = "hir_owner_nodes,promoted_mir", cfg = "cfail2")] + pub fn x() { + println!("{}", "2"); + } +} + +pub mod y { + use x; + + #[rustc_clean(cfg = "cfail2")] + pub fn y() { + x::x(); + } +} + +pub mod z { + use y; + + #[rustc_clean(cfg = "cfail2")] + pub fn z() { + y::y(); + } +} |