mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Do not issue E0071 if a type error has already been reported
This commit is contained in:
parent
c7dbe7a830
commit
ab83d501a4
@ -15,13 +15,13 @@ form of initializer was used.
|
||||
For example, the code above can be fixed to:
|
||||
|
||||
```
|
||||
enum Foo {
|
||||
FirstValue(i32)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let u = Foo::FirstValue(0i32);
|
||||
|
||||
let t = 4;
|
||||
}
|
||||
type U32 = u32;
|
||||
let t: U32 = 4;
|
||||
```
|
||||
|
||||
or:
|
||||
|
||||
```
|
||||
struct U32 { value: u32 }
|
||||
let t = U32 { value: 4 };
|
||||
```
|
||||
|
@ -494,15 +494,25 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
|
||||
Some((variant, ty))
|
||||
} else {
|
||||
struct_span_err!(
|
||||
self.tcx.sess,
|
||||
path_span,
|
||||
E0071,
|
||||
"expected struct, variant or union type, found {}",
|
||||
ty.sort_string(self.tcx)
|
||||
)
|
||||
.span_label(path_span, "not a struct")
|
||||
.emit();
|
||||
match ty.kind() {
|
||||
ty::Error(_) => {
|
||||
// E0071 might be caused by a spelling error, which will have
|
||||
// already caused an error message and probably a suggestion
|
||||
// elsewhere. Refrain from emitting more unhelpful errors here
|
||||
// (issue #88844).
|
||||
}
|
||||
_ => {
|
||||
struct_span_err!(
|
||||
self.tcx.sess,
|
||||
path_span,
|
||||
E0071,
|
||||
"expected struct, variant or union type, found {}",
|
||||
ty.sort_string(self.tcx)
|
||||
)
|
||||
.span_label(path_span, "not a struct")
|
||||
.emit();
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
}
|
||||
|
14
src/test/ui/typeck/issue-88844.rs
Normal file
14
src/test/ui/typeck/issue-88844.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// Regression test for #88844.
|
||||
|
||||
struct Struct { value: i32 }
|
||||
//~^ NOTE: similarly named struct `Struct` defined here
|
||||
|
||||
impl Stuct {
|
||||
//~^ ERROR: cannot find type `Stuct` in this scope [E0412]
|
||||
//~| HELP: a struct with a similar name exists
|
||||
fn new() -> Self {
|
||||
Self { value: 42 }
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
12
src/test/ui/typeck/issue-88844.stderr
Normal file
12
src/test/ui/typeck/issue-88844.stderr
Normal file
@ -0,0 +1,12 @@
|
||||
error[E0412]: cannot find type `Stuct` in this scope
|
||||
--> $DIR/issue-88844.rs:6:6
|
||||
|
|
||||
LL | struct Struct { value: i32 }
|
||||
| ------------- similarly named struct `Struct` defined here
|
||||
...
|
||||
LL | impl Stuct {
|
||||
| ^^^^^ help: a struct with a similar name exists: `Struct`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0412`.
|
Loading…
Reference in New Issue
Block a user