Skip to content

Commit

Permalink
Fix function calls with int64 params (#663)
Browse files Browse the repository at this point in the history
Fixes #661
  • Loading branch information
antonmedv authored May 27, 2024
1 parent b45ee4f commit eca9bd7
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 1 deletion.
1 change: 0 additions & 1 deletion compiler/compiler.go
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,6 @@ func (c *compiler) IntegerNode(node *ast.IntegerNode) {
}
c.emitPush(int32(node.Value))
case reflect.Int64:
panic(fmt.Sprintf("constant %d overflows int64", node.Value))
c.emitPush(int64(node.Value))
case reflect.Uint:
if node.Value < 0 {
Expand Down
22 changes: 22 additions & 0 deletions compiler/compiler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -628,3 +628,25 @@ func TestCompile_optimizes_jumps(t *testing.T) {
})
}
}

func TestCompile_IntegerArgsFunc(t *testing.T) {
env := mock.Env{}
tests := []struct{ code string }{
{"FuncInt(0)"},
{"FuncInt8(0)"},
{"FuncInt16(0)"},
{"FuncInt32(0)"},
{"FuncInt64(0)"},
{"FuncUint(0)"},
{"FuncUint8(0)"},
{"FuncUint16(0)"},
{"FuncUint32(0)"},
{"FuncUint64(0)"},
}
for _, tt := range tests {
t.Run(tt.code, func(t *testing.T) {
_, err := expr.Compile(tt.code, expr.Env(env))
require.NoError(t, err)
})
}
}
40 changes: 40 additions & 0 deletions test/mock/mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,46 @@ func (p Env) FuncTyped(_ string) int {
return 2023
}

func (p Env) FuncInt(_ int) int {
return 0
}

func (p Env) FuncUint(_ uint) int {
return 0
}

func (p Env) FuncInt8(_ float64) int {
return 0
}

func (p Env) FuncInt16(_ int16) int {
return 0
}

func (p Env) FuncInt32(_ int32) int {
return 0
}

func (p Env) FuncInt64(_ int64) int {
return 0
}

func (p Env) FuncUint8(_ uint8) int {
return 0
}

func (p Env) FuncUint16(_ uint16) int {
return 0
}

func (p Env) FuncUint32(_ uint32) int {
return 0
}

func (p Env) FuncUint64(_ uint64) int {
return 0
}

func (p Env) TimeEqualString(a time.Time, s string) bool {
return a.Format("2006-01-02") == s
}
Expand Down

0 comments on commit eca9bd7

Please sign in to comment.