Skip to content

Commit

Permalink
replace get with maybe variant
Browse files Browse the repository at this point in the history
  • Loading branch information
tserg committed Dec 24, 2023
1 parent 1d8b5be commit 6e3ad8e
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 30 deletions.
42 changes: 21 additions & 21 deletions vyper/builtins/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ class Floor(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, vy_ast.Decimal):
raise UnfoldableNode

Expand Down Expand Up @@ -168,7 +168,7 @@ class Ceil(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, vy_ast.Decimal):
raise UnfoldableNode

Expand Down Expand Up @@ -462,7 +462,7 @@ class Len(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 1)
arg = node.args[0]._metadata.get("folded_value")
arg = node.args[0].get_folded_value_maybe()
if isinstance(arg, (vy_ast.Str, vy_ast.Bytes)):
length = len(arg.value)
elif isinstance(arg, vy_ast.Hex):
Expand Down Expand Up @@ -599,7 +599,7 @@ class Keccak256(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if isinstance(value, vy_ast.Bytes):
value = value.value
elif isinstance(value, vy_ast.Str):
Expand Down Expand Up @@ -647,7 +647,7 @@ class Sha256(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if isinstance(value, vy_ast.Bytes):
value = value.value
elif isinstance(value, vy_ast.Str):
Expand Down Expand Up @@ -721,7 +721,7 @@ class MethodID(FoldedFunctionT):
def fold(self, node):
validate_call_args(node, 1, ["output_type"])

value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, vy_ast.Str):
raise InvalidType("method id must be given as a literal string", node.args[0])
if " " in value.value:
Expand Down Expand Up @@ -981,7 +981,7 @@ class AsWeiValue(BuiltinFunctionT):
}

def get_denomination(self, node):
value = node.args[1]._metadata.get("folded_value")
value = node.args[1].get_folded_value_maybe()
if not isinstance(value, vy_ast.Str):
raise ArgumentException(
"Wei denomination must be given as a literal string", node.args[1]
Expand All @@ -997,7 +997,7 @@ def fold(self, node):
validate_call_args(node, 2)
denom = self.get_denomination(node)

value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, (vy_ast.Decimal, vy_ast.Int)):
raise UnfoldableNode
value = value.value
Expand Down Expand Up @@ -1083,10 +1083,10 @@ def fetch_call_return(self, node):

outsize = kwargz.get("max_outsize")
if outsize is not None:
outsize = outsize._metadata.get("folded_value")
outsize = outsize.get_folded_value_maybe()
revert_on_failure = kwargz.get("revert_on_failure")
if revert_on_failure is not None:
revert_on_failure = revert_on_failure._metadata.get("folded_value")
revert_on_failure = revert_on_failure.get_folded_value_maybe()
revert_on_failure = revert_on_failure.value if revert_on_failure is not None else True

if outsize is None or outsize.value == 0:
Expand Down Expand Up @@ -1356,7 +1356,7 @@ def fold(self, node):
self.__class__._warned = True

validate_call_args(node, 2)
values = [i._metadata.get("folded_value") for i in node.args]
values = [i.get_folded_value_maybe() for i in node.args]
for val in values:
if not isinstance(val, vy_ast.Int):
raise UnfoldableNode
Expand All @@ -1381,7 +1381,7 @@ def fold(self, node):
self.__class__._warned = True

validate_call_args(node, 2)
values = [i._metadata.get("folded_value") for i in node.args]
values = [i.get_folded_value_maybe() for i in node.args]
for val in values:
if not isinstance(val, vy_ast.Int):
raise UnfoldableNode
Expand All @@ -1406,7 +1406,7 @@ def fold(self, node):
self.__class__._warned = True

validate_call_args(node, 2)
values = [i._metadata.get("folded_value") for i in node.args]
values = [i.get_folded_value_maybe() for i in node.args]
for val in values:
if not isinstance(val, vy_ast.Int):
raise UnfoldableNode
Expand All @@ -1431,7 +1431,7 @@ def fold(self, node):
self.__class__._warned = True

validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, vy_ast.Int):
raise UnfoldableNode

Expand All @@ -1457,7 +1457,7 @@ def fold(self, node):
self.__class__._warned = True

validate_call_args(node, 2)
args = [i._metadata.get("folded_value") for i in node.args]
args = [i.get_folded_value_maybe() for i in node.args]
if any(not isinstance(i, vy_ast.Int) for i in args):
raise UnfoldableNode
value, shift = [i.value for i in args]
Expand Down Expand Up @@ -1504,7 +1504,7 @@ class _AddMulMod(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 3)
args = [i._metadata.get("folded_value") for i in node.args]
args = [i.get_folded_value_maybe() for i in node.args]
if isinstance(args[2], vy_ast.Int) and args[2].value == 0:
raise ZeroDivisionException("Modulo by 0", node.args[2])
for arg in args:
Expand Down Expand Up @@ -1545,7 +1545,7 @@ class PowMod256(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 2)
values = [i._metadata.get("folded_value") for i in node.args]
values = [i.get_folded_value_maybe() for i in node.args]
if any(not isinstance(i, vy_ast.Int) for i in values):
raise UnfoldableNode

