]> git.lizzy.rs Git - rust.git/commitdiff
Rollup merge of #106043 - c410-f3r:moar-errors, r=petrochenkov
authornils <48135649+Nilstrieb@users.noreply.github.com>
Fri, 23 Dec 2022 17:02:14 +0000 (18:02 +0100)
committerGitHub <noreply@github.com>
Fri, 23 Dec 2022 17:02:14 +0000 (18:02 +0100)
Move tests

r? ``@petrochenkov``

* 6470 is an ancient LLVM compilation bug
* 22375 to typeck because of https://github.com/rust-lang/rust/pull/23013

42 files changed:
src/test/ui/fn/issue-3044.rs [new file with mode: 0644]
src/test/ui/fn/issue-3044.stderr [new file with mode: 0644]
src/test/ui/fn/issue-3904.rs [new file with mode: 0644]
src/test/ui/issues/auxiliary/issue-30535.rs [deleted file]
src/test/ui/issues/issue-18118-2.rs [deleted file]
src/test/ui/issues/issue-18118-2.stderr [deleted file]
src/test/ui/issues/issue-18118.rs [deleted file]
src/test/ui/issues/issue-18118.stderr [deleted file]
src/test/ui/issues/issue-22375.rs [deleted file]
src/test/ui/issues/issue-25385.rs [deleted file]
src/test/ui/issues/issue-25385.stderr [deleted file]
src/test/ui/issues/issue-3044.rs [deleted file]
src/test/ui/issues/issue-3044.stderr [deleted file]
src/test/ui/issues/issue-30535.rs [deleted file]
src/test/ui/issues/issue-30535.stderr [deleted file]
src/test/ui/issues/issue-36381.rs [deleted file]
src/test/ui/issues/issue-3904.rs [deleted file]
src/test/ui/issues/issue-39559-2.rs [deleted file]
src/test/ui/issues/issue-39559-2.stderr [deleted file]
src/test/ui/issues/issue-39559.rs [deleted file]
src/test/ui/issues/issue-39559.stderr [deleted file]
src/test/ui/issues/issue-52557.rs [deleted file]
src/test/ui/issues/issue-5530.rs [deleted file]
src/test/ui/issues/issue-6470.rs [deleted file]
src/test/ui/late-bound-lifetimes/issue-36381.rs [new file with mode: 0644]
src/test/ui/macros/issue-25385.rs [new file with mode: 0644]
src/test/ui/macros/issue-25385.stderr [new file with mode: 0644]
src/test/ui/match/issue-5530.rs [new file with mode: 0644]
src/test/ui/resolve/auxiliary/issue-30535.rs [new file with mode: 0644]
src/test/ui/resolve/issue-30535.rs [new file with mode: 0644]
src/test/ui/resolve/issue-30535.stderr [new file with mode: 0644]
src/test/ui/resolve/issue-39559-2.rs [new file with mode: 0644]
src/test/ui/resolve/issue-39559-2.stderr [new file with mode: 0644]
src/test/ui/resolve/issue-39559.rs [new file with mode: 0644]
src/test/ui/resolve/issue-39559.stderr [new file with mode: 0644]
src/test/ui/static/issue-18118-2.rs [new file with mode: 0644]
src/test/ui/static/issue-18118-2.stderr [new file with mode: 0644]
src/test/ui/static/issue-18118.rs [new file with mode: 0644]
src/test/ui/static/issue-18118.stderr [new file with mode: 0644]
src/test/ui/test-attrs/issue-52557.rs [new file with mode: 0644]
src/test/ui/typeck/issue-22375.rs [new file with mode: 0644]
src/tools/tidy/src/ui_tests.rs

