summaryrefslogtreecommitdiffstats
path: root/src/test/ui/svh/auxiliary
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/svh/auxiliary')
-rw-r--r--src/test/ui/svh/auxiliary/changing-crates-a1.rs3
-rw-r--r--src/test/ui/svh/auxiliary/changing-crates-a2.rs3
-rw-r--r--src/test/ui/svh/auxiliary/changing-crates-b.rs5
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-base.rs25
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-change-lit.rs25
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-change-significant-cfg.rs27
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-change-trait-bound.rs25
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-change-type-arg.rs25
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-change-type-ret.rs25
-rw-r--r--src/test/ui/svh/auxiliary/svh-a-change-type-static.rs25
-rw-r--r--src/test/ui/svh/auxiliary/svh-b.rs13
-rw-r--r--src/test/ui/svh/auxiliary/svh-uta-base.rs22
-rw-r--r--src/test/ui/svh/auxiliary/svh-uta-change-use-trait.rs22
-rw-r--r--src/test/ui/svh/auxiliary/svh-utb.rs12
14 files changed, 257 insertions, 0 deletions
diff --git a/src/test/ui/svh/auxiliary/changing-crates-a1.rs b/src/test/ui/svh/auxiliary/changing-crates-a1.rs
new file mode 100644
index 000000000..bc0559b8b
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/changing-crates-a1.rs
@@ -0,0 +1,3 @@
+#![crate_name = "a"]
+
+pub fn foo<T>() {}
diff --git a/src/test/ui/svh/auxiliary/changing-crates-a2.rs b/src/test/ui/svh/auxiliary/changing-crates-a2.rs
new file mode 100644
index 000000000..fafc6d5b1
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/changing-crates-a2.rs
@@ -0,0 +1,3 @@
+#![crate_name = "a"]
+
+pub fn foo<T>() { println!("hello!"); }
diff --git a/src/test/ui/svh/auxiliary/changing-crates-b.rs b/src/test/ui/svh/auxiliary/changing-crates-b.rs
new file mode 100644
index 000000000..f9ce29e4c
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/changing-crates-b.rs
@@ -0,0 +1,5 @@
+#![crate_name = "b"]
+
+extern crate a;
+
+pub fn foo() { a::foo::<isize>(); }
diff --git a/src/test/ui/svh/auxiliary/svh-a-base.rs b/src/test/ui/svh/auxiliary/svh-a-base.rs
new file mode 100644
index 000000000..36b41fc81
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-base.rs
@@ -0,0 +1,25 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : isize = 2;
+
+pub fn foo<T:U>(_: isize) -> isize {
+ 3
+}
+
+pub fn an_unused_name() -> isize {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-a-change-lit.rs b/src/test/ui/svh/auxiliary/svh-a-change-lit.rs
new file mode 100644
index 000000000..c76f2c992
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-change-lit.rs
@@ -0,0 +1,25 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : isize = 2;
+
+pub fn foo<T:U>(_: isize) -> isize {
+ 0
+}
+
+pub fn an_unused_name() -> isize {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-a-change-significant-cfg.rs b/src/test/ui/svh/auxiliary/svh-a-change-significant-cfg.rs
new file mode 100644
index 000000000..37f59c97e
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-change-significant-cfg.rs
@@ -0,0 +1,27 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : isize = 2;
+
+#[cfg(some_flag)]
+pub fn foo<T:U>(_: isize) -> isize {
+ 3
+}
+
+#[cfg(not(some_flag))]
+pub fn an_unused_name() -> isize {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-a-change-trait-bound.rs b/src/test/ui/svh/auxiliary/svh-a-change-trait-bound.rs
new file mode 100644
index 000000000..be24b1e22
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-change-trait-bound.rs
@@ -0,0 +1,25 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : isize = 2;
+
+pub fn foo<T:V>(_: isize) -> isize {
+ 3
+}
+
+pub fn an_unused_name() -> isize {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-a-change-type-arg.rs b/src/test/ui/svh/auxiliary/svh-a-change-type-arg.rs
new file mode 100644
index 000000000..3fe102245
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-change-type-arg.rs
@@ -0,0 +1,25 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : isize = 2;
+
+pub fn foo<T:U>(_: i32) -> isize {
+ 3
+}
+
+pub fn an_unused_name() -> isize {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-a-change-type-ret.rs b/src/test/ui/svh/auxiliary/svh-a-change-type-ret.rs
new file mode 100644
index 000000000..06e4fad06
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-change-type-ret.rs
@@ -0,0 +1,25 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : isize = 2;
+
+pub fn foo<T:U>(_: isize) -> i64 {
+ 3
+}
+
+pub fn an_unused_name() -> i32 {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-a-change-type-static.rs b/src/test/ui/svh/auxiliary/svh-a-change-type-static.rs
new file mode 100644
index 000000000..440cb3213
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-a-change-type-static.rs
@@ -0,0 +1,25 @@
+//! The `svh-a-*.rs` files are all deviations from the base file
+//! svh-a-base.rs with some difference (usually in `fn foo`) that
+//! should not affect the strict version hash (SVH) computation
+//! (#14132).
+
+#![crate_name = "a"]
+
+macro_rules! three {
+ () => { 3 }
+}
+
+pub trait U {}
+pub trait V {}
+impl U for () {}
+impl V for () {}
+
+static A_CONSTANT : i32 = 2;
+
+pub fn foo<T:U>(_: isize) -> isize {
+ 3
+}
+
+pub fn an_unused_name() -> isize {
+ 4
+}
diff --git a/src/test/ui/svh/auxiliary/svh-b.rs b/src/test/ui/svh/auxiliary/svh-b.rs
new file mode 100644
index 000000000..57029f708
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-b.rs
@@ -0,0 +1,13 @@
+//! This is a client of the `a` crate defined in `svn-a-base.rs`. The
+//! rpass and cfail tests (such as `run-pass/svh-add-comment.rs`) use
+//! it by swapping in a different object code library crate built from
+//! some variant of `svn-a-base.rs`, and then we are checking if the
+//! compiler properly ignores or accepts the change, based on whether
+//! the change could affect the downstream crate content or not
+//! (#14132).
+
+#![crate_name = "b"]
+
+extern crate a;
+
+pub fn foo() { assert_eq!(a::foo::<()>(0), 3); }
diff --git a/src/test/ui/svh/auxiliary/svh-uta-base.rs b/src/test/ui/svh/auxiliary/svh-uta-base.rs
new file mode 100644
index 000000000..221a096e0
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-uta-base.rs
@@ -0,0 +1,22 @@
+//! "svh-uta-trait.rs" is checking that we detect a
+//! change from `use foo::TraitB` to use `foo::TraitB` in the hash
+//! (SVH) computation (#14132), since that will affect method
+//! resolution.
+//!
+//! This is the upstream crate.
+
+#![crate_name = "uta"]
+
+mod traits {
+ pub trait TraitA { fn val(&self) -> isize { 2 } }
+ pub trait TraitB { fn val(&self) -> isize { 3 } }
+}
+
+impl traits::TraitA for () {}
+impl traits::TraitB for () {}
+
+pub fn foo<T>(_: isize) -> isize {
+ use traits::TraitA;
+ let v = ();
+ v.val()
+}
diff --git a/src/test/ui/svh/auxiliary/svh-uta-change-use-trait.rs b/src/test/ui/svh/auxiliary/svh-uta-change-use-trait.rs
new file mode 100644
index 000000000..823d29571
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-uta-change-use-trait.rs
@@ -0,0 +1,22 @@
+//! "svh-uta-trait.rs" is checking that we detect a
+//! change from `use foo::TraitB` to use `foo::TraitB` in the hash
+//! (SVH) computation (#14132), since that will affect method
+//! resolution.
+//!
+//! This is the upstream crate.
+
+#![crate_name = "uta"]
+
+mod traits {
+ pub trait TraitA { fn val(&self) -> isize { 2 } }
+ pub trait TraitB { fn val(&self) -> isize { 3 } }
+}
+
+impl traits::TraitA for () {}
+impl traits::TraitB for () {}
+
+pub fn foo<T>(_: isize) -> isize {
+ use traits::TraitB;
+ let v = ();
+ v.val()
+}
diff --git a/src/test/ui/svh/auxiliary/svh-utb.rs b/src/test/ui/svh/auxiliary/svh-utb.rs
new file mode 100644
index 000000000..a03e29dce
--- /dev/null
+++ b/src/test/ui/svh/auxiliary/svh-utb.rs
@@ -0,0 +1,12 @@
+//! "svh-uta-trait.rs" is checking that we detect a
+//! change from `use foo::TraitB` to use `foo::TraitB` in the hash
+//! (SVH) computation (#14132), since that will affect method
+//! resolution.
+//!
+//! This is the downstream crate.
+
+#![crate_name = "utb"]
+
+extern crate uta;
+
+pub fn foo() { assert_eq!(uta::foo::<()>(0), 3); }