Skip to content

Commit b2f22da

Browse files
authored
fix: bounds for decimals in some builtins (#3283)
some old bounds needed to be updated
1 parent 187ab0e commit b2f22da

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

tests/builtins/folding/test_fold_as_wei_value.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
from vyper import ast as vy_ast
66
from vyper.builtins import functions as vy_fn
7+
from vyper.utils import SizeLimits
78

89
denoms = [x for k in vy_fn.AsWeiValue.wei_denoms.keys() for x in k]
910

1011

1112
st_decimals = st.decimals(
12-
min_value=0, max_value=2 ** 32, allow_nan=False, allow_infinity=False, places=10
13+
min_value=0,
14+
max_value=SizeLimits.MAX_AST_DECIMAL,
15+
allow_nan=False,
16+
allow_infinity=False,
17+
places=10,
1318
)
1419

1520

tests/builtins/folding/test_min_max.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44

55
from vyper import ast as vy_ast
66
from vyper.builtins import functions as vy_fn
7+
from vyper.utils import SizeLimits
78

89
st_decimals = st.decimals(
9-
min_value=-(2 ** 32), max_value=2 ** 32, allow_nan=False, allow_infinity=False, places=10
10+
min_value=SizeLimits.MIN_AST_DECIMAL,
11+
max_value=SizeLimits.MAX_AST_DECIMAL,
12+
allow_nan=False,
13+
allow_infinity=False,
14+
places=10,
1015
)
1116
st_int128 = st.integers(min_value=-(2 ** 127), max_value=2 ** 127 - 1)
1217
st_uint256 = st.integers(min_value=0, max_value=2 ** 256 - 1)

vyper/builtins/functions.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ def evaluate(self, node):
10261026

10271027
if isinstance(value, int) and value >= 2 ** 256:
10281028
raise InvalidLiteral("Value out of range for uint256", node.args[0])
1029-
if isinstance(value, Decimal) and value >= 2 ** 127:
1029+
if isinstance(value, Decimal) and value > SizeLimits.MAX_AST_DECIMAL:
10301030
raise InvalidLiteral("Value out of range for decimal", node.args[0])
10311031

10321032
return vy_ast.Int.from_node(node, value=int(value * denom))
@@ -2012,7 +2012,8 @@ def evaluate(self, node):
20122012

20132013
left, right = (i.value for i in node.args)
20142014
if isinstance(left, Decimal) and (
2015-
min(left, right) < -(2 ** 127) or max(left, right) >= 2 ** 127
2015+
min(left, right) < SizeLimits.MIN_AST_DECIMAL
2016+
or max(left, right) > SizeLimits.MAX_AST_DECIMAL
20162017
):
20172018
raise InvalidType("Decimal value is outside of allowable range", node)
20182019
if isinstance(left, int) and (min(left, right) < 0 and max(left, right) >= 2 ** 127):

0 commit comments

Comments
 (0)