about summary refs log tree commit diff
path: root/tests/ui/issues/issue-5997-outer-generic-parameter
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/issues/issue-5997-outer-generic-parameter')
-rw-r--r--tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.rs10
-rw-r--r--tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.stderr13
-rw-r--r--tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.rs10
-rw-r--r--tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.stderr13
-rw-r--r--tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997.rs15
5 files changed, 61 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.rs b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.rs
new file mode 100644
index 00000000000..0b1857ae3df
--- /dev/null
+++ b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.rs
@@ -0,0 +1,10 @@
+fn f<Z>() -> bool {
+    enum E { V(Z) }
+    //~^ ERROR can't use generic parameters from outer item
+    true
+}
+
+fn main() {
+    let b = f::<isize>();
+    assert!(b);
+}
diff --git a/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.stderr b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.stderr
new file mode 100644
index 00000000000..c0b3cd6de66
--- /dev/null
+++ b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.stderr
@@ -0,0 +1,13 @@
+error[E0401]: can't use generic parameters from outer item
+  --> $DIR/issue-5997-enum.rs:2:16
+   |
+LL | fn f<Z>() -> bool {
+   |      - type parameter from outer item
+LL |     enum E { V(Z) }
+   |           -    ^ use of generic parameter from outer item
+   |           |
+   |           help: try introducing a local generic parameter here: `<Z>`
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0401`.
diff --git a/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.rs b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.rs
new file mode 100644
index 00000000000..19d994b0dfb
--- /dev/null
+++ b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.rs
@@ -0,0 +1,10 @@
+fn f<T>() -> bool {
+    struct S(T); //~ ERROR can't use generic parameters from outer item
+
+    true
+}
+
+fn main() {
+    let b = f::<isize>();
+    assert!(b);
+}
diff --git a/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.stderr b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.stderr
new file mode 100644
index 00000000000..670a54894b5
--- /dev/null
+++ b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.stderr
@@ -0,0 +1,13 @@
+error[E0401]: can't use generic parameters from outer item
+  --> $DIR/issue-5997-struct.rs:2:14
+   |
+LL | fn f<T>() -> bool {
+   |      - type parameter from outer item
+LL |     struct S(T);
+   |             -^ use of generic parameter from outer item
+   |             |
+   |             help: try introducing a local generic parameter here: `<T>`
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0401`.
diff --git a/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997.rs b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997.rs
new file mode 100644
index 00000000000..145e3a7928d
--- /dev/null
+++ b/tests/ui/issues/issue-5997-outer-generic-parameter/issue-5997.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+
+fn f<T>() -> bool {
+    enum E<T> { V(T) }
+
+    struct S<T>(T);
+
+    true
+}
+
+fn main() {
+    let b = f::<isize>();
+    assert!(b);
+}