fix [type error] for error E0029 and E0277

check explicitly for the type references error
if ty.references_error() is true change the error to be err.delay_as_bug()
and prevent the error E0029 and E0277 from emitting out
this fix #105946
This commit is contained in:
Yiming Lei 2023-01-05 09:12:37 -08:00
parent df756439df
commit 10dbcf0630
5 changed files with 75 additions and 4 deletions

View file

@ -0,0 +1,12 @@
fn digit() -> str {
return {};
//~^ ERROR: mismatched types [E0308]
}
fn main() {
let [_y..] = [box 1, box 2];
//~^ ERROR: cannot find value `_y` in this scope [E0425]
//~| ERROR: `X..` patterns in slices are experimental [E0658]
//~| ERROR: box expression syntax is experimental; you can call `Box::new` instead [E0658]
//~| ERROR: box expression syntax is experimental; you can call `Box::new` instead [E0658]
//~| ERROR: pattern requires 1 element but array has 2 [E0527]
}

View file

@ -0,0 +1,49 @@
error[E0425]: cannot find value `_y` in this scope
--> $DIR/issue-105946.rs:6:10
|
LL | let [_y..] = [box 1, box 2];
| ^^ not found in this scope
error[E0658]: `X..` patterns in slices are experimental
--> $DIR/issue-105946.rs:6:10
|
LL | let [_y..] = [box 1, box 2];
| ^^^^
|
= note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
= help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
error[E0658]: box expression syntax is experimental; you can call `Box::new` instead
--> $DIR/issue-105946.rs:6:19
|
LL | let [_y..] = [box 1, box 2];
| ^^^^^
|
= note: see issue #49733 <https://github.com/rust-lang/rust/issues/49733> for more information
= help: add `#![feature(box_syntax)]` to the crate attributes to enable
error[E0658]: box expression syntax is experimental; you can call `Box::new` instead
--> $DIR/issue-105946.rs:6:26
|
LL | let [_y..] = [box 1, box 2];
| ^^^^^
|
= note: see issue #49733 <https://github.com/rust-lang/rust/issues/49733> for more information
= help: add `#![feature(box_syntax)]` to the crate attributes to enable
error[E0308]: mismatched types
--> $DIR/issue-105946.rs:2:10
|
LL | return {};
| ^^ expected `str`, found `()`
error[E0527]: pattern requires 1 element but array has 2
--> $DIR/issue-105946.rs:6:9
|
LL | let [_y..] = [box 1, box 2];
| ^^^^^^ expected 2 elements
error: aborting due to 6 previous errors
Some errors have detailed explanations: E0308, E0425, E0527, E0658.
For more information about an error, try `rustc --explain E0308`.