複数castに対応させる為にもこうするべきだと思う。
val_a op val_b (Example: a + b)
val_a.opfunc(val_b)
val_b.opfunc_r(val_a)
val op type (Example: a + B, cast(B)a)
val.opfunc!(type)()
type.opfunc_r(val)
type op val (Example: A + b)
type.opfunc(val)
val.opfunc_r!(type)()
type_a op type_b (Example: A + B)
type_a.opfunc!(type_b)()
type_b.opfunc_r!(type_a)()
opcast_r2.diff
前回のパッチを改変してこれに対応させてみた。dmdfeでうまく動作してる。