about summary refs log tree commit diff
path: root/pkg
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-05-18 02:22:59 +0200
committerMel <einebeere@gmail.com>2022-05-18 02:22:59 +0200
commit3ca0bfd5bb1c0da28b19ebdd755160b142dad27c (patch)
treeaf534e81a4397af0a2ee1c48e8c208c7bdc3a8e3 /pkg
parent0a7927ed8257857c8d114387f12844312f6da51c (diff)
downloadjinx-3ca0bfd5bb1c0da28b19ebdd755160b142dad27c.tar.zst
jinx-3ca0bfd5bb1c0da28b19ebdd755160b142dad27c.zip
Fix type assertions for add and sub exec
Diffstat (limited to 'pkg')
-rw-r--r--pkg/lang/vm/exec.go34
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")
 		}