Fix value suggestion for array in generic context
This commit is contained in:
parent
d6ac50e547
commit
e4c71f1fd8
@ -22,6 +22,7 @@
|
|||||||
#![feature(box_patterns)]
|
#![feature(box_patterns)]
|
||||||
#![feature(control_flow_enum)]
|
#![feature(control_flow_enum)]
|
||||||
#![feature(extract_if)]
|
#![feature(extract_if)]
|
||||||
|
#![feature(if_let_guard)]
|
||||||
#![feature(let_chains)]
|
#![feature(let_chains)]
|
||||||
#![feature(option_take_if)]
|
#![feature(option_take_if)]
|
||||||
#![feature(never_type)]
|
#![feature(never_type)]
|
||||||
|
@ -4583,11 +4583,9 @@ fn ty_kind_suggestion(&self, param_env: ty::ParamEnv<'tcx>, ty: Ty<'tcx>) -> Opt
|
|||||||
format!("&{}{ty}", mutability.prefix_str())
|
format!("&{}{ty}", mutability.prefix_str())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ty::Array(ty, len) => format!(
|
ty::Array(ty, len) if let Some(len) = len.try_eval_target_usize(tcx, param_env) => {
|
||||||
"[{}; {}]",
|
format!("[{}; {}]", self.ty_kind_suggestion(param_env, *ty)?, len)
|
||||||
self.ty_kind_suggestion(param_env, *ty)?,
|
}
|
||||||
len.eval_target_usize(tcx, ty::ParamEnv::reveal_all()),
|
|
||||||
),
|
|
||||||
ty::Tuple(tys) => format!(
|
ty::Tuple(tys) => format!(
|
||||||
"({})",
|
"({})",
|
||||||
tys.iter()
|
tys.iter()
|
||||||
|
8
tests/ui/consts/value-suggestion-ice-123906.rs
Normal file
8
tests/ui/consts/value-suggestion-ice-123906.rs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fn as_chunks<const N: usize>() -> [u8; N] {
|
||||||
|
loop {
|
||||||
|
break;
|
||||||
|
//~^ ERROR mismatched types
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
18
tests/ui/consts/value-suggestion-ice-123906.stderr
Normal file
18
tests/ui/consts/value-suggestion-ice-123906.stderr
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
error[E0308]: mismatched types
|
||||||
|
--> $DIR/value-suggestion-ice-123906.rs:3:9
|
||||||
|
|
|
||||||
|
LL | fn as_chunks<const N: usize>() -> [u8; N] {
|
||||||
|
| ------- expected `[u8; ]` because of this return type
|
||||||
|
LL | loop {
|
||||||
|
| ---- this loop is expected to be of type `[u8; N]`
|
||||||
|
LL | break;
|
||||||
|
| ^^^^^ expected `[u8; N]`, found `()`
|
||||||
|
|
|
||||||
|
help: give the `break` a value of the expected type
|
||||||
|
|
|
||||||
|
LL | break value;
|
||||||
|
| +++++
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0308`.
|
Loading…
Reference in New Issue
Block a user