diff --git a/vm/func_types/main.go b/vm/func_types/main.go index fe9802aa..cb4debd3 100644 --- a/vm/func_types/main.go +++ b/vm/func_types/main.go @@ -22,14 +22,21 @@ var types = []any{ new(func() any), new(func() bool), new(func() byte), + new(func() float32), new(func() float64), new(func() int), + new(func() int16), + new(func() int32), new(func() int64), + new(func() int8), new(func() map[string]any), new(func() rune), new(func() string), new(func() uint), + new(func() uint16), + new(func() uint32), new(func() uint64), + new(func() uint8), new(func(Duration) Duration), new(func(Duration) Time), new(func(Time) Duration), @@ -38,6 +45,7 @@ var types = []any{ new(func([]any) any), new(func([]any) map[string]any), new(func([]any, string) string), + new(func([]byte) string), new(func([]string, string) string), new(func(any) []any), new(func(any) any), @@ -54,21 +62,31 @@ var types = []any{ new(func(bool) float64), new(func(bool) int), new(func(bool) string), + new(func(bool, bool) bool), + new(func(float32) float64), new(func(float64) bool), + new(func(float64) float32), new(func(float64) float64), new(func(float64) int), new(func(float64) string), + new(func(float64, float64) bool), new(func(int) bool), new(func(int) float64), new(func(int) int), new(func(int) string), + new(func(int, int) bool), new(func(int, int) int), new(func(int, int) string), + new(func(int16) int32), new(func(int32) float64), + new(func(int32) int), + new(func(int32) int64), new(func(int64) Time), + new(func(int8) int), + new(func(int8) int16), + new(func(string) []byte), new(func(string) []string), new(func(string) bool), - new(func(string) bool), new(func(string) float64), new(func(string) int), new(func(string) string), @@ -77,6 +95,14 @@ var types = []any{ new(func(string, rune) int), new(func(string, string) bool), new(func(string, string) string), + new(func(uint) float64), + new(func(uint) int), + new(func(uint) uint), + new(func(uint16) uint), + new(func(uint32) uint64), + new(func(uint64) float64), + new(func(uint64) int64), + new(func(uint8) byte), } func main() { diff --git a/vm/func_types[generated].go b/vm/func_types[generated].go index 7cb9c8c6..610b4152 100644 --- a/vm/func_types[generated].go +++ b/vm/func_types[generated].go @@ -17,61 +17,87 @@ var FuncTypes = []any{ 7: new(func() interface{}), 8: new(func() bool), 9: new(func() uint8), - 10: new(func() float64), - 11: new(func() int), - 12: new(func() int64), - 13: new(func() map[string]interface{}), + 10: new(func() float32), + 11: new(func() float64), + 12: new(func() int), + 13: new(func() int16), 14: new(func() int32), - 15: new(func() string), - 16: new(func() uint), - 17: new(func() uint64), - 18: new(func(time.Duration) time.Duration), - 19: new(func(time.Duration) time.Time), - 20: new(func(time.Time) time.Duration), - 21: new(func(time.Time) bool), - 22: new(func([]interface{}) []interface{}), - 23: new(func([]interface{}) interface{}), - 24: new(func([]interface{}) map[string]interface{}), - 25: new(func([]interface{}, string) string), - 26: new(func([]string, string) string), - 27: new(func(interface{}) []interface{}), - 28: new(func(interface{}) interface{}), - 29: new(func(interface{}) bool), - 30: new(func(interface{}) float64), - 31: new(func(interface{}) int), - 32: new(func(interface{}) map[string]interface{}), - 33: new(func(interface{}) string), - 34: new(func(interface{}, interface{}) []interface{}), - 35: new(func(interface{}, interface{}) interface{}), - 36: new(func(interface{}, interface{}) bool), - 37: new(func(interface{}, interface{}) string), - 38: new(func(bool) bool), - 39: new(func(bool) float64), - 40: new(func(bool) int), - 41: new(func(bool) string), - 42: new(func(float64) bool), - 43: new(func(float64) float64), - 44: new(func(float64) int), - 45: new(func(float64) string), - 46: new(func(int) bool), - 47: new(func(int) float64), - 48: new(func(int) int), - 49: new(func(int) string), - 50: new(func(int, int) int), - 51: new(func(int, int) string), - 52: new(func(int32) float64), - 53: new(func(int64) time.Time), - 54: new(func(string) []string), - 55: new(func(string) bool), - 56: new(func(string) bool), - 57: new(func(string) float64), - 58: new(func(string) int), - 59: new(func(string) string), - 60: new(func(string, uint8) int), - 61: new(func(string, int) int), - 62: new(func(string, int32) int), - 63: new(func(string, string) bool), - 64: new(func(string, string) string), + 15: new(func() int64), + 16: new(func() int8), + 17: new(func() map[string]interface{}), + 18: new(func() int32), + 19: new(func() string), + 20: new(func() uint), + 21: new(func() uint16), + 22: new(func() uint32), + 23: new(func() uint64), + 24: new(func() uint8), + 25: new(func(time.Duration) time.Duration), + 26: new(func(time.Duration) time.Time), + 27: new(func(time.Time) time.Duration), + 28: new(func(time.Time) bool), + 29: new(func([]interface{}) []interface{}), + 30: new(func([]interface{}) interface{}), + 31: new(func([]interface{}) map[string]interface{}), + 32: new(func([]interface{}, string) string), + 33: new(func([]uint8) string), + 34: new(func([]string, string) string), + 35: new(func(interface{}) []interface{}), + 36: new(func(interface{}) interface{}), + 37: new(func(interface{}) bool), + 38: new(func(interface{}) float64), + 39: new(func(interface{}) int), + 40: new(func(interface{}) map[string]interface{}), + 41: new(func(interface{}) string), + 42: new(func(interface{}, interface{}) []interface{}), + 43: new(func(interface{}, interface{}) interface{}), + 44: new(func(interface{}, interface{}) bool), + 45: new(func(interface{}, interface{}) string), + 46: new(func(bool) bool), + 47: new(func(bool) float64), + 48: new(func(bool) int), + 49: new(func(bool) string), + 50: new(func(bool, bool) bool), + 51: new(func(float32) float64), + 52: new(func(float64) bool), + 53: new(func(float64) float32), + 54: new(func(float64) float64), + 55: new(func(float64) int), + 56: new(func(float64) string), + 57: new(func(float64, float64) bool), + 58: new(func(int) bool), + 59: new(func(int) float64), + 60: new(func(int) int), + 61: new(func(int) string), + 62: new(func(int, int) bool), + 63: new(func(int, int) int), + 64: new(func(int, int) string), + 65: new(func(int16) int32), + 66: new(func(int32) float64), + 67: new(func(int32) int), + 68: new(func(int32) int64), + 69: new(func(int64) time.Time), + 70: new(func(int8) int), + 71: new(func(int8) int16), + 72: new(func(string) []uint8), + 73: new(func(string) []string), + 74: new(func(string) bool), + 75: new(func(string) float64), + 76: new(func(string) int), + 77: new(func(string) string), + 78: new(func(string, uint8) int), + 79: new(func(string, int) int), + 80: new(func(string, int32) int), + 81: new(func(string, string) bool), + 82: new(func(string, string) string), + 83: new(func(uint) float64), + 84: new(func(uint) int), + 85: new(func(uint) uint), + 86: new(func(uint16) uint), + 87: new(func(uint32) uint64), + 88: new(func(uint64) float64), + 89: new(func(uint64) int64), + 90: new(func(uint8) uint8), } func (vm *VM) call(fn any, kind int) any { @@ -95,175 +121,249 @@ func (vm *VM) call(fn any, kind int) any { case 9: return fn.(func() uint8)() case 10: - return fn.(func() float64)() + return fn.(func() float32)() case 11: - return fn.(func() int)() + return fn.(func() float64)() case 12: - return fn.(func() int64)() + return fn.(func() int)() case 13: - return fn.(func() map[string]interface{})() + return fn.(func() int16)() case 14: return fn.(func() int32)() case 15: - return fn.(func() string)() + return fn.(func() int64)() case 16: - return fn.(func() uint)() + return fn.(func() int8)() case 17: - return fn.(func() uint64)() + return fn.(func() map[string]interface{})() case 18: + return fn.(func() int32)() + case 19: + return fn.(func() string)() + case 20: + return fn.(func() uint)() + case 21: + return fn.(func() uint16)() + case 22: + return fn.(func() uint32)() + case 23: + return fn.(func() uint64)() + case 24: + return fn.(func() uint8)() + case 25: arg1 := vm.pop().(time.Duration) return fn.(func(time.Duration) time.Duration)(arg1) - case 19: + case 26: arg1 := vm.pop().(time.Duration) return fn.(func(time.Duration) time.Time)(arg1) - case 20: + case 27: arg1 := vm.pop().(time.Time) return fn.(func(time.Time) time.Duration)(arg1) - case 21: + case 28: arg1 := vm.pop().(time.Time) return fn.(func(time.Time) bool)(arg1) - case 22: + case 29: arg1 := vm.pop().([]interface{}) return fn.(func([]interface{}) []interface{})(arg1) - case 23: + case 30: arg1 := vm.pop().([]interface{}) return fn.(func([]interface{}) interface{})(arg1) - case 24: + case 31: arg1 := vm.pop().([]interface{}) return fn.(func([]interface{}) map[string]interface{})(arg1) - case 25: + case 32: arg2 := vm.pop().(string) arg1 := vm.pop().([]interface{}) return fn.(func([]interface{}, string) string)(arg1, arg2) - case 26: + case 33: + arg1 := vm.pop().([]uint8) + return fn.(func([]uint8) string)(arg1) + case 34: arg2 := vm.pop().(string) arg1 := vm.pop().([]string) return fn.(func([]string, string) string)(arg1, arg2) - case 27: + case 35: arg1 := vm.pop() return fn.(func(interface{}) []interface{})(arg1) - case 28: + case 36: arg1 := vm.pop() return fn.(func(interface{}) interface{})(arg1) - case 29: + case 37: arg1 := vm.pop() return fn.(func(interface{}) bool)(arg1) - case 30: + case 38: arg1 := vm.pop() return fn.(func(interface{}) float64)(arg1) - case 31: + case 39: arg1 := vm.pop() return fn.(func(interface{}) int)(arg1) - case 32: + case 40: arg1 := vm.pop() return fn.(func(interface{}) map[string]interface{})(arg1) - case 33: + case 41: arg1 := vm.pop() return fn.(func(interface{}) string)(arg1) - case 34: + case 42: arg2 := vm.pop() arg1 := vm.pop() return fn.(func(interface{}, interface{}) []interface{})(arg1, arg2) - case 35: + case 43: arg2 := vm.pop() arg1 := vm.pop() return fn.(func(interface{}, interface{}) interface{})(arg1, arg2) - case 36: + case 44: arg2 := vm.pop() arg1 := vm.pop() return fn.(func(interface{}, interface{}) bool)(arg1, arg2) - case 37: + case 45: arg2 := vm.pop() arg1 := vm.pop() return fn.(func(interface{}, interface{}) string)(arg1, arg2) - case 38: + case 46: arg1 := vm.pop().(bool) return fn.(func(bool) bool)(arg1) - case 39: + case 47: arg1 := vm.pop().(bool) return fn.(func(bool) float64)(arg1) - case 40: + case 48: arg1 := vm.pop().(bool) return fn.(func(bool) int)(arg1) - case 41: + case 49: arg1 := vm.pop().(bool) return fn.(func(bool) string)(arg1) - case 42: + case 50: + arg2 := vm.pop().(bool) + arg1 := vm.pop().(bool) + return fn.(func(bool, bool) bool)(arg1, arg2) + case 51: + arg1 := vm.pop().(float32) + return fn.(func(float32) float64)(arg1) + case 52: arg1 := vm.pop().(float64) return fn.(func(float64) bool)(arg1) - case 43: + case 53: + arg1 := vm.pop().(float64) + return fn.(func(float64) float32)(arg1) + case 54: arg1 := vm.pop().(float64) return fn.(func(float64) float64)(arg1) - case 44: + case 55: arg1 := vm.pop().(float64) return fn.(func(float64) int)(arg1) - case 45: + case 56: arg1 := vm.pop().(float64) return fn.(func(float64) string)(arg1) - case 46: + case 57: + arg2 := vm.pop().(float64) + arg1 := vm.pop().(float64) + return fn.(func(float64, float64) bool)(arg1, arg2) + case 58: arg1 := vm.pop().(int) return fn.(func(int) bool)(arg1) - case 47: + case 59: arg1 := vm.pop().(int) return fn.(func(int) float64)(arg1) - case 48: + case 60: arg1 := vm.pop().(int) return fn.(func(int) int)(arg1) - case 49: + case 61: arg1 := vm.pop().(int) return fn.(func(int) string)(arg1) - case 50: + case 62: + arg2 := vm.pop().(int) + arg1 := vm.pop().(int) + return fn.(func(int, int) bool)(arg1, arg2) + case 63: arg2 := vm.pop().(int) arg1 := vm.pop().(int) return fn.(func(int, int) int)(arg1, arg2) - case 51: + case 64: arg2 := vm.pop().(int) arg1 := vm.pop().(int) return fn.(func(int, int) string)(arg1, arg2) - case 52: + case 65: + arg1 := vm.pop().(int16) + return fn.(func(int16) int32)(arg1) + case 66: arg1 := vm.pop().(int32) return fn.(func(int32) float64)(arg1) - case 53: + case 67: + arg1 := vm.pop().(int32) + return fn.(func(int32) int)(arg1) + case 68: + arg1 := vm.pop().(int32) + return fn.(func(int32) int64)(arg1) + case 69: arg1 := vm.pop().(int64) return fn.(func(int64) time.Time)(arg1) - case 54: + case 70: + arg1 := vm.pop().(int8) + return fn.(func(int8) int)(arg1) + case 71: + arg1 := vm.pop().(int8) + return fn.(func(int8) int16)(arg1) + case 72: arg1 := vm.pop().(string) - return fn.(func(string) []string)(arg1) - case 55: + return fn.(func(string) []uint8)(arg1) + case 73: arg1 := vm.pop().(string) - return fn.(func(string) bool)(arg1) - case 56: + return fn.(func(string) []string)(arg1) + case 74: arg1 := vm.pop().(string) return fn.(func(string) bool)(arg1) - case 57: + case 75: arg1 := vm.pop().(string) return fn.(func(string) float64)(arg1) - case 58: + case 76: arg1 := vm.pop().(string) return fn.(func(string) int)(arg1) - case 59: + case 77: arg1 := vm.pop().(string) return fn.(func(string) string)(arg1) - case 60: + case 78: arg2 := vm.pop().(uint8) arg1 := vm.pop().(string) return fn.(func(string, uint8) int)(arg1, arg2) - case 61: + case 79: arg2 := vm.pop().(int) arg1 := vm.pop().(string) return fn.(func(string, int) int)(arg1, arg2) - case 62: + case 80: arg2 := vm.pop().(int32) arg1 := vm.pop().(string) return fn.(func(string, int32) int)(arg1, arg2) - case 63: + case 81: arg2 := vm.pop().(string) arg1 := vm.pop().(string) return fn.(func(string, string) bool)(arg1, arg2) - case 64: + case 82: arg2 := vm.pop().(string) arg1 := vm.pop().(string) return fn.(func(string, string) string)(arg1, arg2) + case 83: + arg1 := vm.pop().(uint) + return fn.(func(uint) float64)(arg1) + case 84: + arg1 := vm.pop().(uint) + return fn.(func(uint) int)(arg1) + case 85: + arg1 := vm.pop().(uint) + return fn.(func(uint) uint)(arg1) + case 86: + arg1 := vm.pop().(uint16) + return fn.(func(uint16) uint)(arg1) + case 87: + arg1 := vm.pop().(uint32) + return fn.(func(uint32) uint64)(arg1) + case 88: + arg1 := vm.pop().(uint64) + return fn.(func(uint64) float64)(arg1) + case 89: + arg1 := vm.pop().(uint64) + return fn.(func(uint64) int64)(arg1) + case 90: + arg1 := vm.pop().(uint8) + return fn.(func(uint8) uint8)(arg1) } panic(fmt.Sprintf("unknown function kind (%v)", kind))