mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-03 18:29:00 +00:00
Fix Readable
type
This commit is contained in:
parent
9dd2da9628
commit
99ced41c87
3 changed files with 12 additions and 8 deletions
|
@ -218,7 +218,7 @@ fn convert_to_python_attr(class: &str, uniq_obj_name: Option<&str>, name: Str) -
|
|||
("Array!", _, "push!") => Str::ever("append"),
|
||||
("Complex" | "Float" | "Ratio" | "Int" | "Nat" | "Bool", _, "Real") => Str::ever("real"),
|
||||
("Complex" | "Float" | "Ratio" | "Int" | "Nat" | "Bool", _, "Imag") => Str::ever("imag"),
|
||||
("File!", _, "read") => Str::ever("read"),
|
||||
("File!", _, "read!") => Str::ever("read"),
|
||||
(_, _, "__new__") => Str::ever("__call__"),
|
||||
("StringIO!", _, "getvalue!") => Str::ever("getvalue"),
|
||||
("Module", Some("importlib"), "reload!") => Str::ever("reload"),
|
||||
|
|
|
@ -224,9 +224,9 @@ impl Context {
|
|||
let mut mutizable = Self::builtin_mono_trait("Mutizable", 2);
|
||||
mutizable.register_builtin_decl("MutType!", Type, Public);
|
||||
let pathlike = Self::builtin_mono_trait("PathLike", 2);
|
||||
let mut readable = Self::builtin_mono_trait("Readable", 2);
|
||||
let mut readable = Self::builtin_mono_trait("Readable!", 2);
|
||||
let t_read = pr_met(
|
||||
ref_(mono_q("Self")),
|
||||
ref_mut(mono_q("Self"), None),
|
||||
vec![],
|
||||
None,
|
||||
vec![param_t("n", Int)],
|
||||
|
@ -234,7 +234,7 @@ impl Context {
|
|||
);
|
||||
let t_read = quant(
|
||||
t_read,
|
||||
set! { subtypeof(mono_q("Self"), builtin_mono("Readable")) },
|
||||
set! { subtypeof(mono_q("Self"), builtin_mono("Readable!")) },
|
||||
);
|
||||
readable.register_builtin_decl("read!", t_read, Public);
|
||||
let mut in_ = Self::builtin_poly_trait("In", vec![PS::t("T", NonDefault)], 2);
|
||||
|
@ -360,7 +360,7 @@ impl Context {
|
|||
self.register_builtin_type(builtin_mono("Immutizable"), immutizable, Const);
|
||||
self.register_builtin_type(builtin_mono("Mutizable"), mutizable, Const);
|
||||
self.register_builtin_type(builtin_mono("PathLike"), pathlike, Const);
|
||||
self.register_builtin_type(builtin_mono("Readable"), readable, Const);
|
||||
self.register_builtin_type(builtin_mono("Readable!"), readable, Const);
|
||||
self.register_builtin_type(
|
||||
builtin_poly("Input", vec![ty_tp(mono_q("T"))]),
|
||||
input,
|
||||
|
@ -1364,11 +1364,11 @@ impl Context {
|
|||
str_mut_mutable,
|
||||
);
|
||||
let mut file_mut = Self::builtin_mono_class("File!", 2);
|
||||
let mut file_mut_readable = Self::builtin_methods("Readable", 1);
|
||||
let mut file_mut_readable = Self::builtin_methods("Readable!", 1);
|
||||
file_mut_readable.register_builtin_impl(
|
||||
"read!",
|
||||
pr_met(
|
||||
ref_(builtin_mono("File!")),
|
||||
ref_mut(builtin_mono("File!"), None),
|
||||
vec![],
|
||||
None,
|
||||
vec![param_t("n", Int)],
|
||||
|
@ -1379,7 +1379,7 @@ impl Context {
|
|||
);
|
||||
file_mut.register_trait(
|
||||
builtin_mono("File!"),
|
||||
builtin_mono("Readable"),
|
||||
builtin_mono("Readable!"),
|
||||
file_mut_readable,
|
||||
);
|
||||
let array_t = builtin_poly("Array", vec![ty_tp(mono_q("T")), mono_q_tp("N")]);
|
||||
|
|
|
@ -559,9 +559,13 @@ impl Context {
|
|||
let loc = call.loc();
|
||||
let t = call.signature_mut_t().unwrap();
|
||||
*t = self.deref_tyvar(mem::take(t), Covariant, loc)?;
|
||||
self.resolve_expr_t(&mut call.obj)?;
|
||||
for arg in call.args.pos_args.iter_mut() {
|
||||
self.resolve_expr_t(&mut arg.expr)?;
|
||||
}
|
||||
if let Some(var_args) = &mut call.args.var_args {
|
||||
self.resolve_expr_t(&mut var_args.expr)?;
|
||||
}
|
||||
for arg in call.args.kw_args.iter_mut() {
|
||||
self.resolve_expr_t(&mut arg.expr)?;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue