File tree Expand file tree Collapse file tree 3 files changed +166
-102
lines changed
Expand file tree Collapse file tree 3 files changed +166
-102
lines changed Original file line number Diff line number Diff line change @@ -1449,6 +1449,66 @@ func TestIssue154(t *testing.T) {
14491449 }
14501450}
14511451
1452+ func TestIssue270 (t * testing.T ) {
1453+ env := map [string ]interface {}{
1454+ "int8" : int8 (1 ),
1455+ "int16" : int16 (3 ),
1456+ "int32" : int32 (5 ),
1457+ "int64" : int64 (7 ),
1458+ "uint8" : uint8 (11 ),
1459+ "uint16" : uint16 (13 ),
1460+ "uint32" : uint32 (17 ),
1461+ "uint64" : uint64 (19 ),
1462+ "int8a" : uint (23 ),
1463+ "int8b" : uint (29 ),
1464+ "int16a" : uint (31 ),
1465+ "int16b" : uint (37 ),
1466+ "int32a" : uint (41 ),
1467+ "int32b" : uint (43 ),
1468+ "int64a" : uint (47 ),
1469+ "int64b" : uint (53 ),
1470+ "uint8a" : uint (59 ),
1471+ "uint8b" : uint (61 ),
1472+ "uint16a" : uint (67 ),
1473+ "uint16b" : uint (71 ),
1474+ "uint32a" : uint (73 ),
1475+ "uint32b" : uint (79 ),
1476+ "uint64a" : uint (83 ),
1477+ "uint64b" : uint (89 ),
1478+ "float32a" : float32 (97 ),
1479+ "float32b" : float32 (101 ),
1480+ "float64a" : float64 (103 ),
1481+ "float64b" : float64 (107 ),
1482+ }
1483+ for _ , each := range []struct {
1484+ input string
1485+ }{
1486+ {"int8 / int16" },
1487+ {"int32 / int64" },
1488+ {"uint8 / uint16" },
1489+ {"uint32 / uint64" },
1490+ {"int8 / uint64" },
1491+ {"int64 / uint8" },
1492+ {"int8a / int8b" },
1493+ {"int16a / int16b" },
1494+ {"int32a / int32b" },
1495+ {"int64a / int64b" },
1496+ {"uint8a / uint8b" },
1497+ {"uint16a / uint16b" },
1498+ {"uint32a / uint32b" },
1499+ {"uint64a / uint64b" },
1500+ {"float32a / float32b" },
1501+ {"float64a / float64b" },
1502+ } {
1503+ p , err := expr .Compile (each .input , expr .Env (env ))
1504+ require .NoError (t , err )
1505+
1506+ out , err := expr .Run (p , env )
1507+ require .NoError (t , err )
1508+ require .IsType (t , float64 (0 ), out )
1509+ }
1510+ }
1511+
14521512// Mock types
14531513type mockEnv struct {
14541514 Any interface {}
Original file line number Diff line number Diff line change @@ -66,6 +66,10 @@ func cases(op string, noFloat bool) string {
6666 t = "float64"
6767 }
6868 echo (`case %v:` , b )
69+ if op == "/" {
70+ echo (`return float64(x) / float64(y)` )
71+ continue
72+ }
6973 if i == j {
7074 echo (`return x %v y` , op )
7175 }
You can’t perform that action at this time.
0 commit comments