Auto merge of #4780 - flip1995:ice_4775, r=phansch
Fix ICE #4775 Fixes #4775 changelog: Fix ICE with const_generics
This commit is contained in:
commit
338f5e6801
@ -1993,7 +1993,13 @@ fn is_ref_iterable_type(cx: &LateContext<'_, '_>, e: &Expr) -> bool {
|
||||
fn is_iterable_array<'tcx>(ty: Ty<'tcx>, cx: &LateContext<'_, 'tcx>) -> bool {
|
||||
// IntoIterator is currently only implemented for array sizes <= 32 in rustc
|
||||
match ty.kind {
|
||||
ty::Array(_, n) => (0..=32).contains(&n.eval_usize(cx.tcx, cx.param_env)),
|
||||
ty::Array(_, n) => {
|
||||
if let Some(val) = n.try_eval_usize(cx.tcx, cx.param_env) {
|
||||
(0..=32).contains(&val)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
},
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
14
tests/ui/ice-4775.rs
Normal file
14
tests/ui/ice-4775.rs
Normal file
@ -0,0 +1,14 @@
|
||||
#![feature(const_generics)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
pub struct ArrayWrapper<const N: usize>([usize; N]);
|
||||
|
||||
impl<const N: usize> ArrayWrapper<{ N }> {
|
||||
pub fn ice(&self) {
|
||||
for i in self.0.iter() {
|
||||
println!("{}", i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user