Move resolve diagnostic instability to compile-fail
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.
This commit is contained in:
parent
a9d9a4aab4
commit
eb7f429ea5
67
src/test/compile-fail/issue-35675.rs
Normal file
67
src/test/compile-fail/issue-35675.rs
Normal file
@ -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 {},
|
||||
}
|
||||
}
|
@ -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 {
|
||||
|
@ -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`
|
||||
error[E0412]: cannot find type `Variant3` in this scope
|
||||
--> $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
|
||||
|
|
||||
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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user