added aug assign for primitives

This commit is contained in:
pca006132 2021-01-05 13:21:39 +08:00
parent ff41cdb000
commit 007843c1ef
1 changed files with 16 additions and 1 deletions

View File

@ -17,8 +17,11 @@ fn impl_math(def: &mut TypeDef, ty: &Type) {
result: result.clone(), result: result.clone(),
}; };
def.methods.insert("__add__", fun.clone()); def.methods.insert("__add__", fun.clone());
def.methods.insert("__iadd__", fun.clone());
def.methods.insert("__sub__", fun.clone()); def.methods.insert("__sub__", fun.clone());
def.methods.insert("__isub__", fun.clone());
def.methods.insert("__mul__", fun.clone()); def.methods.insert("__mul__", fun.clone());
def.methods.insert("__imul__", fun.clone());
def.methods.insert( def.methods.insert(
"__neg__", "__neg__",
FnDef { FnDef {
@ -33,9 +36,21 @@ fn impl_math(def: &mut TypeDef, ty: &Type) {
result: Some(PrimitiveType(FLOAT_TYPE).into()), result: Some(PrimitiveType(FLOAT_TYPE).into()),
}, },
); );
if ty.as_ref() == &PrimitiveType(FLOAT_TYPE) {
def.methods.insert(
"__itruediv__",
FnDef {
args: vec![ty.clone()],
result: Some(PrimitiveType(FLOAT_TYPE).into()),
},
);
}
def.methods.insert("__floordiv__", fun.clone()); def.methods.insert("__floordiv__", fun.clone());
def.methods.insert("__ifloordiv__", fun.clone());
def.methods.insert("__mod__", fun.clone()); def.methods.insert("__mod__", fun.clone());
def.methods.insert("__pow__", fun); def.methods.insert("__imod__", fun.clone());
def.methods.insert("__pow__", fun.clone());
def.methods.insert("__ipow__", fun);
} }
fn impl_bits(def: &mut TypeDef, ty: &Type) { fn impl_bits(def: &mut TypeDef, ty: &Type) {