]> git.lizzy.rs Git - rust.git/commitdiff
Move resolve diagnostic instability to compile-fail
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>
Mon, 17 Jul 2017 08:16:08 +0000 (10:16 +0200)
committerOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>
Mon, 17 Jul 2017 08:16:08 +0000 (10:16 +0200)
The produced paths aren't stable between builds, since
reporting paths inside resolve, before resolve is finished
might produce paths resolved to type aliases instead of
the concrete type.

Compile-fail tests can match just parts of messages, so they
don't "suffer" from this issue.

This is just a workaround, the instability should be fixed
in the future.

src/test/compile-fail/issue-35675.rs [new file with mode: 0644]
src/test/ui/issue-35675.rs
src/test/ui/issue-35675.stderr

diff --git a/src/test/compile-fail/issue-35675.rs b/src/test/compile-fail/issue-35675.rs
new file mode 100644 (file)
index 0000000..c09e56c
--- /dev/null
@@ -0,0 +1,67 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// these two HELPs are actually in a new line between this line and the `enum Fruit` line
+enum Fruit { //~ HELP possible candidate is found in another module, you can import it into scope
+    //~^ HELP possible candidate is found in another module, you can import it into scope
+    Apple(i64),
+    Orange(i64),
+}
+
+fn should_return_fruit() -> Apple {
+    //~^ ERROR cannot find type `Apple` in this scope
+    //~| NOTE not found in this scope
+    //~| HELP you can try using the variant's enum
+    Apple(5)
+    //~^ ERROR cannot find function `Apple` in this scope
+    //~| NOTE not found in this scope
+}
+
+fn should_return_fruit_too() -> Fruit::Apple {
+    //~^ ERROR expected type, found variant `Fruit::Apple`
+    //~| HELP you can try using the variant's enum
+    //~| NOTE not a type
+    Apple(5)
+    //~^ ERROR cannot find function `Apple` in this scope
+    //~| NOTE not found in this scope
+}
+
+fn foo() -> Ok {
+    //~^ ERROR expected type, found variant `Ok`
+    //~| NOTE not a type
+    //~| HELP there is an enum variant
+    //~| HELP there is an enum variant
+    Ok(())
+}
+
+fn bar() -> Variant3 {
+    //~^ ERROR cannot find type `Variant3` in this scope
+    //~| HELP you can try using the variant's enum
+    //~| NOTE not found in this scope
+}
+
+fn qux() -> Some {
+    //~^ ERROR expected type, found variant `Some`
+    //~| NOTE not a type
+    //~| HELP there is an enum variant
+    //~| HELP there is an enum variant
+    Some(1)
+}
+
+fn main() {}
+
+mod x {
+    enum Enum {
+        Variant1,
+        Variant2(),
+        Variant3(usize),
+        Variant4 {},
+    }
+}
index 001c1f2eddca1e3ccbeabaf58450b6296547847c..391e1f2db5c021d293c5cb77578020abc4066e86 100644 (file)
@@ -33,27 +33,11 @@ fn should_return_fruit_too() -> Fruit::Apple {
     //~| NOTE not found in this scope
 }
 
-fn foo() -> Ok {
-    //~^ ERROR expected type, found variant `Ok`
-    //~| NOTE not a type
-    //~| HELP there is an enum variant
-    //~| HELP there is an enum variant
-    Ok(())
-}
-
 fn bar() -> Variant3 {
     //~^ ERROR cannot find type `Variant3` in this scope
     //~| NOTE not found in this scope
 }
 
-fn qux() -> Some {
-    //~^ ERROR expected type, found variant `Some`
-    //~| NOTE not a type
-    //~| HELP there is an enum variant
-    //~| HELP there is an enum variant
-    Some(1)
-}
-
 fn main() {}
 
 mod x {
index 36fdbe986262c131b940c7d261600bd40ae68c5f..c2c10724646efdbb9de0a4702f6848e7c54c9b76 100644 (file)
@@ -38,32 +38,14 @@ help: possible candidate is found in another module, you can import it into scop
 12 | use Fruit::Apple;
    |
 
-error[E0573]: expected type, found variant `Ok`
-  --> $DIR/issue-35675.rs:36:13
-   |
-36 | fn foo() -> Ok {
-   |             ^^ not a type
-   |
-   = help: there is an enum variant `std::prelude::v1::Ok`, try using `std::prelude::v1`?
-   = help: there is an enum variant `std::result::Result::Ok`, try using `std::result::Result`?
-
 error[E0412]: cannot find type `Variant3` in this scope
-  --> $DIR/issue-35675.rs:44:13
+  --> $DIR/issue-35675.rs:36:13
    |
-44 | fn bar() -> Variant3 {
+36 | fn bar() -> Variant3 {
    |             ^^^^^^^^
    |             |
    |             not found in this scope
    |             help: you can try using the variant's enum: `x::Enum`
 
-error[E0573]: expected type, found variant `Some`
-  --> $DIR/issue-35675.rs:49:13
-   |
-49 | fn qux() -> Some {
-   |             ^^^^ not a type
-   |
-   = help: there is an enum variant `std::option::Option::Some`, try using `std::option::Option`?
-   = help: there is an enum variant `std::prelude::v1::Some`, try using `std::prelude::v1`?
-
-error: aborting due to 7 previous errors
+error: aborting due to 5 previous errors