diff --git a/src/test/ui/fn/issue-3044.rs b/src/test/ui/fn/issue-3044.rs
new file mode 100644 (file)
index 0000000..7c626a0
--- /dev/null
@@ -0,0 +1,6 @@
+fn main() {
+    let needlesArr: Vec<char> = vec!['a', 'f'];
+    needlesArr.iter().fold(|x, y| {
+        //~^ ERROR this function takes 2 arguments but 1 argument was supplied
+    });
+}
diff --git a/src/test/ui/fn/issue-3044.stderr b/src/test/ui/fn/issue-3044.stderr
new file mode 100644 (file)
index 0000000..1232b83
--- /dev/null
@@ -0,0 +1,21 @@
+error[E0061]: this function takes 2 arguments but 1 argument was supplied
+  --> $DIR/issue-3044.rs:3:23
+   |
+LL |       needlesArr.iter().fold(|x, y| {
+   |  _______________________^^^^-
+LL | |
+LL | |     });
+   | |______- an argument is missing
+   |
+note: associated function defined here
+  --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+help: provide the argument
+   |
+LL ~     needlesArr.iter().fold(|x, y| {
+LL +
+LL ~     }, /* f */);
+   |
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0061`.
diff --git a/src/test/ui/fn/issue-3904.rs b/src/test/ui/fn/issue-3904.rs
new file mode 100644 (file)
index 0000000..7beb91a
--- /dev/null
@@ -0,0 +1,25 @@
+// run-pass
+fn example_err(prog: &str, arg: &str) {
+    println!("{}: {}", prog, arg)
+}
+
+fn exit<F>(print: F, prog: &str, arg: &str) where F: FnOnce(&str, &str) {
+    print(prog, arg);
+}
+
+struct X<F> where F: FnOnce(&str, &str) {
+    err: F,
+}
+
+impl<F> X<F> where F: FnOnce(&str, &str) {
+    pub fn boom(self) {
+        exit(self.err, "prog", "arg");
+    }
+}
+
+pub fn main(){
+    let val = X {
+        err: example_err,
+    };
+    val.boom();
+}
diff --git a/src/test/ui/issues/auxiliary/issue-30535.rs b/src/test/ui/issues/auxiliary/issue-30535.rs
deleted file mode 100644 (file)
index 3608d4a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#![crate_type="lib"]
-
-pub enum Foo {
-    FooV { data: () }
-}
diff --git a/src/test/ui/issues/issue-18118-2.rs b/src/test/ui/issues/issue-18118-2.rs
deleted file mode 100644 (file)
index f712a2e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-pub fn main() {
-    const z: &'static isize = {
-        static p: isize = 3;
-        &p //~ ERROR constants cannot refer to statics
-    };
-}
diff --git a/src/test/ui/issues/issue-18118-2.stderr b/src/test/ui/issues/issue-18118-2.stderr
deleted file mode 100644 (file)
index 4fc3ca7..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0013]: constants cannot refer to statics
-  --> $DIR/issue-18118-2.rs:4:10
-   |
-LL |         &p
-   |          ^
-   |
-   = help: consider extracting the value of the `static` to a `const`, and referring to that
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0013`.
diff --git a/src/test/ui/issues/issue-18118.rs b/src/test/ui/issues/issue-18118.rs
deleted file mode 100644 (file)
index f58a3de..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-pub fn main() {
-    const z: &'static isize = {
-        let p = 3;
-        &p //~ ERROR `p` does not live long enough
-    };
-}
diff --git a/src/test/ui/issues/issue-18118.stderr b/src/test/ui/issues/issue-18118.stderr
deleted file mode 100644 (file)
index 49798a1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0597]: `p` does not live long enough
-  --> $DIR/issue-18118.rs:4:9
-   |
-LL |         &p
-   |         ^^
-   |         |
-   |         borrowed value does not live long enough
-   |         using this value as a constant requires that `p` is borrowed for `'static`
-LL |     };
-   |     - `p` dropped here while still borrowed
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/issues/issue-22375.rs b/src/test/ui/issues/issue-22375.rs
deleted file mode 100644 (file)
index 21a1a4c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-// check-pass
-trait A<T: A<T>> {}
-
-fn main() {}
diff --git a/src/test/ui/issues/issue-25385.rs b/src/test/ui/issues/issue-25385.rs
deleted file mode 100644 (file)
index ea042a6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-macro_rules! foo {
-    ($e:expr) => { $e.foo() }
-    //~^ ERROR no method named `foo` found
-}
-
-fn main() {
-    let a = 1i32;
-    foo!(a);
-
-    foo!(1i32.foo());
-    //~^ ERROR no method named `foo` found
-}
diff --git a/src/test/ui/issues/issue-25385.stderr b/src/test/ui/issues/issue-25385.stderr
deleted file mode 100644 (file)
index 39dbdd7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0599]: no method named `foo` found for type `i32` in the current scope
-  --> $DIR/issue-25385.rs:2:23
-   |
-LL |     ($e:expr) => { $e.foo() }
-   |                       ^^^ method not found in `i32`
-...
-LL |     foo!(a);
-   |     ------- in this macro invocation
-   |
-   = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error[E0599]: no method named `foo` found for type `i32` in the current scope
-  --> $DIR/issue-25385.rs:10:15
-   |
-LL |     foo!(1i32.foo());
-   |               ^^^ method not found in `i32`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0599`.
diff --git a/src/test/ui/issues/issue-3044.rs b/src/test/ui/issues/issue-3044.rs
deleted file mode 100644 (file)
index 7c626a0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
-    let needlesArr: Vec<char> = vec!['a', 'f'];
-    needlesArr.iter().fold(|x, y| {
-        //~^ ERROR this function takes 2 arguments but 1 argument was supplied
-    });
-}
diff --git a/src/test/ui/issues/issue-3044.stderr b/src/test/ui/issues/issue-3044.stderr
deleted file mode 100644 (file)
index 1232b83..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0061]: this function takes 2 arguments but 1 argument was supplied
-  --> $DIR/issue-3044.rs:3:23
-   |
-LL |       needlesArr.iter().fold(|x, y| {
-   |  _______________________^^^^-
-LL | |
-LL | |     });
-   | |______- an argument is missing
-   |
-note: associated function defined here
-  --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
-help: provide the argument
-   |
-LL ~     needlesArr.iter().fold(|x, y| {
-LL +
-LL ~     }, /* f */);
-   |
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0061`.
diff --git a/src/test/ui/issues/issue-30535.rs b/src/test/ui/issues/issue-30535.rs
deleted file mode 100644 (file)
index d48f00d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-// aux-build:issue-30535.rs
-
-extern crate issue_30535 as foo;
-
-fn bar(
-    _: foo::Foo::FooV //~ ERROR expected type, found variant `foo::Foo::FooV`
-) {}
-
-fn main() {}
diff --git a/src/test/ui/issues/issue-30535.stderr b/src/test/ui/issues/issue-30535.stderr
deleted file mode 100644 (file)
index e369293..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0573]: expected type, found variant `foo::Foo::FooV`
-  --> $DIR/issue-30535.rs:6:8
-   |
-LL |     _: foo::Foo::FooV
-   |        ^^^^^^^^^^^^^^
-   |        |
-   |        not a type
-   |        help: try using the variant's enum: `foo::Foo`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0573`.
diff --git a/src/test/ui/issues/issue-36381.rs b/src/test/ui/issues/issue-36381.rs
deleted file mode 100644 (file)
index 7db56f1..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// run-pass
-// Regression test for #36381. The monomorphization collector was asserting that
-// there are no projection types, but the `<&str as
-// StreamOnce>::Position` projection contained a late-bound region,
-// and we don't currently normalize in that case until the function is
-// actually invoked.
-
-pub trait StreamOnce {
-    type Position;
-}
-
-impl<'a> StreamOnce for &'a str {
-    type Position = usize;
-}
-
-pub fn parser<F>(_: F) {
-}
-
-fn follow(_: &str) -> <&str as StreamOnce>::Position {
-    panic!()
-}
-
-fn main() {
-    parser(follow);
-}
diff --git a/src/test/ui/issues/issue-3904.rs b/src/test/ui/issues/issue-3904.rs
deleted file mode 100644 (file)
index 7beb91a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// run-pass
-fn example_err(prog: &str, arg: &str) {
-    println!("{}: {}", prog, arg)
-}
-
-fn exit<F>(print: F, prog: &str, arg: &str) where F: FnOnce(&str, &str) {
-    print(prog, arg);
-}
-
-struct X<F> where F: FnOnce(&str, &str) {
-    err: F,
-}
-
-impl<F> X<F> where F: FnOnce(&str, &str) {
-    pub fn boom(self) {
-        exit(self.err, "prog", "arg");
-    }
-}
-
-pub fn main(){
-    let val = X {
-        err: example_err,
-    };
-    val.boom();
-}
diff --git a/src/test/ui/issues/issue-39559-2.rs b/src/test/ui/issues/issue-39559-2.rs
deleted file mode 100644 (file)
index 07d3a82..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-trait Dim {
-    fn dim() -> usize;
-}
-
-enum Dim3 {}
-
-impl Dim for Dim3 {
-    fn dim() -> usize {
-        3
-    }
-}
-
-fn main() {
-    let array: [usize; Dim3::dim()]
-    //~^ ERROR E0015
-        = [0; Dim3::dim()];
-        //~^ ERROR E0015
-}
diff --git a/src/test/ui/issues/issue-39559-2.stderr b/src/test/ui/issues/issue-39559-2.stderr
deleted file mode 100644 (file)
index ea27e7b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0015]: cannot call non-const fn `<Dim3 as Dim>::dim` in constants
-  --> $DIR/issue-39559-2.rs:14:24
-   |
-LL |     let array: [usize; Dim3::dim()]
-   |                        ^^^^^^^^^^^
-   |
-   = note: calls in constants are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: cannot call non-const fn `<Dim3 as Dim>::dim` in constants
-  --> $DIR/issue-39559-2.rs:16:15
-   |
-LL |         = [0; Dim3::dim()];
-   |               ^^^^^^^^^^^
-   |
-   = note: calls in constants are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/src/test/ui/issues/issue-39559.rs b/src/test/ui/issues/issue-39559.rs
deleted file mode 100644 (file)
index 58d2594..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-trait Dim {
-    fn dim() -> usize;
-}
-
-enum Dim3 {}
-
-impl Dim for Dim3 {
-    fn dim() -> usize {
-        3
-    }
-}
-
-pub struct Vector<T, D: Dim> {
-    entries: [T; D::dim()],
-    //~^ ERROR generic parameters may not be used
-    _dummy: D,
-}
-
-fn main() {}
diff --git a/src/test/ui/issues/issue-39559.stderr b/src/test/ui/issues/issue-39559.stderr
deleted file mode 100644 (file)
index 7626f82..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-error: generic parameters may not be used in const operations
-  --> $DIR/issue-39559.rs:14:18
-   |
-LL |     entries: [T; D::dim()],
-   |                  ^^^^^^ cannot perform const operation using `D`
-   |
-   = note: type parameters may not be used in const expressions
-   = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/issues/issue-52557.rs b/src/test/ui/issues/issue-52557.rs
deleted file mode 100644 (file)
index 09f7a8c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// run-pass
-#![allow(unused_imports)]
-// This test checks for namespace pollution by private tests.
-// Tests used to marked as public causing name conflicts with normal
-// functions only in test builds.
-
-// compile-flags: --test
-
-mod a {
-    pub fn foo() -> bool {
-        true
-    }
-}
-
-mod b {
-    #[test]
-    fn foo() {
-        local_name(); // ensure the local name still works
-    }
-
-    #[test]
-    fn local_name() {}
-}
-
-use a::*;
-use b::*;
-
-pub fn conflict() {
-    let _: bool = foo();
-}
diff --git a/src/test/ui/issues/issue-5530.rs b/src/test/ui/issues/issue-5530.rs
deleted file mode 100644 (file)
index 72731cb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-
-enum Enum {
-    Foo { foo: usize },
-    Bar { bar: usize }
-}
-
-fn fun1(e1: &Enum, e2: &Enum) -> usize {
-    match (e1, e2) {
-        (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
-        (&Enum::Foo { foo: _ }, &Enum::Bar { bar: _ }) => 1,
-        (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
-        (&Enum::Bar { bar: _ }, &Enum::Foo { foo: _ }) => 3,
-    }
-}
-
-fn fun2(e1: &Enum, e2: &Enum) -> usize {
-    match (e1, e2) {
-        (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
-        (&Enum::Foo { foo: _ }, _              ) => 1,
-        (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
-        (&Enum::Bar { bar: _ }, _              ) => 3,
-    }
-}
-
-pub fn main() {
-    let foo = Enum::Foo { foo: 1 };
-    let bar = Enum::Bar { bar: 1 };
-
-    assert_eq!(fun1(&foo, &foo), 0);
-    assert_eq!(fun1(&foo, &bar), 1);
-    assert_eq!(fun1(&bar, &bar), 2);
-    assert_eq!(fun1(&bar, &foo), 3);
-
-    assert_eq!(fun2(&foo, &foo), 0);
-    assert_eq!(fun2(&foo, &bar), 1); // fun2 returns 0
-    assert_eq!(fun2(&bar, &bar), 2);
-    assert_eq!(fun2(&bar, &foo), 3); // fun2 returns 2
-}
diff --git a/src/test/ui/issues/issue-6470.rs b/src/test/ui/issues/issue-6470.rs
deleted file mode 100644 (file)
index 8c6192a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-// build-pass
-#![allow(dead_code)]
-#![allow(improper_ctypes)]
-// pretty-expanded FIXME #23616
-#![allow(non_snake_case)]
-
-pub mod Bar {
-    pub struct Foo {
-        v: isize,
-    }
-
-    extern "C" {
-        pub fn foo(v: *const Foo) -> Foo;
-    }
-}
-
-pub fn main() {}
diff --git a/src/test/ui/late-bound-lifetimes/issue-36381.rs b/src/test/ui/late-bound-lifetimes/issue-36381.rs
new file mode 100644 (file)
index 0000000..7db56f1
--- /dev/null
@@ -0,0 +1,25 @@
+// run-pass
+// Regression test for #36381. The monomorphization collector was asserting that
+// there are no projection types, but the `<&str as
+// StreamOnce>::Position` projection contained a late-bound region,
+// and we don't currently normalize in that case until the function is
+// actually invoked.
+
+pub trait StreamOnce {
+    type Position;
+}
+
+impl<'a> StreamOnce for &'a str {
+    type Position = usize;
+}
+
+pub fn parser<F>(_: F) {
+}
+
+fn follow(_: &str) -> <&str as StreamOnce>::Position {
+    panic!()
+}
+
+fn main() {
+    parser(follow);
+}
diff --git a/src/test/ui/macros/issue-25385.rs b/src/test/ui/macros/issue-25385.rs
new file mode 100644 (file)
index 0000000..ea042a6
--- /dev/null
@@ -0,0 +1,12 @@
+macro_rules! foo {
+    ($e:expr) => { $e.foo() }
+    //~^ ERROR no method named `foo` found
+}
+
+fn main() {
+    let a = 1i32;
+    foo!(a);
+
+    foo!(1i32.foo());
+    //~^ ERROR no method named `foo` found
+}
diff --git a/src/test/ui/macros/issue-25385.stderr b/src/test/ui/macros/issue-25385.stderr
new file mode 100644 (file)
index 0000000..39dbdd7
--- /dev/null
@@ -0,0 +1,20 @@
+error[E0599]: no method named `foo` found for type `i32` in the current scope
+  --> $DIR/issue-25385.rs:2:23
+   |
+LL |     ($e:expr) => { $e.foo() }
+   |                       ^^^ method not found in `i32`
+...
+LL |     foo!(a);
+   |     ------- in this macro invocation
+   |
+   = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: no method named `foo` found for type `i32` in the current scope
+  --> $DIR/issue-25385.rs:10:15
+   |
+LL |     foo!(1i32.foo());
+   |               ^^^ method not found in `i32`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0599`.
diff --git a/src/test/ui/match/issue-5530.rs b/src/test/ui/match/issue-5530.rs
new file mode 100644 (file)
index 0000000..72731cb
--- /dev/null
@@ -0,0 +1,40 @@
+// run-pass
+#![allow(dead_code)]
+
+enum Enum {
+    Foo { foo: usize },
+    Bar { bar: usize }
+}
+
+fn fun1(e1: &Enum, e2: &Enum) -> usize {
+    match (e1, e2) {
+        (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
+        (&Enum::Foo { foo: _ }, &Enum::Bar { bar: _ }) => 1,
+        (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
+        (&Enum::Bar { bar: _ }, &Enum::Foo { foo: _ }) => 3,
+    }
+}
+
+fn fun2(e1: &Enum, e2: &Enum) -> usize {
+    match (e1, e2) {
+        (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
+        (&Enum::Foo { foo: _ }, _              ) => 1,
+        (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
+        (&Enum::Bar { bar: _ }, _              ) => 3,
+    }
+}
+
+pub fn main() {
+    let foo = Enum::Foo { foo: 1 };
+    let bar = Enum::Bar { bar: 1 };
+
+    assert_eq!(fun1(&foo, &foo), 0);
+    assert_eq!(fun1(&foo, &bar), 1);
+    assert_eq!(fun1(&bar, &bar), 2);
+    assert_eq!(fun1(&bar, &foo), 3);
+
+    assert_eq!(fun2(&foo, &foo), 0);
+    assert_eq!(fun2(&foo, &bar), 1); // fun2 returns 0
+    assert_eq!(fun2(&bar, &bar), 2);
+    assert_eq!(fun2(&bar, &foo), 3); // fun2 returns 2
+}
diff --git a/src/test/ui/resolve/auxiliary/issue-30535.rs b/src/test/ui/resolve/auxiliary/issue-30535.rs
new file mode 100644 (file)
index 0000000..3608d4a
--- /dev/null
@@ -0,0 +1,5 @@
+#![crate_type="lib"]
+
+pub enum Foo {
+    FooV { data: () }
+}
diff --git a/src/test/ui/resolve/issue-30535.rs b/src/test/ui/resolve/issue-30535.rs
new file mode 100644 (file)
index 0000000..d48f00d
--- /dev/null
@@ -0,0 +1,9 @@
+// aux-build:issue-30535.rs
+
+extern crate issue_30535 as foo;
+
+fn bar(
+    _: foo::Foo::FooV //~ ERROR expected type, found variant `foo::Foo::FooV`
+) {}
+
+fn main() {}
diff --git a/src/test/ui/resolve/issue-30535.stderr b/src/test/ui/resolve/issue-30535.stderr
new file mode 100644 (file)
index 0000000..e369293
--- /dev/null
@@ -0,0 +1,12 @@
+error[E0573]: expected type, found variant `foo::Foo::FooV`
+  --> $DIR/issue-30535.rs:6:8
+   |
+LL |     _: foo::Foo::FooV
+   |        ^^^^^^^^^^^^^^
+   |        |
+   |        not a type
+   |        help: try using the variant's enum: `foo::Foo`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0573`.
diff --git a/src/test/ui/resolve/issue-39559-2.rs b/src/test/ui/resolve/issue-39559-2.rs
new file mode 100644 (file)
index 0000000..07d3a82
--- /dev/null
@@ -0,0 +1,18 @@
+trait Dim {
+    fn dim() -> usize;
+}
+
+enum Dim3 {}
+
+impl Dim for Dim3 {
+    fn dim() -> usize {
+        3
+    }
+}
+
+fn main() {
+    let array: [usize; Dim3::dim()]
+    //~^ ERROR E0015
+        = [0; Dim3::dim()];
+        //~^ ERROR E0015
+}
diff --git a/src/test/ui/resolve/issue-39559-2.stderr b/src/test/ui/resolve/issue-39559-2.stderr
new file mode 100644 (file)
index 0000000..ea27e7b
--- /dev/null
@@ -0,0 +1,19 @@
+error[E0015]: cannot call non-const fn `<Dim3 as Dim>::dim` in constants
+  --> $DIR/issue-39559-2.rs:14:24
+   |
+LL |     let array: [usize; Dim3::dim()]
+   |                        ^^^^^^^^^^^
+   |
+   = note: calls in constants are limited to constant functions, tuple structs and tuple variants
+
+error[E0015]: cannot call non-const fn `<Dim3 as Dim>::dim` in constants
+  --> $DIR/issue-39559-2.rs:16:15
+   |
+LL |         = [0; Dim3::dim()];
+   |               ^^^^^^^^^^^
+   |
+   = note: calls in constants are limited to constant functions, tuple structs and tuple variants
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0015`.
diff --git a/src/test/ui/resolve/issue-39559.rs b/src/test/ui/resolve/issue-39559.rs
new file mode 100644 (file)
index 0000000..58d2594
--- /dev/null
@@ -0,0 +1,19 @@
+trait Dim {
+    fn dim() -> usize;
+}
+
+enum Dim3 {}
+
+impl Dim for Dim3 {
+    fn dim() -> usize {
+        3
+    }
+}
+
+pub struct Vector<T, D: Dim> {
+    entries: [T; D::dim()],
+    //~^ ERROR generic parameters may not be used
+    _dummy: D,
+}
+
+fn main() {}
diff --git a/src/test/ui/resolve/issue-39559.stderr b/src/test/ui/resolve/issue-39559.stderr
new file mode 100644 (file)
index 0000000..7626f82
--- /dev/null
@@ -0,0 +1,11 @@
+error: generic parameters may not be used in const operations
+  --> $DIR/issue-39559.rs:14:18
+   |
+LL |     entries: [T; D::dim()],
+   |                  ^^^^^^ cannot perform const operation using `D`
+   |
+   = note: type parameters may not be used in const expressions
+   = help: use `#![feature(generic_const_exprs)]` to allow generic const expressions
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/static/issue-18118-2.rs b/src/test/ui/static/issue-18118-2.rs
new file mode 100644 (file)
index 0000000..f712a2e
--- /dev/null
@@ -0,0 +1,6 @@
+pub fn main() {
+    const z: &'static isize = {
+        static p: isize = 3;
+        &p //~ ERROR constants cannot refer to statics
+    };
+}
diff --git a/src/test/ui/static/issue-18118-2.stderr b/src/test/ui/static/issue-18118-2.stderr
new file mode 100644 (file)
index 0000000..4fc3ca7
--- /dev/null
@@ -0,0 +1,11 @@
+error[E0013]: constants cannot refer to statics
+  --> $DIR/issue-18118-2.rs:4:10
+   |
+LL |         &p
+   |          ^
+   |
+   = help: consider extracting the value of the `static` to a `const`, and referring to that
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0013`.
diff --git a/src/test/ui/static/issue-18118.rs b/src/test/ui/static/issue-18118.rs
new file mode 100644 (file)
index 0000000..f58a3de
--- /dev/null
@@ -0,0 +1,6 @@
+pub fn main() {
+    const z: &'static isize = {
+        let p = 3;
+        &p //~ ERROR `p` does not live long enough
+    };
+}
diff --git a/src/test/ui/static/issue-18118.stderr b/src/test/ui/static/issue-18118.stderr
new file mode 100644 (file)
index 0000000..49798a1
--- /dev/null
@@ -0,0 +1,14 @@
+error[E0597]: `p` does not live long enough
+  --> $DIR/issue-18118.rs:4:9
+   |
+LL |         &p
+   |         ^^
+   |         |
+   |         borrowed value does not live long enough
+   |         using this value as a constant requires that `p` is borrowed for `'static`
+LL |     };
+   |     - `p` dropped here while still borrowed
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/ui/test-attrs/issue-52557.rs b/src/test/ui/test-attrs/issue-52557.rs
new file mode 100644 (file)
index 0000000..09f7a8c
--- /dev/null
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(unused_imports)]
+// This test checks for namespace pollution by private tests.
+// Tests used to marked as public causing name conflicts with normal
+// functions only in test builds.
+
+// compile-flags: --test
+
+mod a {
+    pub fn foo() -> bool {
+        true
+    }
+}
+
+mod b {
+    #[test]
+    fn foo() {
+        local_name(); // ensure the local name still works
+    }
+
+    #[test]
+    fn local_name() {}
+}
+
+use a::*;
+use b::*;
+
+pub fn conflict() {
+    let _: bool = foo();
+}
diff --git a/src/test/ui/typeck/issue-22375.rs b/src/test/ui/typeck/issue-22375.rs
new file mode 100644 (file)
index 0000000..21a1a4c
--- /dev/null
@@ -0,0 +1,4 @@
+// check-pass
+trait A<T: A<T>> {}
+
+fn main() {}
index 19e2528bb240a3534ccb00d360f3c7879e5e768d..f746bdeffd7ca18b5c731506086a87d15645bc1a 100644 (file)
@@ -10,7 +10,7 @@
 const ENTRY_LIMIT: usize = 1000;
 // FIXME: The following limits should be reduced eventually.
 const ROOT_ENTRY_LIMIT: usize = 939;
-const ISSUES_ENTRY_LIMIT: usize = 2040;
+const ISSUES_ENTRY_LIMIT: usize = 2020;
 
 fn check_entries(path: &Path, bad: &mut bool) {
     for dir in Walk::new(&path.join("test/ui")) {