Expand All @@ -1566,7 +1566,7 @@ class Abs(BuiltinFunctionT):

def fold(self, node):
validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, vy_ast.Int):
raise UnfoldableNode

Expand Down Expand Up @@ -2006,8 +2006,8 @@ class _MinMax(BuiltinFunctionT):
def fold(self, node):
validate_call_args(node, 2)

left = node.args[0]._metadata.get("folded_value")
right = node.args[1]._metadata.get("folded_value")
left = node.args[0].get_folded_value_maybe()
right = node.args[1].get_folded_value_maybe()
if not isinstance(left, type(right)):
raise UnfoldableNode
if not isinstance(left, (vy_ast.Decimal, vy_ast.Int)):
Expand Down Expand Up @@ -2083,7 +2083,7 @@ def fetch_call_return(self, node):

def fold(self, node):
validate_call_args(node, 1)
value = node.args[0]._metadata.get("folded_value")
value = node.args[0].get_folded_value_maybe()
if not isinstance(value, vy_ast.Int):
raise UnfoldableNode

Expand Down
12 changes: 6 additions & 6 deletions vyper/semantics/analysis/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,15 +369,15 @@ def visit_For(self, node):
validate_expected_type(n, IntegerT.any())

if bound is None:
n_val = n._metadata.get("folded_value")
n_val = n.get_folded_value_maybe()
if not isinstance(n_val, vy_ast.Num):
raise StateAccessViolation("Value must be a literal", n)
if n_val.value <= 0:
raise StructureException("For loop must have at least 1 iteration", args[0])
type_list = get_possible_types_from_node(n)

else:
bound_val = bound._metadata.get("folded_value")
bound_val = bound.get_folded_value_maybe()
if not isinstance(bound_val, vy_ast.Num):
raise StateAccessViolation("bound must be a literal", bound)
if bound_val.value <= 0:
Expand All @@ -394,7 +394,7 @@ def visit_For(self, node):

validate_expected_type(args[0], IntegerT.any())
type_list = get_common_types(*args)
arg0_val = args[0]._metadata.get("folded_value")
arg0_val = args[0].get_folded_value_maybe()
if not isinstance(arg0_val, vy_ast.Constant):
# range(x, x + CONSTANT)
if not isinstance(args[1], vy_ast.BinOp) or not isinstance(
Expand All @@ -417,7 +417,7 @@ def visit_For(self, node):
)
else:
# range(CONSTANT, CONSTANT)
arg1_val = args[1]._metadata.get("folded_value")
arg1_val = args[1].get_folded_value_maybe()
if not isinstance(arg1_val, vy_ast.Int):
raise InvalidType("Value must be a literal integer", args[1])
validate_expected_type(args[1], IntegerT.any())
Expand All @@ -429,7 +429,7 @@ def visit_For(self, node):

else:
# iteration over a variable or literal list
iter_val = node.iter._metadata.get("folded_value")
iter_val = node.iter.get_folded_value_maybe()
if isinstance(iter_val, vy_ast.List) and len(iter_val.elements) == 0:
raise StructureException("For loop must have at least 1 iteration", node.iter)

Expand Down Expand Up @@ -614,7 +614,7 @@ def visit(self, node, typ):
# can happen.
super().visit(node, typ)

folded_value = node._metadata.get("folded_value")
folded_value = node.get_folded_value_maybe()
if isinstance(folded_value, vy_ast.Constant):
validate_expected_type(folded_value, typ)

Expand Down
2 changes: 1 addition & 1 deletion vyper/semantics/analysis/pre_typecheck.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def get_constants(node: vy_ast.Module) -> dict:
for n in c.value.get_descendants(include_self=True, reverse=True):
prefold(n, constants)

val = c.value._metadata.get("folded_value")
val = c.value.get_folded_value_maybe()

# note that if a constant is redefined, its value will be overwritten,
# but it is okay because the syntax error is handled downstream
Expand Down
2 changes: 1 addition & 1 deletion vyper/semantics/analysis/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ def _check_literal(node: vy_ast.VyperNode) -> bool:
elif isinstance(node, (vy_ast.Tuple, vy_ast.List)):
return all(_check_literal(item) for item in node.elements)

if node._metadata.get("folded_value"):
if node.get_folded_value_maybe():
return True
return False

Expand Down
2 changes: 1 addition & 1 deletion vyper/semantics/types/subscriptable.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ def from_annotation(cls, node: vy_ast.Subscript) -> "DArrayT":
):
raise StructureException(err_msg, node.slice)

length_node = node.slice.value.elements[1]._metadata.get("folded_value")
length_node = node.slice.value.elements[1].get_folded_value_maybe()

if not isinstance(length_node, vy_ast.Int):
raise StructureException(err_msg, length_node)
Expand Down

0 comments on commit 6e3ad8e

Please sign in to comment.