mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +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:
|
For example, the code above can be fixed to:
|
||||||
|
|
||||||
```
|
```
|
||||||
enum Foo {
|
type U32 = u32;
|
||||||
FirstValue(i32)
|
let t: U32 = 4;
|
||||||
}
|
```
|
||||||
|
|
||||||
fn main() {
|
or:
|
||||||
let u = Foo::FirstValue(0i32);
|
|
||||||
|
```
|
||||||
let t = 4;
|
struct U32 { value: u32 }
|
||||||
}
|
let t = U32 { value: 4 };
|
||||||
```
|
```
|
||||||
|
@ -494,6 +494,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||||||
|
|
||||||
Some((variant, ty))
|
Some((variant, ty))
|
||||||
} else {
|
} else {
|
||||||
|
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!(
|
struct_span_err!(
|
||||||
self.tcx.sess,
|
self.tcx.sess,
|
||||||
path_span,
|
path_span,
|
||||||
@ -503,6 +511,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||||||
)
|
)
|
||||||
.span_label(path_span, "not a struct")
|
.span_label(path_span, "not a struct")
|
||||||
.emit();
|
.emit();
|
||||||
|
}
|
||||||
|
}
|
||||||
None
|
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