@@ -23,6 +23,12 @@ func ToUint(val super.Value, typUint super.Type) (uint64, bool) {
2323 v := val .Float ()
2424 min , max , check := FromFloatOverflowCheck (val .Type (), typUint )
2525 return uint64 (v ), ! check || v >= min && v <= max
26+ case id == super .IDBool :
27+ var v uint64
28+ if val .Bool () {
29+ v = 1
30+ }
31+ return v , true
2632 case id == super .IDString :
2733 v , err := strconv .ParseUint (val .AsString (), 10 , UintBits (typUint ))
2834 return v , err == nil
@@ -45,6 +51,12 @@ func ToInt(val super.Value, typInt super.Type) (int64, bool) {
4551 v := val .Float ()
4652 min , max , check := FromFloatOverflowCheck (val .Type (), typInt )
4753 return int64 (v ), ! check || v >= min && v <= max
54+ case id == super .IDBool :
55+ var v int64
56+ if val .Bool () {
57+ v = 1
58+ }
59+ return v , true
4860 case id == super .IDString :
4961 v , err := strconv .ParseInt (val .AsString (), 10 , IntBits (typInt ))
5062 return v , err == nil
@@ -63,6 +75,10 @@ func ToFloat(val super.Value, typ super.Type) (float64, bool) {
6375 v = float64 (val .Int ())
6476 case super .IsFloat (fromId ):
6577 v = val .Float ()
78+ case fromId == super .IDBool :
79+ if val .Bool () {
80+ v = 1
81+ }
6682 case fromId == super .IDString :
6783 var err error
6884 if v , err = byteconv .ParseFloat64 (val .Bytes ()); err != nil {
0 commit comments