Fixed type error messages

This commit is contained in:
pca006132 2022-02-22 17:20:11 +08:00
parent bb7c0a2d79
commit d3cb5d6e52
3 changed files with 6 additions and 3 deletions
nac3artiq/src
nac3core/src/typecheck
type_error.rs
type_inferencer

View File

@ -371,7 +371,7 @@ impl Nac3 {
.extract()
.unwrap(),
exception: id_fn
.call1((builtins_mod.getattr("tuple").unwrap(),))
.call1((builtins_mod.getattr("Exception").unwrap(),))
.unwrap()
.extract()
.unwrap(),

View File

@ -155,7 +155,7 @@ impl<'a> Display for DisplayTypeError<'a> {
}
NoSuchField(name, t) => {
let t = self.unifier.stringify_with_notes(*t, &mut notes);
write!(f, "`{}::{}` field does not exist", t, name)
write!(f, "`{}::{}` field/method does not exist", t, name)
}
TupleIndexOutOfBounds { index, len } => {
write!(

View File

@ -925,7 +925,10 @@ impl<'a> Inferencer<'a> {
(Some((_, false)), true) => {
report_error(&format!("Field {} should be immutable", attr), value.location)
}
(None, _) => report_error(&format!("No such field {}", attr), value.location),
(None, _) => {
let t = self.unifier.stringify(ty);
report_error(&format!("`{}::{}` field/method does not exist", t, attr), value.location)
},
}
} else {
let attr_ty = self.unifier.get_dummy_var().0;