diff options
| author | Mel <einebeere@gmail.com> | 2022-05-18 02:22:59 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-05-18 02:22:59 +0200 |
| commit | 3ca0bfd5bb1c0da28b19ebdd755160b142dad27c (patch) | |
| tree | af534e81a4397af0a2ee1c48e8c208c7bdc3a8e3 /pkg/lang/vm | |
| parent | 0a7927ed8257857c8d114387f12844312f6da51c (diff) | |
| download | jinx-3ca0bfd5bb1c0da28b19ebdd755160b142dad27c.tar.zst jinx-3ca0bfd5bb1c0da28b19ebdd755160b142dad27c.zip | |
Fix type assertions for add and sub exec
Diffstat (limited to 'pkg/lang/vm')
| -rw-r--r-- | pkg/lang/vm/exec.go | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/pkg/lang/vm/exec.go b/pkg/lang/vm/exec.go index 241e5f8..f50d60b 100644 --- a/pkg/lang/vm/exec.go +++ b/pkg/lang/vm/exec.go @@ -45,29 +45,33 @@ func (vm *VM) execAdd() { switch x.Type().Kind { case value.IntType: - xv := x.Data().(int64) + xv := int64(x.Data().(value.IntData)) switch y.Type().Kind { case value.IntType: - res = value.NewInt(xv + y.Data().(int64)) + yv := int64(y.Data().(value.IntData)) + res = value.NewInt(xv + yv) case value.FloatType: - res = value.NewFloat(float64(xv) + y.Data().(float64)) + yv := float64(y.Data().(value.FloatData)) + res = value.NewFloat(float64(xv) + yv) default: panic("invalid operand types") } case value.FloatType: - xv := x.Data().(float64) + xv := float64(x.Data().(value.FloatData)) switch y.Type().Kind { case value.IntType: - res = value.NewFloat(xv + float64(y.Data().(int64))) + yv := float64(y.Data().(value.IntData)) + res = value.NewFloat(xv + yv) case value.FloatType: - res = value.NewFloat(xv + y.Data().(float64)) + yv := float64(y.Data().(value.FloatData)) + res = value.NewFloat(xv + yv) default: panic("invalid operand types") } case value.StringType: switch y.Type().Kind { case value.StringType: - res = value.NewString(x.Data().(string) + y.Data().(string)) + res = value.NewString(string(x.Data().(value.StringData)) + string(y.Data().(value.StringData))) default: panic("invalid operand types") } @@ -88,22 +92,26 @@ func (vm *VM) execSub() { switch x.Type().Kind { case value.IntType: - xv := x.Data().(int64) + xv := int64(x.Data().(value.IntData)) switch y.Type().Kind { case value.IntType: - res = value.NewInt(xv - y.Data().(int64)) + yv := int64(y.Data().(value.IntData)) + res = value.NewInt(xv - yv) case value.FloatType: - res = value.NewFloat(float64(xv) - y.Data().(float64)) + yv := float64(y.Data().(value.FloatData)) + res = value.NewFloat(float64(xv) - yv) default: panic("invalid operand types") } case value.FloatType: - xv := x.Data().(float64) + xv := float64(x.Data().(value.FloatData)) switch y.Type().Kind { case value.IntType: - res = value.NewFloat(xv - float64(y.Data().(int64))) + yv := float64(y.Data().(value.IntData)) + res = value.NewFloat(xv - yv) case value.FloatType: - res = value.NewFloat(xv - y.Data().(float64)) + yv := float64(y.Data().(value.FloatData)) + res = value.NewFloat(xv - yv) default: panic("invalid operand types") } |
