mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Fix panic
This commit is contained in:
parent
8397734cfe
commit
7c423f5b88
@ -149,7 +149,9 @@ impl TypeVariableTable {
|
|||||||
|
|
||||||
fn fallback_value(&self, iv: InferenceVar, kind: TyVariableKind) -> Ty {
|
fn fallback_value(&self, iv: InferenceVar, kind: TyVariableKind) -> Ty {
|
||||||
match kind {
|
match kind {
|
||||||
_ if self.inner[iv.index() as usize].diverging => TyKind::Never,
|
_ if self.inner.get(iv.index() as usize).map_or(false, |data| data.diverging) => {
|
||||||
|
TyKind::Never
|
||||||
|
}
|
||||||
TyVariableKind::General => TyKind::Error,
|
TyVariableKind::General => TyKind::Error,
|
||||||
TyVariableKind::Integer => TyKind::Scalar(Scalar::Int(IntTy::I32)),
|
TyVariableKind::Integer => TyKind::Scalar(Scalar::Int(IntTy::I32)),
|
||||||
TyVariableKind::Float => TyKind::Scalar(Scalar::Float(FloatTy::F64)),
|
TyVariableKind::Float => TyKind::Scalar(Scalar::Float(FloatTy::F64)),
|
||||||
@ -205,6 +207,7 @@ impl<'a> InferenceTable<'a> {
|
|||||||
fn new_var(&mut self, kind: TyVariableKind, diverging: bool) -> Ty {
|
fn new_var(&mut self, kind: TyVariableKind, diverging: bool) -> Ty {
|
||||||
let var = self.var_unification_table.new_variable(UniverseIndex::ROOT);
|
let var = self.var_unification_table.new_variable(UniverseIndex::ROOT);
|
||||||
// Chalk might have created some type variables for its own purposes that we don't know about...
|
// Chalk might have created some type variables for its own purposes that we don't know about...
|
||||||
|
// TODO refactor this?
|
||||||
self.type_variable_table.inner.extend(
|
self.type_variable_table.inner.extend(
|
||||||
(0..1 + var.index() as usize - self.type_variable_table.inner.len())
|
(0..1 + var.index() as usize - self.type_variable_table.inner.len())
|
||||||
.map(|_| TypeVariableData { diverging: false }),
|
.map(|_| TypeVariableData { diverging: false }),
|
||||||
|
Loading…
Reference in New Issue
Block a user