Skip to content

Commit

Permalink
replace _kwargable with modifiability for builtins
Browse files Browse the repository at this point in the history
  • Loading branch information
tserg committed Dec 28, 2023
1 parent 9ae1344 commit d6f79e8
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
1 change: 1 addition & 0 deletions vyper/builtins/_signatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ class BuiltinFunctionT(VyperType):
_has_varargs = False
_inputs: list[tuple[str, Any]] = []
_kwargs: dict[str, KwargSettings] = {}
_modifiability: Modifiability = Modifiability.MODIFIABLE
_return_type: Optional[VyperType] = None

# helper function to deal with TYPE_DEFINITIONs
Expand Down
7 changes: 3 additions & 4 deletions vyper/builtins/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
UnfoldableNode,
ZeroDivisionException,
)
from vyper.semantics.analysis.base import VarInfo
from vyper.semantics.analysis.base import Modifiability, VarInfo
from vyper.semantics.analysis.utils import (
get_common_types,
get_exact_type_from_node,
Expand Down Expand Up @@ -105,9 +105,8 @@
class FoldedFunctionT(BuiltinFunctionT):
# Base class for nodes which should always be folded

# Since foldable builtin functions are not folded before semantics validation,
# this flag is used for `check_modifiability` in semantics validation.
_kwargable = True
# This flag is used for `check_modifiability` in semantics validation.
_modifiability = Modifiability.ALWAYS_CONSTANT


class TypenameFoldedFunctionT(FoldedFunctionT):
Expand Down
4 changes: 2 additions & 2 deletions vyper/semantics/analysis/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -648,8 +648,8 @@ def check_modifiability(node: vy_ast.VyperNode, modifiability: Modifiability) ->
return all(check_modifiability(v, modifiability) for v in args[0].values)

call_type = get_exact_type_from_node(node.func)
if getattr(call_type, "_kwargable", False):
return True
call_type_modifiability = getattr(call_type, "_modifiability", Modifiability.MODIFIABLE)
return call_type_modifiability >= modifiability

value_type = get_expr_info(node)
return value_type.modifiability >= modifiability

0 comments on commit d6f79e8

Please sign in to comment.