mirror of
https://github.com/google/go-jsonnet.git
synced 2025-09-28 08:51:01 +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 {
|
||||
return nil, err
|
||||
}
|
||||
return makeValueNumber(left.value + right.value), nil
|
||||
return makeDoubleCheck(i, trace, left.value+right.value)
|
||||
case *valueString:
|
||||
right, err := builtinToString(i, trace, y)
|
||||
if err != nil {
|
||||
@ -82,7 +82,7 @@ func builtinMinus(i *interpreter, trace traceElement, xv, yv value) (value, erro
|
||||
if err != nil {
|
||||
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) {
|
||||
@ -94,7 +94,7 @@ func builtinMult(i *interpreter, trace traceElement, xv, yv value) (value, error
|
||||
if err != nil {
|
||||
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) {
|
||||
|
@ -886,7 +886,7 @@ func jsonToValue(i *interpreter, trace traceElement, v interface{}) (value, erro
|
||||
case bool:
|
||||
return makeValueBoolean(v), nil
|
||||
case float64:
|
||||
return makeValueNumber(v), nil
|
||||
return makeDoubleCheck(i, trace, v)
|
||||
|
||||
case map[string]interface{}:
|
||||
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