mirror of
https://github.com/google/go-jsonnet.git
synced 2025-09-28 17:01:02 +02:00
Add runtime check for binary +-* operations for numbers
This commit is contained in:
parent
fbde25be21
commit
f00242da42
@ -47,7 +47,7 @@ func builtinPlus(i *interpreter, trace traceElement, x, y value) (value, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return makeValueNumber(left.value + right.value), nil
|
return makeDoubleCheck(i, trace, left.value+right.value)
|
||||||
case *valueString:
|
case *valueString:
|
||||||
right, err := builtinToString(i, trace, y)
|
right, err := builtinToString(i, trace, y)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -82,7 +82,7 @@ func builtinMinus(i *interpreter, trace traceElement, xv, yv value) (value, erro
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return makeValueNumber(x.value - y.value), nil
|
return makeDoubleCheck(i, trace, x.value-y.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func builtinMult(i *interpreter, trace traceElement, xv, yv value) (value, error) {
|
func builtinMult(i *interpreter, trace traceElement, xv, yv value) (value, error) {
|
||||||
@ -94,7 +94,7 @@ func builtinMult(i *interpreter, trace traceElement, xv, yv value) (value, error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return makeValueNumber(x.value * y.value), nil
|
return makeDoubleCheck(i, trace, x.value*y.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func builtinDiv(i *interpreter, trace traceElement, xv, yv value) (value, error) {
|
func builtinDiv(i *interpreter, trace traceElement, xv, yv value) (value, error) {
|
||||||
|
@ -886,7 +886,7 @@ func jsonToValue(i *interpreter, trace traceElement, v interface{}) (value, erro
|
|||||||
case bool:
|
case bool:
|
||||||
return makeValueBoolean(v), nil
|
return makeValueBoolean(v), nil
|
||||||
case float64:
|
case float64:
|
||||||
return makeValueNumber(v), nil
|
return makeDoubleCheck(i, trace, v)
|
||||||
|
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
fieldMap := map[string]value{}
|
fieldMap := map[string]value{}
|
||||||
|
10
testdata/inf_min_number.golden
vendored
Normal file
10
testdata/inf_min_number.golden
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
RUNTIME ERROR: Overflow
|
||||||
|
-------------------------------------------------
|
||||||
|
testdata/inf_min_number:1:1-15 $
|
||||||
|
|
||||||
|
-1e308 - 1e308
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
During evaluation
|
||||||
|
|
||||||
|
|
1
testdata/inf_min_number.jsonnet
vendored
Normal file
1
testdata/inf_min_number.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
-1e308 - 1e308
|
10
testdata/inf_mul_number.golden
vendored
Normal file
10
testdata/inf_mul_number.golden
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
RUNTIME ERROR: Overflow
|
||||||
|
-------------------------------------------------
|
||||||
|
testdata/inf_mul_number:1:1-19 $
|
||||||
|
|
||||||
|
1e300 * 1000000000
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
During evaluation
|
||||||
|
|
||||||
|
|
1
testdata/inf_mul_number.jsonnet
vendored
Normal file
1
testdata/inf_mul_number.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1e300 * 1000000000
|
10
testdata/inf_sum_number.golden
vendored
Normal file
10
testdata/inf_sum_number.golden
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
RUNTIME ERROR: Overflow
|
||||||
|
-------------------------------------------------
|
||||||
|
testdata/inf_sum_number:1:1-14 $
|
||||||
|
|
||||||
|
1e308 + 1e308
|
||||||
|
|
||||||
|
-------------------------------------------------
|
||||||
|
During evaluation
|
||||||
|
|
||||||
|
|
1
testdata/inf_sum_number.jsonnet
vendored
Normal file
1
testdata/inf_sum_number.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1e308 + 1e308
|
Loading…
x
Reference in New Issue
Block a user