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) {
1449
1449
}
1450
1450
}
1451
1451
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
+
1452
1512
// Mock types
1453
1513
type mockEnv struct {
1454
1514
Any interface {}
Original file line number Diff line number Diff line change @@ -66,6 +66,10 @@ func cases(op string, noFloat bool) string {
66
66
t = "float64"
67
67
}
68
68
echo (`case %v:` , b )
69
+ if op == "/" {
70
+ echo (`return float64(x) / float64(y)` )
71
+ continue
72
+ }
69
73
if i == j {
70
74
echo (`return x %v y` , op )
71
75
}
You can’t perform that action at this time.
0 commit comments