mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-28 12:14:43 +00:00
fix: unintended behavior for collections
This commit is contained in:
parent
daf01f3cf2
commit
7d7849b493
9 changed files with 66 additions and 17 deletions
|
@ -2661,13 +2661,27 @@ impl PyCodeGenerator {
|
|||
self.emit_push_null();
|
||||
self.emit_load_name_instr(Identifier::public("Str"));
|
||||
}
|
||||
other if other.is_array() => {
|
||||
self.emit_push_null();
|
||||
self.emit_load_name_instr(Identifier::public("Array"));
|
||||
}
|
||||
_ => {
|
||||
wrapped = false;
|
||||
}
|
||||
other => match &other.qual_name()[..] {
|
||||
"Array" => {
|
||||
self.emit_push_null();
|
||||
self.emit_load_name_instr(Identifier::public("Array"));
|
||||
}
|
||||
"Dict" => {
|
||||
self.emit_push_null();
|
||||
self.emit_load_name_instr(Identifier::public("Dict"));
|
||||
}
|
||||
"Set" => {
|
||||
self.emit_push_null();
|
||||
self.emit_load_name_instr(Identifier::public("Set"));
|
||||
}
|
||||
"Tuple" => {
|
||||
self.emit_push_null();
|
||||
self.emit_load_name_instr(Identifier::public("tuple"));
|
||||
}
|
||||
_ => {
|
||||
wrapped = false;
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
match expr {
|
||||
|
|
|
@ -2160,19 +2160,19 @@ impl Context {
|
|||
generic_array,
|
||||
vis.clone(),
|
||||
Const,
|
||||
Some(FUNC_LIST),
|
||||
Some(ARRAY),
|
||||
);
|
||||
self.register_builtin_type(arr_t, array_, vis.clone(), Const, Some(FUNC_LIST));
|
||||
self.register_builtin_type(arr_t, array_, vis.clone(), Const, Some(ARRAY));
|
||||
self.register_builtin_type(
|
||||
mono(GENERIC_SET),
|
||||
generic_set,
|
||||
vis.clone(),
|
||||
Const,
|
||||
Some(FUNC_SET),
|
||||
Some(SET),
|
||||
);
|
||||
self.register_builtin_type(set_t, set_, vis.clone(), Const, Some(FUNC_SET));
|
||||
self.register_builtin_type(g_dict_t, generic_dict, vis.clone(), Const, Some(FUNC_DICT));
|
||||
self.register_builtin_type(dict_t, dict_, vis.clone(), Const, Some(FUNC_DICT));
|
||||
self.register_builtin_type(set_t, set_, vis.clone(), Const, Some(SET));
|
||||
self.register_builtin_type(g_dict_t, generic_dict, vis.clone(), Const, Some(DICT));
|
||||
self.register_builtin_type(dict_t, dict_, vis.clone(), Const, Some(DICT));
|
||||
self.register_builtin_type(mono(BYTES), bytes, vis.clone(), Const, Some(BYTES));
|
||||
self.register_builtin_type(
|
||||
mono(GENERIC_TUPLE),
|
||||
|
|
10
crates/erg_compiler/lib/std.d/Set.d.er
Normal file
10
crates/erg_compiler/lib/std.d/Set.d.er
Normal file
|
@ -0,0 +1,10 @@
|
|||
.Set: ClassType
|
||||
.Set.
|
||||
copy: |T|(self: .Set(T)) -> .Set(T)
|
||||
differece: |T|(self: .Set(T), other: .Set(T)) -> .Set(T)
|
||||
intersection: |T|(self: .Set(T), other: .Set(T)) -> .Set(T)
|
||||
isdisjoint: |T|(self: .Set(T), other: .Set(T)) -> Bool
|
||||
issubset: |T|(self: .Set(T), other: .Set(T)) -> Bool
|
||||
issuperset: |T|(self: .Set(T), other: .Set(T)) -> Bool
|
||||
symmetric_difference: |T|(self: .Set(T), other: .Set(T)) -> .Set(T)
|
||||
union: |T|(self: .Set(T), other: .Set(T)) -> .Set(T)
|
2
crates/erg_compiler/lib/std/_erg_dict.py
Normal file
2
crates/erg_compiler/lib/std/_erg_dict.py
Normal file
|
@ -0,0 +1,2 @@
|
|||
class Dict(dict):
|
||||
pass
|
2
crates/erg_compiler/lib/std/_erg_set.py
Normal file
2
crates/erg_compiler/lib/std/_erg_set.py
Normal file
|
@ -0,0 +1,2 @@
|
|||
class Set(set):
|
||||
pass
|
|
@ -14,6 +14,8 @@ from _erg_bool import Bool
|
|||
from _erg_bytes import Bytes
|
||||
from _erg_str import Str, StrMut
|
||||
from _erg_array import Array
|
||||
from _erg_dict import Dict
|
||||
from _erg_set import Set
|
||||
from _erg_in_operator import in_operator
|
||||
from _erg_mutate_operator import mutate_operator
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue