about summary refs log tree commit diff
path: root/tests/incremental/string_constant.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/incremental/string_constant.rs')
-rw-r--r--tests/incremental/string_constant.rs42
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 00000000000..e15a8d18f85
--- /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();
+    }
+}