Skip to content

Commit 1840c2c

Browse files
committed
Add Never to TypeName
1 parent 499d492 commit 1840c2c

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

chalk-ir/src/debug.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ impl<I: Interner> Debug for TypeName<I> {
167167
TypeName::FnDef(fn_def) => write!(fmt, "{:?}", fn_def),
168168
TypeName::Raw(mutability) => write!(fmt, "{:?}", mutability),
169169
TypeName::Ref(mutability) => write!(fmt, "{:?}", mutability),
170+
TypeName::Never => write!(fmt, "Never"),
170171
TypeName::Error => write!(fmt, "{{error}}"),
171172
}
172173
}

chalk-ir/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ pub enum TypeName<I: Interner> {
175175
/// the string primitive type
176176
Str,
177177

178+
/// the never type `!`
179+
Never,
180+
178181
/// This can be used to represent an error, e.g. during name resolution of a type.
179182
/// Chalk itself will not produce this, just pass it through when given.
180183
Error,

chalk-solve/src/clauses.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -404,20 +404,19 @@ fn match_type_name<I: Interner>(
404404
.db
405405
.associated_ty_data(type_id)
406406
.to_program_clauses(builder),
407-
TypeName::Scalar(_) => {
408-
builder.push_fact(WellFormed::Ty(application.clone().intern(interner)))
409-
}
410-
TypeName::Str => builder.push_fact(WellFormed::Ty(application.clone().intern(interner))),
411-
TypeName::Tuple(_) => {
412-
builder.push_fact(WellFormed::Ty(application.clone().intern(interner)))
413-
}
414-
TypeName::Slice => builder.push_fact(WellFormed::Ty(application.clone().intern(interner))),
415-
TypeName::Raw(_) => builder.push_fact(WellFormed::Ty(application.clone().intern(interner))),
416-
TypeName::Ref(_) => builder.push_fact(WellFormed::Ty(application.clone().intern(interner))),
417407
TypeName::FnDef(fn_def_id) => builder
418408
.db
419409
.fn_def_datum(fn_def_id)
420410
.to_program_clauses(builder),
411+
TypeName::Tuple(_)
412+
| TypeName::Scalar(_)
413+
| TypeName::Str
414+
| TypeName::Slice
415+
| TypeName::Raw(_)
416+
| TypeName::Ref(_)
417+
| TypeName::Never => {
418+
builder.push_fact(WellFormed::Ty(application.clone().intern(interner)))
419+
}
421420
}
422421
}
423422

0 commit comments

Comments
 (0)