diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 9f67fd2..8ce303b 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +### [0.1.23] - 2025-05-19 + - Added `FunctionParameter` for input parameters of `FunctionType`s (required for named argument support) + - Changed `FunctionType` field `inputs` to `input_params` + - Added `block.blobbasefee` builtin variable + - Added `blobhash` builtin function + - Added new `require` function that takes an `ErrorType` + - Added `Type.is_user_error` + - Added `ErrorType` to make allow class error objects + - Added `UserDefinedErrorType` for solidity `error` 'function' types + - Added `CreateError` AST2 node for first class error initialisation + - Changed AST2 `RevertWithError` to take a `CreateError` object instead of a type and list of args + - Changed AST1 `EventParameter` and `ErrorParameter` to use `var_name` instead of `name` to be consistent with Parameter + - Changed AST1 `Parameter` to use `soltypes.Type` for `var_type` instead of `Ident` + - Fixed hashing issue with `NodeList` + - Fixed some issues with function type widening with + - ### [0.1.22] - 2024-08-29 - Fixed issues with external function call options(gas/value) being confused with name function arguments - Renamed `solnodes.CallFunction.modifiers` to `special_call_options` diff --git a/setup.py b/setup.py index 9237cc2..1435c08 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ def gen(self): setup( name='solidity-parser', - version='0.1.22', + version='0.1.23', install_requires=[ "antlr4-python3-runtime==4.11.1", diff --git a/src/solidity_parser/ast/ast2builder.py b/src/solidity_parser/ast/ast2builder.py index a3d2a40..b38eb5b 100644 --- a/src/solidity_parser/ast/ast2builder.py +++ b/src/solidity_parser/ast/ast2builder.py @@ -1,6 +1,7 @@ import typing from dataclasses import dataclass from typing import List, Union, Dict, Deque, cast, Optional +from types import UnionType from collections import deque, defaultdict from copy import deepcopy @@ -12,9 +13,7 @@ from solidity_parser.ast.mro_helper import c3_linearise from solidity_parser import errors - - - +from solidity_parser.ast.solnodes import ModifierDefinition, FunctionDefinition, ErrorDefinition, EventDefinition T = typing.TypeVar('T') @@ -164,6 +163,26 @@ def get_current_contract_type(self, node) -> solnodes2.ResolvedUserType: """ Returns the ResolvedUserType the given node is declared in """ return self.get_contract_type(self.builder.get_declaring_contract_scope(node)) + def deduplicate_func_types(self, ttypes: list[soltypes.Type]): + # unfortunately not this simple because the functions can look different but be the "same" for our purposes here. + # e.g. the weird edge case where we have B extends A, B.f(X) external and A.f(X) public. The function visibility + # can be "widened"/made less restrictive by the overriding function. In this case the AST nodes will have different + # hash/eq so list(set(...)) won't deduplicate them + # n^2 check, shouldn't be too bad in practice + ftype = [t.is_function() for t in ttypes] + keep = [True] * len(ttypes) + for i in range(len(ttypes)): + if not ftype[i] or not keep[i]: + continue + for j in range(i + 1, len(ttypes)): + if not ftype[j] or not keep[j]: + continue + # f1 and f2 are guaranteed to be functions at this point + f1, f2 = cast(soltypes.FunctionType, ttypes[i]), cast(soltypes.FunctionType, ttypes[j]) + if f1.can_implicitly_cast_from(f2): + keep[j] = False + return [ttypes[i] for i in range(len(ttypes)) if keep[i]] + def get_expr_type(self, expr: solnodes1.Expr | soltypes.Type, allow_multiple=False, force_tuple=False, function_callee=False) -> typing.Union[solnodes2.Types, list[solnodes2.Types]]: """ Main helper function that computes the AST2 type of the given AST1 expression @@ -199,16 +218,23 @@ def get_expr_type(self, expr: solnodes1.Expr | soltypes.Type, allow_multiple=Fal if allow_multiple: # return all matching symbol types symbols = expr.scope.find(text) - any_or_all_funcs = self.any_or_all([isinstance(s.value, symtab.ModFunErrEvtScope) for s in symbols]) - self.error_handler.assert_error('Expected any or all function callees', any_or_all_funcs) + self.error_handler.assert_error('Expected any or all function callees', self.any_or_all([isinstance(s.value, symtab.ModFunErrEvtScope) for s in symbols])) + any_funcs = any([isinstance(s, symtab.ModFunErrEvtScope) for s in symbols]) - if function_callee and any_or_all_funcs: + if function_callee and any_funcs: function_chain = self.builder.is_declaration_chain(symbols) if function_chain: # less sophisticated way compared to refine_expr: we need to get the function at the top # of the hierarchy (symtab returns them all), i.e. the one that overrides all the others + # ah crap, imagine f(X),f(Y) in contract A, contract A extends B, B has f(X),f(Y) + # i.e. two override chains with the same function name. function_chain would be False and the return [self.symbol_to_ast2_type(symbols[0], function_callee=function_callee)] + # deduplicate + func_types = [self.symbol_to_ast2_type(s, function_callee=function_callee) for s in symbols] + return self.deduplicate_func_types(func_types) + + # non function case return [self.symbol_to_ast2_type(s, function_callee=function_callee) for s in symbols] else: inheritable_predicate = symtab.ACCEPT_INHERITABLE(expr.scope) @@ -486,7 +512,27 @@ def get_expr_type(self, expr: solnodes1.Expr | soltypes.Type, allow_multiple=Fal return soltypes.FixedLengthArrayType(arg_types[0], len(expr.elements)) return self.error_handler.todo(expr) - def get_function_expr_type(self, expr, allow_multiple=False, return_target_symbol=False): + def check_func_type_inputs(self, ttype: soltypes.FunctionType, expr: solnodes1.CallFunction): + named_args = {a.name.text: self.get_expr_type(a.value) for a in expr.args if isinstance(a, solnodes1.NamedArg)} + + if len(named_args) > 0: + func_params = {p.name.text: p.ttype for p in ttype.input_params} + + if set(func_params.keys()) != set(named_args.keys()): + return False + + f_types, c_types = [], [] + + for k, v in named_args.items(): + f_types.append(func_params[k]) + c_types.append(v) + else: + f_types = [self.map_type(x.ttype) for x in ttype.input_params] + c_types = [self.get_expr_type(a) for a in expr.args] + + return soltypes.Type.are_matching_types(f_types, c_types) + + def get_function_expr_type(self, expr: solnodes1.CallFunction, allow_multiple=False, return_target_symbol=False): callee = expr.callee if isinstance(callee, soltypes.Type): if callee.is_address(): @@ -503,8 +549,6 @@ def get_function_expr_type(self, expr, allow_multiple=False, return_target_symbo elif isinstance(callee, solnodes1.Ident) and callee.text == 'address': return soltypes.AddressType(is_payable=False) - arg_types = [self.get_expr_type(arg) for arg in expr.args] - callable_ttypes = self.get_expr_type(callee, allow_multiple=True, function_callee=True) if not isinstance(callable_ttypes, list): @@ -540,22 +584,38 @@ def is_cast_call(t): callable_calls = [ft.is_function() or ft.is_mapping() for ft in callable_ttypes] self.error_handler.assert_error(f'Non cast call must be callables: {callable_calls}', all(callable_calls)) + self.error_handler.assert_error('Not allowed to mix positional and named args', self.any_or_all([isinstance(a, solnodes1.NamedArg) for a in expr.args])) + + has_named_args = len(expr.args) > 0 and isinstance(expr.args[0], solnodes1.NamedArg) + + if not has_named_args: + # FIXME: bit of a hack, when the deduplication happens it ignores parameter names and only considers types + # so if no named args are provided and we are doing positional type checks only, then we can potentially + # fix duplicate callees early here + callable_ttypes = self.deduplicate_func_types(callable_ttypes) + candidates = [] for ttype in callable_ttypes: if ttype.is_function(): ttype: soltypes.FunctionType - # None is a sentinel, do NOT do 'if ft.inputs:' - if ttype.inputs is not None: + # None is a sentinel, do NOT do 'if ft.input_params:' + if ttype.input_params is not None: # match input types - if len(ttype.inputs) == len(arg_types): - if all([targ.can_implicitly_cast_from(actual) for targ, actual in zip(ttype.inputs, arg_types)]): + if has_named_args: + if self.check_func_type_inputs(ttype, expr): candidates.append(ttype.outputs) + else: + arg_types = [self.get_expr_type(arg) for arg in expr.args] + if len(ttype.input_params) == len(arg_types): + if all([param.ttype.can_implicitly_cast_from(actual) for param, actual in zip(ttype.input_params, arg_types)]): + candidates.append(ttype.outputs) else: # input types == None => polymorphic builtin function. This isn't the same as a no arg function, # where input types == [] candidates.append(ttype.outputs) continue elif ttype.is_mapping(): + arg_types = [self.get_expr_type(arg) for arg in expr.args] ttype: soltypes.MappingType flattened_types = ttype.flatten() @@ -583,7 +643,7 @@ def is_cast_call(t): self.error_handler.assert_error(f'Polymorphic abi.decode => {output_types}', output_types is None) # drop the first argument type so output types are t1, t2... # abi.decode(bytes memory encodedData, (t1, t2...)) returns (t1, t2...) - output_types = arg_types[1:] + output_types = [self.get_expr_type(arg) for arg in expr.args][1:] if allow_multiple: return output_types @@ -653,6 +713,11 @@ def param_types(self, ps): return [] return [self.map_type(p.var_type) for p in ps] + def map_input_params(self, func: ModifierDefinition | FunctionDefinition | ErrorDefinition | EventDefinition) -> list[soltypes.FunctionParameter]: + # mapping fp to fp just ensures that any AST1 child nodes are translated into AST2 nodes + ps = func.parameters + return [soltypes.FunctionParameter(self.builder.ident(p.var_name), self.map_type(p.var_type)) for p in ps] if ps else [] + def symbol_to_ast2_type(self, symbol, function_callee=False) -> solnodes2.Types: """ Computes the AST2 type of the given symtab Symbol @@ -663,13 +728,14 @@ def symbol_to_ast2_type(self, symbol, function_callee=False) -> solnodes2.Types: # 'MyErrors.sol' file and'ErrorX' is a free function/error in that file return self.get_contract_type(symbol) elif isinstance(symbol, symtab.UsingFunctionSymbol): - # need an unresolved symbol for this as called res_syms_single on a UsingFunctionSymbol gives the base - # ModFunErrEvt symbol + # need to do this check against the unresolved symbol as calling res_syms_single below on a + # UsingFunctionSymbol gives the base ModFunErrEvt symbol, but we need to differentiate whether this value + # came from a using statement # cast for type checker, could be further refined as just FunctionDefinition - value = cast(solnodes1.ModFunErrEvt, symbol.value) - # X.abc(), remove the type of X to the start of the input types - return soltypes.FunctionType(self.param_types(value.parameters)[1:], + value: ModifierDefinition | FunctionDefinition | ErrorDefinition | EventDefinition = cast(solnodes1.ModFunErrEvt, symbol.value) + # X.abc(1) === abc(X,1), remove the type of X from the start of the input types + return soltypes.FunctionType(self.map_input_params(symbol.value)[1:], self.param_types(value.returns), self.builder.modifiers(value)) @@ -690,7 +756,7 @@ def symbol_to_ast2_type(self, symbol, function_callee=False) -> solnodes2.Types: # might be empty lists (meaning no inputs or outputs in the function) whereas 'None' indicates that the # function accepts any parameter types there (fully polymorphic). # At the moment 'None' output_types is only used for abi.decode - input_types = [self.map_type(ttype) for ttype in symbol.input_types] if symbol.input_types is not None else None + input_types = [soltypes.FunctionParameter(self.builder.no_ident(), self.map_type(t)) for t in symbol.input_types] if symbol.input_types is not None else None output_types = [self.map_type(ttype) for ttype in symbol.output_types] if symbol.output_types is not None else None return soltypes.FunctionType(input_types, output_types, []) elif isinstance(symbol, symtab.BuiltinValue): @@ -705,14 +771,18 @@ def symbol_to_ast2_type(self, symbol, function_callee=False) -> solnodes2.Types: elif isinstance(value, (solnodes1.Parameter, solnodes1.Var)): return self.map_type(value.var_type) elif isinstance(value, solnodes1.FunctionDefinition): - return soltypes.FunctionType(self.param_types(value.parameters), self.param_types(value.returns), self.builder.modifiers(value)) + return soltypes.FunctionType(self.map_input_params(value), self.param_types(value.returns), self.builder.modifiers(value)) elif isinstance(value, solnodes1.ErrorDefinition): - # AFAIK this is only used for MyError.selector - return soltypes.FunctionType(self.param_types(value.parameters), [], []) + if function_callee: + # error initialised like callable eg MyError(1,2), I believe this is only passed to require() in 0.8.26 + return solnodes2.UserDefinedErrorType(nodebase.Ref(value)) + else: + # AFAIK this is only used for MyError.selector + return soltypes.FunctionType(self.map_input_params(value), [], []) elif isinstance(value, solnodes1.EventDefinition): # This can happen with old solidity contracts before the 'emit' keyword was created. In this case, an # event is triggered by a function call e.g. MyEvent() instead of emit MyEvent() - return soltypes.FunctionType(self.param_types(value.parameters), [], []) + return soltypes.FunctionType(self.map_input_params(value), [], []) elif isinstance(value, (solnodes1.StateVariableDeclaration, solnodes1.ConstantVariableDeclaration)): # Mappings are stored as fields but have mapping types field_type = self.map_type(value.var_type) @@ -722,9 +792,9 @@ def symbol_to_ast2_type(self, symbol, function_callee=False) -> solnodes2.Types: solnodes2.MutabilityModifier(solnodes1.MutabilityModifierKind.VIEW)] if field_type.is_mapping(): flattened_types = field_type.flatten() - return soltypes.FunctionType(flattened_types[:-1], flattened_types[-1:], modifiers) + return soltypes.FunctionType([soltypes.FunctionParameter(self.builder.no_ident(), t) for t in flattened_types[:-1]], flattened_types[-1:], modifiers) elif field_type.is_array() and not field_type.is_byte_array_underlying(): - return soltypes.FunctionType([soltypes.UIntType()], [field_type.base_type], modifiers) + return soltypes.FunctionType([soltypes.FunctionParameter(self.builder.no_ident(), soltypes.UIntType())], [field_type.base_type], modifiers) else: return soltypes.FunctionType([], [field_type], modifiers) return field_type @@ -737,7 +807,7 @@ def symbol_to_ast2_type(self, symbol, function_callee=False) -> solnodes2.Types: isinstance(value.scope, symtab.EnumScope)) return self.symbol_to_ast2_type(value.scope) elif isinstance(value, solnodes1.ModifierDefinition): - return soltypes.FunctionType(self.param_types(value.parameters), [], self.builder.modifiers(value)) + return soltypes.FunctionType(self.map_input_params(value), [], self.builder.modifiers(value)) assert False, f'{type(value)}' def scopes_for_type(self, node: solnodes1.AST1Node, ttype: solnodes2.Types, use_encoded_type_key=True) -> List[symtab.Scope]: @@ -800,13 +870,21 @@ def scopes_for_type(self, node: solnodes1.AST1Node, ttype: solnodes2.Types, use_ assert isinstance(scope, symtab.Scope), f'{type(scope)}' return [scope] - def map_type(self, ttype: soltypes.Type) -> solnodes2.Types: + def map_function_param(self, param: soltypes.FunctionParameter) -> soltypes.FunctionParameter: + return soltypes.FunctionParameter( + self.builder.ident(param.name), + self.map_type(param.ttype) + ) + def map_type(self, ttype: soltypes.Type) -> solnodes2.Types: if isinstance(ttype, solnodes2.Types) and not isinstance(ttype, solnodes1.Types): # AST2 specific type, doesn't need checking below - return ttype + # TODO: does it need copying though? + return cast(solnodes2.Types, ttype) - if isinstance(ttype, soltypes.UserType): + if isinstance(ttype, soltypes.ErrorType): + return soltypes.ErrorType() + elif isinstance(ttype, soltypes.UserType): return self.get_user_type(ttype) # string and bytes have to go before the base Array cases below elif isinstance(ttype, soltypes.BytesType): @@ -843,7 +921,7 @@ def map_type(self, ttype: soltypes.Type) -> solnodes2.Types: self.builder.ident(ttype.src_name), self.builder.ident(ttype.dst_name)) elif isinstance(ttype, soltypes.FunctionType): # TODO: fix the cases for polymorphic types where inputs or outputs is set to None - return soltypes.FunctionType([self.map_type(t) for t in ttype.inputs] if ttype.inputs is not None else None, + return soltypes.FunctionType([self.map_function_param(p) for p in ttype.input_params] if ttype.input_params is not None else None, [self.map_type(t) for t in ttype.outputs] if ttype.outputs is not None else None, self.builder.modifiers(ttype)) @@ -1118,10 +1196,9 @@ def map_node(x): elif isinstance(node, solnodes1.Continue): return solnodes2.Continue() elif isinstance(node, solnodes1.Revert): - # Special case of refine_call_function - error_def, new_args = self.refine_call_function(node.call, allow_error=True) - assert isinstance(error_def, solnodes2.ErrorDefinition) - return solnodes2.RevertWithError(nodebase.Ref(error_def), new_args) + err_create = self.refine_call_function(node.call, allow_error=True) + assert isinstance(err_create, solnodes2.CreateError) + return solnodes2.RevertWithError(err_create) self.error_handler.todo(node) def get_declaring_contract_scope(self, node: solnodes1.AST1Node) -> Union[ @@ -1158,7 +1235,9 @@ def refine_call_function(self, expr, allow_error=False, allow_stmt=False, allow_ def create_new_args(): results = [] for ast1_arg in expr.args: - ast2_arg = self.refine_expr(ast1_arg, is_argument=True) + # technically we should check hasattr(expr.callee, 'name') and str(expr.callee.name) == 'require' + # but don't want to hardcode it + ast2_arg = self.refine_expr(ast1_arg, is_argument=True, allow_error=True) if isinstance(ast2_arg, list): # this currently only happens for tuples of exprs (not tuples of types) in the 2nd arg of # abi.encodeCall calls @@ -1299,15 +1378,17 @@ def is_type_call(s): if t.is_function(): t: soltypes.FunctionType - # None is a sentinel, do NOT do 'if ft.inputs:' - if t.inputs is None: + # None is a sentinel, do NOT do 'if ft.input_params:' + if t.input_params is None: # input types == None => polymorphic builtin function. This isn't the same as a no arg function, # where input types == [] bucket_candidates.append((s, t, is_synthetic)) continue else: # match input types - input_types = t.inputs + if self.type_helper.check_func_type_inputs(t, expr): + bucket_candidates.append((s, t, is_synthetic)) + continue elif t.is_mapping(): t: soltypes.MappingType # MappingType, these can look like function calls but are mapping loads. A mapping type can be @@ -1331,7 +1412,9 @@ def is_type_call(s): # check for each parameter of the target, check if the arg can be passed to it if len(input_types) == len(arg_types): - if all([targ.can_implicitly_cast_from(actual) for targ, actual in zip(input_types, arg_types)]): + if all([ + targ.can_implicitly_cast_from(actual) + for targ, actual in zip(input_types, arg_types)]): bucket_candidates.append((s, t, is_synthetic)) if len(bucket_candidates) > 1: @@ -1402,7 +1485,8 @@ def is_type_call(s): if len(new_args) == 1: return solnodes2.Require(new_args[0], None) elif len(new_args) == 2: - assert new_args[1].type_of().is_string() + reason_ttype = new_args[1].type_of() + assert reason_ttype.is_string() or reason_ttype.is_user_error() return solnodes2.Require(new_args[0], new_args[1]) self.error_handler.todo(expr) elif sym.aliases[0] == 'revert': @@ -1489,7 +1573,11 @@ def is_type_call(s): assert allow_error assert len(special_call_options) == 0 self.load_non_top_level_if_required(sym.value) - return sym.value.ast2_node, new_args + assert isinstance(sym.value.ast2_node, solnodes2.ErrorDefinition) + return solnodes2.CreateError( + solnodes2.UserDefinedErrorType(nodebase.Ref(sym.value.ast2_node)), + new_args + ) elif isinstance(sym.value, solnodes1.EventDefinition): # old style event Emit that looks like a function call: we convert this to an Emit Stmt in AST2 assert allow_event @@ -1612,7 +1700,7 @@ def is_declaration_chain(self, function_symbols): @link_with_ast1 def refine_expr(self, expr: solnodes1.Expr, is_function_callee=False, allow_type=False, allow_tuple_exprs=False, allow_multiple_exprs=False, allow_none=True, allow_stmt=False, is_argument=False, - is_assign_rhs=False, allow_event=False): + is_assign_rhs=False, allow_event=False, allow_error=False): if expr is None: assert allow_none return None @@ -1814,7 +1902,7 @@ def z(): else: self.error_handler.todo(ident_target) elif isinstance(expr, solnodes1.CallFunction): - return self.refine_call_function(expr, allow_stmt=allow_stmt, allow_event=allow_event) + return self.refine_call_function(expr, allow_stmt=allow_stmt, allow_event=allow_event, allow_error=allow_error) elif isinstance(expr, solnodes1.GetMember): base = expr.obj_base mname = expr.name.text @@ -2069,12 +2157,15 @@ def parameter(self, node: solnodes1.Parameter): return solnodes2.Parameter(self.var(node)) def error_parameter(self, node: solnodes1.ErrorParameter): - name = solnodes2.Ident(node.name.text if node.name else None) + name = solnodes2.Ident(node.var_name.text if node.var_name else None) return solnodes2.ErrorParameter(self.type_helper.map_type(node.var_type), name) - def ident(self, node: solnodes1.Ident): + def ident(self, node: solnodes1.Ident, name: str = None): return solnodes2.Ident(node.text) if node else None + def no_ident(self): + return solnodes2.Ident('') + def modifiers(self, node_with_modifiers): if not hasattr(node_with_modifiers, 'modifiers'): return [] @@ -2311,7 +2402,7 @@ def _make_new_node(n): ast2_node.ttype = self.type_helper.map_type(ast1_node.var_type) if isinstance(ast1_node, solnodes1.EventDefinition): - ast2_node.inputs = [solnodes2.EventParameter(solnodes2.Ident(p.name.text if p.name else f' Generator['Node', None, None]: + yield from list(self) + + def get_all_children(self) -> Generator['Node', None, None]: + for direct_child in self.get_children(): + yield direct_child + yield from direct_child.get_all_children() + def __str__(self): return list.__str__(self) @@ -143,12 +152,12 @@ def __delitem__(self, key): self._set_dirty(key, None) def __setslice__(self, i, j, sequence): - raise NotImplemented + raise NotImplementedError() def __eq__(self, other): if isinstance(other, list): return super().__eq__(other) - raise NotImplemented + raise NotImplementedError(f"Can't compare NodeList to {other}") def append(self, __object): ret = super().append(__object) diff --git a/src/solidity_parser/ast/parsers/parsers060.py b/src/solidity_parser/ast/parsers/parsers060.py index 146e372..908a318 100644 --- a/src/solidity_parser/ast/parsers/parsers060.py +++ b/src/solidity_parser/ast/parsers/parsers060.py @@ -264,24 +264,15 @@ def _mapping_type(parser, mapping_type: SolidityParser.MappingContext): ) -def params_to_types(params: solnodes.Parameter): - # TODO: add name + storage to FunctionType. Is it even necessary? - # old solnodes1.FunctionType had this but solnodes2.FunctionType didn't and now types.FunctionType doesn't either - # so this informtion isn't stored. - # Idea: create a new mixin that can be added to all the Type subclasses OR create a new NamedType that has the - # actual type as an attr and redirects Type calls to the attr. e.g. - # class NamedType(Type): - # name: Ident - # ttype: Type - # storage: ... - # def __getattr__(self, name): - # # checks... - # return getattr(self.ttype, name) +def params_to_types(params: list[solnodes.Parameter]): return [p.var_type for p in params] +def input_params_to_types(params: list[solnodes.Parameter]): + return [soltypes.FunctionParameter(p.var_name, p.var_type) for p in params] + def _function_type_name(parser, function_type: SolidityParser.FunctionTypeNameContext): return soltypes.FunctionType( - params_to_types(parser.make(function_type.parameterList(), default=[])), + input_params_to_types(parser.make(function_type.parameterList(), default=[])), params_to_types(parser.make(function_type.returnParameters(), default=[])), parser.make(function_type.modifierList(), default=[]) ) diff --git a/src/solidity_parser/ast/parsers/parsers080.py b/src/solidity_parser/ast/parsers/parsers080.py index 19c05f3..b52a317 100644 --- a/src/solidity_parser/ast/parsers/parsers080.py +++ b/src/solidity_parser/ast/parsers/parsers080.py @@ -552,7 +552,7 @@ def _type_name(parser, type_name: SolidityParser.TypeNameContext): def _function_type_name(parser, function_type: SolidityParser.FunctionTypeNameContext): return soltypes.FunctionType( - parsers060.params_to_types(parser.make(function_type.arguments, default=[])), + parsers060.input_params_to_types(parser.make(function_type.arguments, default=[])), parsers060.params_to_types(parser.make(function_type.returnParameters, default=[])), parser.make_all_rules(function_type.visibility()) + parser.make_all_rules(function_type.stateMutability()) ) diff --git a/src/solidity_parser/ast/solnodes.py b/src/solidity_parser/ast/solnodes.py index a268fcf..6725739 100644 --- a/src/solidity_parser/ast/solnodes.py +++ b/src/solidity_parser/ast/solnodes.py @@ -264,7 +264,7 @@ class VarDecl(Stmt): @dataclass class Parameter(AST1Node): - var_type: Ident + var_type: soltypes.Type var_loc: Location var_name: Ident @@ -511,7 +511,7 @@ class UserValueType(SourceUnit, ContractPart): @dataclass class EventParameter(AST1Node): var_type: soltypes.Type - name: Ident + var_name: Ident is_indexed: bool @@ -525,7 +525,7 @@ class EventDefinition(ContractPart): @dataclass class ErrorParameter(AST1Node): var_type: soltypes.Type - name: Ident + var_name: Ident @dataclass @@ -601,5 +601,6 @@ def has_modifier_kind(node, *kinds: VisibilityModifierKind | MutabilityModifierK Types: typing.TypeAlias = (soltypes.VariableLengthArrayType | soltypes.VoidType | soltypes.IntType | soltypes.FunctionType | soltypes.ArrayType | soltypes.BytesType | soltypes.BoolType | soltypes.AnyType | soltypes.MappingType | soltypes.UserType | soltypes.StringType - | soltypes.FixedLengthArrayType | soltypes.AddressType | soltypes.ByteType) + | soltypes.FixedLengthArrayType | soltypes.AddressType | soltypes.ByteType + | soltypes.ErrorType ) diff --git a/src/solidity_parser/ast/solnodes2.py b/src/solidity_parser/ast/solnodes2.py index ba55b14..3dbc2bc 100644 --- a/src/solidity_parser/ast/solnodes2.py +++ b/src/solidity_parser/ast/solnodes2.py @@ -48,6 +48,35 @@ def type_of(self) -> soltypes.Type: class Modifier(AST2Node, ABC): pass +@nodebase.NodeDataclass +class UserDefinedErrorType(soltypes.Type): + # Use a ref because this type doesn't "own" the ErrorDefinition node instance + value: nodebase.Ref['ErrorDefinition'] = field(repr=False) + + def is_user_error(self) -> bool: + return True + + def is_user_type(self) -> bool: + return True + + def __str__(self): + return f'error({self.value.x.name.text})' + + def __repr__(self): + return self.__str__() + + def code_str(self): + return self.value.x.name.text + + def type_key(self, *args, **kwargs): + return self.value.x.name.text + + def can_implicitly_cast_from(self, actual_type: 'Type') -> bool: + if super().can_implicitly_cast_from(actual_type): + return True + if actual_type.is_user_error(): + return actual_type.value.x == self.value.x + return False @nodebase.NodeDataclass class ResolvedUserType(soltypes.Type): @@ -1058,6 +1087,18 @@ def code_str(self): return f'{self.ttype.code_str()}({", ".join(e.code_str() for e in self.args)})' +@nodebase.NodeDataclass +class CreateError(Expr): + ttype: UserDefinedErrorType + args: list[Expr] + + def type_of(self) -> soltypes.Type: + return self.ttype + + def code_str(self): + return f'{self.ttype.code_str()}({", ".join(e.code_str() for e in self.args)})' + + @nodebase.NodeDataclass class CreateAndDeployContract(Expr): ttype: ResolvedUserType @@ -1072,16 +1113,30 @@ def code_str(self): def check_arg_types(args: list[Expr], f: FunctionDefinition) -> bool: - named_args = {a.name.text: a.expr.type_of() for a in args if isinstance(a, NamedArgument)} + # weird edge case: imagine a call x.abc({a:1,b:2}) where we have a "using statement" for x. The statement gets + # converted to a DirectCall to X.abc, with the args (x, {a:1}, {b:2}), i.e.a mix of 1 positional argument the rest + # named + possible_direct_call = len(args) > 0 and not isinstance(args[0], NamedArgument) and all([isinstance(a, NamedArgument) for a in args[1:]]) + + named_args = { + a.name.text: a.expr.type_of() + for a in (args[1:] if possible_direct_call else args) if isinstance(a, NamedArgument) + } if len(named_args) > 0: - func_params = {p.var.name.text: p.var.ttype for p in f.inputs} + func_params = {p.var.name.text: p.var.ttype for p in (f.inputs[1:] if possible_direct_call else f.inputs)} if set(func_params.keys()) != set(named_args.keys()): return False f_types, c_types = [], [] + if possible_direct_call: + # want to match first arg by direct + f_types.append(f.inputs[0].var.ttype) + c_types.append(args[0].type_of()) + + # f_types[i] and c_types[i] are expected and provided types of an arg 'x' for k, v in named_args.items(): f_types.append(func_params[k]) c_types.append(v) @@ -1117,6 +1172,8 @@ def resolve_call(self) -> FunctionDefinition: unit = self.ttype.value.x matching_name_funcs = [p for p in unit.parts if isinstance(p, FunctionDefinition) and p.name.text == self.name.text] matching_param_types = [f for f in matching_name_funcs if self.check_arg_types(f)] + if len(matching_name_funcs) > 0: + self.check_arg_types(matching_name_funcs[0]) assert len(matching_param_types) == 1 return matching_param_types[0] @@ -1259,9 +1316,11 @@ class GetFunctionPointer(Expr): def type_of(self) -> soltypes.Type: def ts(params): return [p.var.ttype for p in params] + def its(params: list[ErrorParameter | Parameter | EventParameter]): + return [soltypes.FunctionParameter(p.var.name, p.var.ttype) for p in params] f = self.func.x modifiers = f.modifiers if hasattr(f, 'modifiers') else [] - return soltypes.FunctionType(ts(f.inputs), ts(f.outputs), modifiers) + return soltypes.FunctionType(its(f.inputs), ts(f.outputs), modifiers) def code_str(self): return f'fptr({self.func.x.parent.descriptor()}::{self.func.x.name.text})' @@ -1283,11 +1342,10 @@ class Revert(Stmt): @nodebase.NodeDataclass class RevertWithError(Revert): - error: nodebase.Ref[ErrorDefinition] - args: list[Expr] + error: CreateError def code_str(self): - return f'revert {self.error.x.name.text}({", ".join(e.code_str() for e in self.args)});' + return f'revert {self.error.code_str()};' @nodebase.NodeDataclass @@ -1352,4 +1410,5 @@ class UnprocessedCode(Stmt): | soltypes.AnyType | soltypes.MappingType | soltypes.StringType | soltypes.AddressType | soltypes.FixedLengthArrayType | soltypes.ByteType | soltypes.MetaTypeType | soltypes.TupleType | soltypes.PreciseIntType | soltypes.PreciseIntType - | soltypes.BuiltinType | ResolvedUserType | SuperType | soltypes.FloatType) + | soltypes.BuiltinType | ResolvedUserType | SuperType | soltypes.FloatType + | soltypes.ErrorType | UserDefinedErrorType) diff --git a/src/solidity_parser/ast/symtab.py b/src/solidity_parser/ast/symtab.py index 27779f2..f6b335c 100644 --- a/src/solidity_parser/ast/symtab.py +++ b/src/solidity_parser/ast/symtab.py @@ -710,6 +710,9 @@ def __init__(self, parser_version: version_util.Version): block_object.add(BuiltinValue('difficulty', uint())) block_object.add(BuiltinValue('gaslimit', uint())) block_object.add(BuiltinValue('number', uint())) + # Add blobbasefee only for Solidity 0.8.24 and above + if parser_version and parser_version.is_enforced_in(version_util.Version(0, 8, 24)): + block_object.add(BuiltinValue('blobbasefee', uint())) block_object.add(now_symbol := BuiltinValue('timestamp', uint())) # now was used pre solidity 0.7 for block.timestamp self.add(block_object) @@ -768,11 +771,16 @@ def address_object(payable): self.add(BuiltinFunction('gasleft', [], [uint()])) - self.add(BuiltinFunction('blobhash', [uint()], [bytes32()])) + # Add blobhash only for Solidity 0.8.24 and above + if parser_version and parser_version.is_enforced_in(version_util.Version(0, 8, 24)): + self.add(BuiltinFunction('blobhash', [uint()], [bytes32()])) self.add(BuiltinFunction('blockhash', [uint()], [bytes32()])) self.add(BuiltinFunction('require', [soltypes.BoolType(), soltypes.StringType()], [])) self.add(BuiltinFunction('require', [soltypes.BoolType()], [])) + # Add require(bool, error) overload for Solidity 0.8.26 and above + if parser_version and parser_version.is_enforced_in(version_util.Version(0, 8, 26)): + self.add(BuiltinFunction('require', [soltypes.BoolType(), soltypes.ErrorType()], [])) self.add(BuiltinFunction('assert', [soltypes.BoolType()], [])) @@ -1642,10 +1650,10 @@ def make_symbols_for_node(self, node, context: Context, build_skeletons: bool, v else: return self.make_symbol(node, name=node.var_name.text) elif isinstance(node, solnodes.EventParameter): - if node.name is None: + if node.var_name is None: name = f' bool: """ Check if the type is a user defined type, e.g. struct, enum, contract, etc """ return False + def is_user_error(self) -> bool: + """ Check if the type is defined by a user defined Error function """ + return False + def is_address(self) -> bool: return False @@ -519,9 +523,20 @@ def ABIType() -> BuiltinType: return BuiltinType('abi') +@NodeDataclass +class FunctionParameter(Node): + """ + Shim: see Type to understand why + """ + name: 'Ident' + ttype: Type + scope: 'Scope' = field(default=None, init=False, repr=False, compare=False, hash=False) + + @NodeDataclass class FunctionType(Type): - inputs: list[Type] + input_params: list[FunctionParameter] + # TODO: maybe outputs need to use NamedType as well, unsure outputs: list[Type] # "By default, function types are internal, so the internal keyword can be omitted. Note that this only applies to # function types. Visibility has to be specified explicitly for functions defined in contracts, they do not have a @@ -548,18 +563,18 @@ def can_implicitly_cast_from(self, actual_type: 'Type') -> bool: # No other conversions between function types are possible if actual_type.is_function(): - if len(actual_type.inputs) != len(self.inputs): + if len(actual_type.input_params) != len(self.input_params): return False - return all([t1 == t2 for t1, t2 in zip(self.inputs, actual_type.inputs)]) + return all([t1.ttype == t2.ttype for t1, t2 in zip(self.input_params, actual_type.input_params)]) return False def code_str(self): # function () {internal|external} [pure|view|payable] [returns ()] - if self.inputs is None: + if self.input_params is None: input_params = '' else: - input_params = ", ".join(t.code_str() for t in self.inputs) + input_params = ", ".join(t.code_str() for t in self.input_params) if self.outputs is None: output_params = '' @@ -573,10 +588,10 @@ def __str__(self): def type_key(self, name_resolver=None, *args, **kwargs): # doesn't include modifiers for now - if self.inputs is None: + if self.input_params is None: input_params = '' else: - input_params = ', '.join([p.type_key(name_resolver, *args, **kwargs) for p in self.inputs]) + input_params = ', '.join([p.ttype.type_key(name_resolver, *args, **kwargs) for p in self.input_params]) if self.outputs is None: output_params = '' @@ -585,6 +600,22 @@ def type_key(self, name_resolver=None, *args, **kwargs): return f'function ({input_params}) returns ({output_params})' +@NodeDataclass +class ErrorType(Type): + # for now this type only occurs as a type filter for the 0.8.26 require() builtin that takes an error "object" as an arg + def __str__(self): + return '' + def is_builtin(self) -> bool: + return False + def code_str(self): + raise ValueError('ErrorType is not a printable') + def type_key(self, *args, **kwargs): + raise ValueError('ErrorType does not have a type key') + def can_implicitly_cast_from(self, actual_type: 'Type') -> bool: + if super().can_implicitly_cast_from(actual_type): + return True + return actual_type.is_user_error() + @NodeDataclass class TupleType(Type): """ diff --git a/src/solidity_parser/filesys.py b/src/solidity_parser/filesys.py index 7806cd9..7c76cdd 100644 --- a/src/solidity_parser/filesys.py +++ b/src/solidity_parser/filesys.py @@ -178,7 +178,6 @@ def lookup_import_path(self, import_path: str, importer_source_unit_name: str = loaded_source = self._add_loaded_source(source_unit_name, contents, origin=origin) if loaded_source: return loaded_source - raise ValueError(f"Can't import {import_path} from {importer_source_unit_name}") def _add_loaded_source(self, source_unit_name: str, source_code: str, creator=None, origin=None) -> LoadedSource: @@ -354,7 +353,9 @@ def _path_to_generic_string(path: Union[Path, str]) -> str: @staticmethod def _clean_path(*parts: List[str]) -> str: - return os.path.join(*parts).replace('\\', '/') + def strip(p): + return p if not p.startswith('/') else p[1:] + return os.path.join(*[strip(p) for p in parts]).replace('\\', '/') @staticmethod def _strip_prefix(prefix, path) -> Optional[Path]: diff --git a/test/solidity_parser/ast/snapshots/snap_test_ast2builder.py b/test/solidity_parser/ast/snapshots/snap_test_ast2builder.py index 79e571c..005d33c 100644 --- a/test/solidity_parser/ast/snapshots/snap_test_ast2builder.py +++ b/test/solidity_parser/ast/snapshots/snap_test_ast2builder.py @@ -16,9 +16,9 @@ "GetMember(obj_base=Ident(text='msg'), name=Ident(text='sender')) :: [AddressType(is_payable=False)]", "BinaryOp(left=GetMember(obj_base=Ident(text='msg'), name=Ident(text='sender')), right=Ident(text='addressValue'), op=) :: bool", "GetMember(obj_base=Ident(text='msg'), name=Ident(text='sender')) :: [AddressType(is_payable=False)]", - "CallFunction(callee=Ident(text='CustomError'), special_call_options=[], args=[Literal(value='This is a custom error', unit=None)]) :: []", + "CallFunction(callee=Ident(text='CustomError'), special_call_options=[], args=[Literal(value='This is a custom error', unit=None)]) :: error(CustomError)", "Literal(value='This is a custom error', unit=None) :: string(22)", - "CallFunction(callee=Ident(text='CustomError'), special_call_options=[], args=[Literal(value='This is a custom error', unit=None)]) :: []", + "CallFunction(callee=Ident(text='CustomError'), special_call_options=[], args=[Literal(value='This is a custom error', unit=None)]) :: error(CustomError)", "Literal(value='This is a custom error', unit=None) :: string(22)", "BinaryOp(left=Ident(text='booleanValue'), right=Literal(value=True, unit=None), op=])], type_overrides=[])") ] @@ -25,13 +19,6 @@ GenericRepr("ContractDefinition(source_unit_name='array_type_name.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='i'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), modifiers=[], value=None)], type_overrides=[])") ] -snapshots['TestASTJSONCases::test_success_path_ast_internal_function_id_export_sol 1'] = [ - GenericRepr("FileDefinition(source_unit_name='ast_internal_function_id_export.sol', name=Ident(text='ast_internal_function_id_export.sol'), parts=[FunctionDefinition(name=Ident(text='free1'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='free2'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='free3'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[], is_unchecked=False), markers=[])])"), - GenericRepr("LibraryDefinition(source_unit_name='ast_internal_function_id_export.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='ext'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='inr1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='inr2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='inr3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='access'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=GetFunctionPointer(func=)), ExprStmt(expr=GetFunctionPointer(func=)), ExprStmt(expr=GetFunctionPointer(func=))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='expression'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=))), ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=)))], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='ast_internal_function_id_export.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='ext1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='ext2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='ext3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='inr1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='inr2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='inr3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='access'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=GetFunctionPointer(func=)), ExprStmt(expr=GetFunctionPointer(func=)), ExprStmt(expr=GetFunctionPointer(func=)), ExprStmt(expr=GetFunctionPointer(func=)), ExprStmt(expr=GetFunctionPointer(func=))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='expression'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=))), ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=))), ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=))), ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=))), ExprStmt(expr=FunctionPointerCall(named_args=[], args=[], callee=GetFunctionPointer(func=)))], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='ast_internal_function_id_export.sol', name=Ident(text='D'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(C), args=[])], parts=[FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=FunctionCall(named_args=[], args=[], base=SelfObject(), name=Ident(text='access'))), ExprStmt(expr=FunctionCall(named_args=[], args=[], base=SelfObject(), name=Ident(text='expression')))], is_unchecked=False), markers=[])], type_overrides=[])") -] - snapshots['TestASTJSONCases::test_success_path_base_constructor_call_sol 1'] = [ GenericRepr("ContractDefinition(source_unit_name='base_constructor_call.sol', name=Ident(text='A'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='constructor'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='base_constructor_call.sol', name=Ident(text='C'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(A), args=[])], parts=[FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[SuperConstructorInvocationModifier(base_ttype=ResolvedUserType(A), inputs=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") @@ -102,7 +89,7 @@ ] snapshots['TestASTJSONCases::test_success_path_event_with_variables_of_internal_types_sol 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='event_with_variables_of_internal_types.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[EventDefinition(name=Ident(text='E'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=False)], is_anonymous=False)], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='event_with_variables_of_internal_types.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[EventDefinition(name=Ident(text='E'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=False)], is_anonymous=False)], type_overrides=[])") ] snapshots['TestASTJSONCases::test_success_path_fallback_and_receive_ether_sol 1'] = [ @@ -118,7 +105,7 @@ ] snapshots['TestASTJSONCases::test_success_path_function_type_sol 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='function_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='function_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestASTJSONCases::test_success_path_global_enum_sol 1'] = [ @@ -224,7 +211,7 @@ ] snapshots['TestASTJSONCases::test_success_path_used_errors_sol 1'] = [ - GenericRepr("FileDefinition(source_unit_name='used_errors.sol', name=Ident(text='used_errors.sol'), parts=[ErrorDefinition(name=Ident(text='X'), inputs=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[])], is_unchecked=False), markers=[])])"), + GenericRepr("FileDefinition(source_unit_name='used_errors.sol', name=Ident(text='used_errors.sol'), parts=[ErrorDefinition(name=Ident(text='X'), inputs=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(X), args=[]))], is_unchecked=False), markers=[])])"), GenericRepr("ContractDefinition(source_unit_name='used_errors.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='T'), inputs=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=DirectCall(call_options=[], args=[], ttype=ResolvedUserType(used_errors.sol), name=Ident(text='f')))], is_unchecked=False), markers=[])], type_overrides=[])") ] @@ -337,11 +324,6 @@ GenericRepr("ContractDefinition(source_unit_name='libraries/attached_public_library_function_accepting_calldata.sol.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='_x'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=1), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=1), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='_x'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], ttype=ResolvedUserType(D), name=Ident(text='f')), DirectCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='_x'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], ttype=ResolvedUserType(D), name=Ident(text='g'))])], is_unchecked=False), markers=[])], type_overrides=[LibraryOverride(overriden_type=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), library=ResolvedUserType(D))])") ] -snapshots['TestSemanticTestCases::test_debug 1'] = [ - GenericRepr("LibraryDefinition(source_unit_name='libraries/internal_library_function_attached_to_array_named_pop_push.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='pop'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=2), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='push'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=2), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_attached_to_array_named_pop_push.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='input'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=2), location=Location()), value=None), ExprStmt(expr=DirectCall(named_args=[], args=[LocalVarLoad(var=Var(name=Ident(text='input'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=2), location=Location()))], ttype=ResolvedUserType(L), name=Ident(text='push'))), ExprStmt(expr=DirectCall(named_args=[], args=[LocalVarLoad(var=Var(name=Ident(text='input'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=2), location=Location()))], ttype=ResolvedUserType(L), name=Ident(text='pop')))], is_unchecked=False), markers=[])], type_overrides=[LibraryOverride(overriden_type=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=2), library=ResolvedUserType(L))])") -] - snapshots['TestSemanticTestCases::test_success_path_abiEncoderV1/abi_decode_dynamic_array 1'] = [ GenericRepr("ContractDefinition(source_unit_name='abiEncoderV1/abi_decode_dynamic_array.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='data'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='data'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), TypeLiteral(ttype=TupleType(ttypes=[ArrayType(base_type=IntType(is_signed=False, size=256))]))], name='abi.decode', ttype=ArrayType(base_type=IntType(is_signed=False, size=256)))])], is_unchecked=False), markers=[])], type_overrides=[])") ] @@ -636,8 +618,8 @@ ] snapshots['TestSemanticTestCases::test_success_path_abiEncoderV2/cleanup/function 1'] = [ - GenericRepr("StructDefinition(source_unit_name='abiEncoderV2/cleanup/function.sol$C', name=Ident(text='S'), members=[StructMember(ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), name=Ident(text='f'))])"), - GenericRepr("ContractDefinition(source_unit_name='abiEncoderV2/cleanup/function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='ggg'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Assembly(code='assembly{r:=calldataload(4)}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ResolvedUserType(S), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='f'))), Assembly(code='assembly{r:=calldataload(4)}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='dummy'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='ffff'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()), value=CreateStruct(ttype=ResolvedUserType(S), args=[GetFunctionPointer(func=)])), Assembly(code='assembly{mstore(s,a)}'), Return(values=[FunctionCall(call_options=[], args=[StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='f'))], base=SelfObject(), name=Ident(text='ggg')), FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()))], base=SelfObject(), name=Ident(text='h'))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("StructDefinition(source_unit_name='abiEncoderV2/cleanup/function.sol$C', name=Ident(text='S'), members=[StructMember(ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), name=Ident(text='f'))])"), + GenericRepr("ContractDefinition(source_unit_name='abiEncoderV2/cleanup/function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='ggg'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Assembly(code='assembly{r:=calldataload(4)}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ResolvedUserType(S), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='f'))), Assembly(code='assembly{r:=calldataload(4)}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='dummy'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='ffff'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()), value=CreateStruct(ttype=ResolvedUserType(S), args=[GetFunctionPointer(func=)])), Assembly(code='assembly{mstore(s,a)}'), Return(values=[FunctionCall(call_options=[], args=[StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='f'))], base=SelfObject(), name=Ident(text='ggg')), FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()))], base=SelfObject(), name=Ident(text='h'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_abiEncoderV2/cleanup/intx 1'] = [ @@ -716,7 +698,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_abiEncoderV2/struct/validation_function_type_inside_struct 1'] = [ - GenericRepr("StructDefinition(source_unit_name='abiEncoderV2/struct/validation_function_type_inside_struct.sol$C', name=Ident(text='S'), members=[StructMember(ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), name=Ident(text='x'))])"), + GenericRepr("StructDefinition(source_unit_name='abiEncoderV2/struct/validation_function_type_inside_struct.sol$C', name=Ident(text='S'), members=[StructMember(ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), name=Ident(text='x'))])"), GenericRepr("ContractDefinition(source_unit_name='abiEncoderV2/struct/validation_function_type_inside_struct.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(S), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(S), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[Parameter(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='x'))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))], is_unchecked=False), markers=[])], type_overrides=[])") ] @@ -746,12 +728,12 @@ ] snapshots['TestSemanticTestCases::test_success_path_abiencodedecode/abi_encode_call_is_consistent 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='abiencodedecode/abi_encode_call_is_consistent.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='sideEffectRan'), ttype=BoolType(), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='fPointer'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256), StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))], outputs=[], modifiers=[VisibilityModifier(kind=)]), modifiers=[], value=None), FunctionDefinition(name=Ident(text='fExternal'), inputs=[Parameter(var=Var(name=Ident(text='p'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='t'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), StateVariableDeclaration(name=Ident(text='xstor'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), FunctionDefinition(name=Ident(text='getExternalFunctionPointer'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256), StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='sideEffectRan'), value=Literal(value=True, ttype=BoolType(), unit=None))), Return(values=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromLiteral'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[Literal(value='fExternal(uint256,string)', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=25), unit=None), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeWithSignature', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromLiteralCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[GetFunctionPointer(func=), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromMemory'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=Literal(value='fExternal(uint256,string)', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=25), unit=None)), Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeWithSignature', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromMemoryCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[GetFunctionPointer(func=), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromMemorys'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='xstor'), value=Literal(value='fExternal(uint256,string)', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=25), unit=None))), Return(values=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='xstor')), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeWithSignature', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fPointerCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='fPointer'), value=GetFunctionPointer(func=))), Return(values=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='fPointer')), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fLocalPointerCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='localFunctionPointer'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256), StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='localFunctionPointer'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256), StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fReturnedFunctionPointer'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='getExternalFunctionPointer')), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='assertConsistentSelectors'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteralCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemory'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemoryCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemoryCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemorys'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fPointerCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fLocalPointerCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fReturnedFunctionPointer'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType()))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='abiencodedecode/abi_encode_call_is_consistent.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='sideEffectRan'), ttype=BoolType(), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='fPointer'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256)), FunctionParameter(name=None, ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], outputs=[], modifiers=[VisibilityModifier(kind=)]), modifiers=[], value=None), FunctionDefinition(name=Ident(text='fExternal'), inputs=[Parameter(var=Var(name=Ident(text='p'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='t'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), StateVariableDeclaration(name=Ident(text='xstor'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), FunctionDefinition(name=Ident(text='getExternalFunctionPointer'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256)), FunctionParameter(name=None, ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='sideEffectRan'), value=Literal(value=True, ttype=BoolType(), unit=None))), Return(values=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromLiteral'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[Literal(value='fExternal(uint256,string)', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=25), unit=None), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeWithSignature', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromLiteralCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[GetFunctionPointer(func=), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromMemory'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=Literal(value='fExternal(uint256,string)', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=25), unit=None)), Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeWithSignature', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromMemoryCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[GetFunctionPointer(func=), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fSignatureFromMemorys'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='xstor'), value=Literal(value='fExternal(uint256,string)', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=25), unit=None))), Return(values=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='xstor')), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeWithSignature', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fPointerCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='fPointer'), value=GetFunctionPointer(func=))), Return(values=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='fPointer')), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fLocalPointerCall'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='localFunctionPointer'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256)), FunctionParameter(name=None, ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='localFunctionPointer'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256)), FunctionParameter(name=None, ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fReturnedFunctionPointer'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='getExternalFunctionPointer')), Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value='123', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='assertConsistentSelectors'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteralCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemory'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemoryCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemoryCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromMemorys'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fPointerCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fLocalPointerCall'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fReturnedFunctionPointer'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='fSignatureFromLiteral'))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)], name='assert', ttype=VoidType()))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_abiencodedecode/abi_encode_call_memory 1'] = [ GenericRepr("ContractDefinition(source_unit_name='abiencodedecode/abi_encode_call_memory.sol', name=Ident(text='D'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='something'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='abiencodedecode/abi_encode_call_memory.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='something'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=4), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location()), value=None), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), VarDecl(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))), VarDecl(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), VarDecl(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), VarDecl(var=Var(name=Ident(text='c'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Literal(value=4, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None), op=), right=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Literal(value=4, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None), op=), op=), right=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='c'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Literal(value=4, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None), op=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='c'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=ABISelector(function=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))), op=)], name='assert', ttype=VoidType())), Return(values=[Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='abiencodedecode/abi_encode_call_memory.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='something'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=4), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location()), value=None), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), VarDecl(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))), VarDecl(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), VarDecl(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), size=2), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), VarDecl(var=Var(name=Ident(text='c'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], name='abi.encodeCall', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Literal(value=4, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None), op=), right=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Literal(value=4, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None), op=), op=), right=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='c'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Literal(value=4, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None), op=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='c'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))), right=ABISelector(function=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))), op=)], name='assert', ttype=VoidType())), Return(values=[Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_abiencodedecode/abi_encode_call_special_args 1'] = [ @@ -885,7 +867,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_array/array_function_pointers 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='array/array_function_pointers.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f2'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), For(initialiser=VarDecl(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), condition=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), op=), advancement=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), op=, is_pre=True), body=ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))), index=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g2'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), For(initialiser=VarDecl(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), condition=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), op=), advancement=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), op=, is_pre=True), body=ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))), index=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='array/array_function_pointers.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f2'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), For(initialiser=VarDecl(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), condition=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), op=), advancement=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), op=, is_pre=True), body=ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))), index=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g2'), inputs=[Parameter(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), size=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)))), For(initialiser=VarDecl(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), condition=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='n'), ttype=IntType(is_signed=False, size=256), location=None)), op=), advancement=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), op=, is_pre=True), body=ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)])), size=LocalVarLoad(var=Var(name=Ident(text='m'), ttype=IntType(is_signed=False, size=256), location=None)))))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='arr'), ttype=ArrayType(base_type=ArrayType(base_type=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]))), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))), index=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None)))))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_array/array_memory_allocation/array_2d_zeroed_memory_index_access 1'] = [ @@ -1167,11 +1149,11 @@ ] snapshots['TestSemanticTestCases::test_success_path_array/copying/array_of_function_external_storage_to_storage_dynamic 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='array/copying/array_of_function_external_storage_to_storage_dynamic.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), StateVariableDeclaration(name=Ident(text='externalArray0'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='externalArray1'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray0'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray1'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)]))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)])))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyExternalStorageArrayOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray0'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray1'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyInternalArrayOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)], name='assert', ttype=VoidType())), Return(values=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1'))), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), op=), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='array/copying/array_of_function_external_storage_to_storage_dynamic.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), StateVariableDeclaration(name=Ident(text='externalArray0'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='externalArray1'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray0'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray1'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)]))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)])))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyExternalStorageArrayOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray0'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray1'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyInternalArrayOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)], name='assert', ttype=VoidType())), Return(values=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1'))), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), op=), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_array/copying/array_of_function_external_storage_to_storage_dynamic_different_mutability 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='array/copying/array_of_function_external_storage_to_storage_dynamic_different_mutability.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), StateVariableDeclaration(name=Ident(text='externalArray0'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='externalArray1'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray0'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray1'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)]))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)])))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyExternalStorageArraysOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray0'))], name='abi.encodePacked', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray1'))], name='abi.encodePacked', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyInternalArrayOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)], name='assert', ttype=VoidType())), Return(values=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1'))), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), op=), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='array/copying/array_of_function_external_storage_to_storage_dynamic_different_mutability.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testFunction3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), StateVariableDeclaration(name=Ident(text='externalArray0'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='externalArray1'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray0'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='internalArray1'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='externalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)]))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray1'), value=CreateInlineArray(elements=[GetFunctionPointer(func=), GetFunctionPointer(func=), GetFunctionPointer(func=)])))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyExternalStorageArraysOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray0'))], name='abi.encodePacked', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), right=BuiltInCall(call_options=[], args=[BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='externalArray1'))], name='abi.encodePacked', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], name='keccak256', ttype=FixedLengthArrayType(base_type=ByteType(), size=32)), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='copyInternalArrayOfFunctionType'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='internalArray0'), value=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)], name='assert', ttype=VoidType())), Return(values=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0'))), right=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1'))), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), op=), op=), right=BinaryOp(left=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray0')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), right=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='internalArray1')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), op=), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_array/copying/array_of_struct_calldata_to_memory 1'] = [ @@ -1337,7 +1319,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_array/copying/function_type_array_to_storage 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='array/copying/function_type_array_to_storage.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='log'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='fs'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='gs'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), FunctionDefinition(name=Ident(text='a'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='log')), Literal(value='[a called]', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=10), unit=None)], name='string.concat', ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='b'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='log')), Literal(value='[b called]', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=10), unit=None)], name='string.concat', ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='fs'), value=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='fs'), value=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), VarDecl(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], base=SelfObject(), name=Ident(text='f'))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='log'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test2'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), VarDecl(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], base=SelfObject(), name=Ident(text='g'))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='log'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test3'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='gs'), value=StateVarLoad(base=SelfObject(), name=Ident(text='fs')))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='gs')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='gs')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='log'))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='array/copying/function_type_array_to_storage.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='log'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='fs'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='gs'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), modifiers=[], value=None), FunctionDefinition(name=Ident(text='a'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='log')), Literal(value='[a called]', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=10), unit=None)], name='string.concat', ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='b'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='log')), Literal(value='[b called]', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=10), unit=None)], name='string.concat', ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='fs'), value=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='fs'), value=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), VarDecl(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], base=SelfObject(), name=Ident(text='f'))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='log'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test2'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), VarDecl(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], base=SelfObject(), name=Ident(text='g'))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='fs')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='log'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test3'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='log'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='gs'), value=StateVarLoad(base=SelfObject(), name=Ident(text='fs')))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='gs')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=ArrayLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='gs')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='log'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_array/copying/memory_dyn_2d_bytes_to_storage 1'] = [ @@ -2117,11 +2099,11 @@ ] snapshots['TestSemanticTestCases::test_success_path_constructor/constructor_function_argument 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='constructor/constructor_function_argument.sol', name=Ident(text='D'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='constructor'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None))], outputs=[], modifiers=[], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='constructor/constructor_function_argument.sol', name=Ident(text='D'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='constructor'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None))], outputs=[], modifiers=[], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_constructor/constructor_function_complex 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='constructor/constructor_function_complex.sol', name=Ident(text='D'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='x'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[], code=None, markers=[]), FunctionDefinition(name=Ident(text='constructor'), inputs=[Parameter(var=Var(name=Ident(text='g'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='x'), value=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='g'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)))))], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("ContractDefinition(source_unit_name='constructor/constructor_function_complex.sol', name=Ident(text='D'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='x'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[], code=None, markers=[]), FunctionDefinition(name=Ident(text='constructor'), inputs=[Parameter(var=Var(name=Ident(text='g'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='x'), value=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='g'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)))))], is_unchecked=False), markers=[])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='constructor/constructor_function_complex.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='d'), ttype=ResolvedUserType(D), location=None), value=CreateAndDeployContract(ttype=ResolvedUserType(D), call_options=[], args=[GetFunctionPointer(func=)])), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='r'), ttype=IntType(is_signed=False, size=256), location=None), value=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='d'), ttype=ResolvedUserType(D), location=None)), name=Ident(text='x'))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='sixteen'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=16, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=5), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") ] @@ -2145,7 +2127,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_constructor/functions_called_by_constructor_through_dispatch 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='constructor/functions_called_by_constructor_through_dispatch.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='setter'), ttype=FunctionType(inputs=[FixedLengthArrayType(base_type=ByteType(), size=6)], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[Literal(value='abcdef', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=6), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='setter'), ttype=FunctionType(inputs=[FixedLengthArrayType(base_type=ByteType(), size=6)], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))), ExprStmt(expr=FunctionCall(call_options=[], args=[GetFunctionPointer(func=), Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)], base=SelfObject(), name=Ident(text='applyShift')))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='getName'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='ret'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='name'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='setName'), inputs=[Parameter(var=Var(name=Ident(text='_name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='name'), value=LocalVarLoad(var=Var(name=Ident(text='_name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='leftByteShift'), inputs=[Parameter(var=Var(name=Ident(text='_value'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None)), Parameter(var=Var(name=Ident(text='_shift'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_value'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None)), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_shift'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=8, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=4), unit=None), op=), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='applyShift'), inputs=[Parameter(var=Var(name=Ident(text='_shiftOperator'), ttype=FunctionType(inputs=[FixedLengthArrayType(base_type=ByteType(), size=6), IntType(is_signed=False, size=256)], outputs=[FixedLengthArrayType(base_type=ByteType(), size=6)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='_bytes'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='name'), value=FunctionPointerCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='name')), LocalVarLoad(var=Var(name=Ident(text='_bytes'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='_shiftOperator'), ttype=FunctionType(inputs=[FixedLengthArrayType(base_type=ByteType(), size=6), IntType(is_signed=False, size=256)], outputs=[FixedLengthArrayType(base_type=ByteType(), size=6)], modifiers=[VisibilityModifier(kind=)]), location=None)))))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='constructor/functions_called_by_constructor_through_dispatch.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='setter'), ttype=FunctionType(input_params=[FunctionParameter(name=Ident(text='_name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[Literal(value='abcdef', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=6), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='setter'), ttype=FunctionType(input_params=[FunctionParameter(name=Ident(text='_name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6))], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))), ExprStmt(expr=FunctionCall(call_options=[], args=[GetFunctionPointer(func=), Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)], base=SelfObject(), name=Ident(text='applyShift')))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='getName'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='ret'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='name'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='setName'), inputs=[Parameter(var=Var(name=Ident(text='_name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='name'), value=LocalVarLoad(var=Var(name=Ident(text='_name'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='leftByteShift'), inputs=[Parameter(var=Var(name=Ident(text='_value'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None)), Parameter(var=Var(name=Ident(text='_shift'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_value'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6), location=None)), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_shift'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=8, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=4), unit=None), op=), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='applyShift'), inputs=[Parameter(var=Var(name=Ident(text='_shiftOperator'), ttype=FunctionType(input_params=[FunctionParameter(name=Ident(text='_value'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6)), FunctionParameter(name=Ident(text='_shift'), ttype=IntType(is_signed=False, size=256))], outputs=[FixedLengthArrayType(base_type=ByteType(), size=6)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='_bytes'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='name'), value=FunctionPointerCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='name')), LocalVarLoad(var=Var(name=Ident(text='_bytes'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='_shiftOperator'), ttype=FunctionType(input_params=[FunctionParameter(name=Ident(text='_value'), ttype=FixedLengthArrayType(base_type=ByteType(), size=6)), FunctionParameter(name=Ident(text='_shift'), ttype=IntType(is_signed=False, size=256))], outputs=[FixedLengthArrayType(base_type=ByteType(), size=6)], modifiers=[VisibilityModifier(kind=)]), location=None)))))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_constructor/inline_member_init_inheritence_without_constructor 1'] = [ @@ -2353,37 +2335,37 @@ GenericRepr("FileDefinition(source_unit_name='errors/error_in_library_and_interface.sol', name=Ident(text='errors/error_in_library_and_interface.sol'), parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='a'))])])"), GenericRepr("LibraryDefinition(source_unit_name='errors/error_in_library_and_interface.sol', name=Ident(text='L'), parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='a')), ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='b'))])], type_overrides=[])"), GenericRepr("InterfaceDefinition(source_unit_name='errors/error_in_library_and_interface.sol', name=Ident(text='I'), inherits=[], parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='a')), ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='b')), ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='c'))])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='errors/error_in_library_and_interface.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/error_in_library_and_interface.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)]))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)]))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_errors/error_static_calldata_uint_array_and_dynamic_array 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='errors/error_static_calldata_uint_array_and_dynamic_array.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), name=Ident(text=None)), ErrorParameter(ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=1), name=Ident(text=None))]), FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), Parameter(var=Var(name=Ident(text='b'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=1), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), LocalVarLoad(var=Var(name=Ident(text='b'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=1), location=Location()))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/error_static_calldata_uint_array_and_dynamic_array.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), name=Ident(text=None)), ErrorParameter(ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=1), name=Ident(text=None))]), FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), Parameter(var=Var(name=Ident(text='b'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=1), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), LocalVarLoad(var=Var(name=Ident(text='b'), ttype=FixedLengthArrayType(base_type=IntType(is_signed=False, size=256), size=1), location=Location()))]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_errors/named_error_args 1'] = [ GenericRepr("FileDefinition(source_unit_name='errors/named_error_args.sol', name=Ident(text='errors/named_error_args.sol'), parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='a')), ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='b'))])])"), - GenericRepr("ContractDefinition(source_unit_name='errors/named_error_args.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[NamedArgument(name=Ident(text='b'), expr=Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)), NamedArgument(name=Ident(text='a'), expr=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/named_error_args.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[NamedArgument(name=Ident(text='b'), expr=Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)), NamedArgument(name=Ident(text='a'), expr=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_errors/revert_conversion 1'] = [ GenericRepr("FileDefinition(source_unit_name='errors/revert_conversion.sol', name=Ident(text='errors/revert_conversion.sol'), parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), name=Ident(text='a')), ErrorParameter(ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), name=Ident(text='b'))])])"), - GenericRepr("ContractDefinition(source_unit_name='errors/revert_conversion.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=DynamicBuiltInCall(call_options=[], args=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)], ttype=VoidType(), base=StateVarLoad(base=SelfObject(), name=Ident(text='x')), name='push')), RevertWithError(error=, args=[Literal(value='abc', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None), StateVarLoad(base=SelfObject(), name=Ident(text='x'))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/revert_conversion.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=DynamicBuiltInCall(call_options=[], args=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)], ttype=VoidType(), base=StateVarLoad(base=SelfObject(), name=Ident(text='x')), name='push')), RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value='abc', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None), StateVarLoad(base=SelfObject(), name=Ident(text='x'))]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_errors/simple 1'] = [ GenericRepr("FileDefinition(source_unit_name='errors/simple.sol', name=Ident(text='errors/simple.sol'), parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='a')), ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='b'))])])"), - GenericRepr("ContractDefinition(source_unit_name='errors/simple.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/simple.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_errors/via_contract_type 1'] = [ GenericRepr("ContractDefinition(source_unit_name='errors/via_contract_type.sol', name=Ident(text='A'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text=None))])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='errors/via_contract_type.sol', name=Ident(text='X'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='E'), inputs=[ErrorParameter(ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), name=Ident(text=None))])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='errors/via_contract_type.sol', name=Ident(text='B'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(A), args=[])], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value='abc', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/via_contract_type.sol', name=Ident(text='B'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(A), args=[])], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)]))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)]))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(E), args=[Literal(value='abc', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=3), unit=None)]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_errors/weird_name 1'] = [ GenericRepr("FileDefinition(source_unit_name='errors/weird_name.sol', name=Ident(text='errors/weird_name.sol'), parts=[ErrorDefinition(name=Ident(text='error'), inputs=[ErrorParameter(ttype=IntType(is_signed=False, size=256), name=Ident(text='a'))])])"), - GenericRepr("ContractDefinition(source_unit_name='errors/weird_name.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='errors/weird_name.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(error), args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_events/event 1'] = [ @@ -2475,11 +2457,11 @@ ] snapshots['TestSemanticTestCases::test_success_path_events/event_indexed_function 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='events/event_indexed_function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[EventDefinition(name=Ident(text='Test'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=True)], is_anonymous=False), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='events/event_indexed_function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[EventDefinition(name=Ident(text='Test'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=True)], is_anonymous=False), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_events/event_indexed_function2 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='events/event_indexed_function2.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[EventDefinition(name=Ident(text='TestA'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=True)], is_anonymous=False), EventDefinition(name=Ident(text='TestB'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=True)], is_anonymous=False), FunctionDefinition(name=Ident(text='f1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f2'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='events/event_indexed_function2.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[EventDefinition(name=Ident(text='TestA'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=True)], is_anonymous=False), EventDefinition(name=Ident(text='TestB'), inputs=[EventParameter(name=Ident(text=')]), is_indexed=True)], is_anonymous=False), FunctionDefinition(name=Ident(text='f1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f2'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[GetFunctionPointer(func=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_events/event_indexed_mixed 1'] = [ @@ -2607,7 +2589,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_expressions/conditional_expression_functions 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='expressions/conditional_expression_functions.sol', name=Ident(text='test'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='x'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='y'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='cond'), ttype=BoolType(), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='z'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None), value=TernaryOp(condition=LocalVarLoad(var=Var(name=Ident(text='cond'), ttype=BoolType(), location=None)), left=GetFunctionPointer(func=), right=GetFunctionPointer(func=))), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='z'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='expressions/conditional_expression_functions.sol', name=Ident(text='test'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='x'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='y'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='cond'), ttype=BoolType(), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='z'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None), value=TernaryOp(condition=LocalVarLoad(var=Var(name=Ident(text='cond'), ttype=BoolType(), location=None)), left=GetFunctionPointer(func=), right=GetFunctionPointer(func=))), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='z'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_expressions/conditional_expression_multiple 1'] = [ @@ -2871,7 +2853,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_functionCall/call_function_returning_nothing_via_pointer 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionCall/call_function_returning_nothing_via_pointer.sol', name=Ident(text='test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='flag'), ttype=BoolType(), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='flag'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='flag'), ttype=BoolType(), location=None))], modifiers=[], code=None, markers=[]), FunctionDefinition(name=Ident(text='f0'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='flag'), value=Literal(value=True, ttype=BoolType(), unit=None)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='flag'))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionCall/call_function_returning_nothing_via_pointer.sol', name=Ident(text='test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='flag'), ttype=BoolType(), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='flag'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='flag'), ttype=BoolType(), location=None))], modifiers=[], code=None, markers=[]), FunctionDefinition(name=Ident(text='f0'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='flag'), value=Literal(value=True, ttype=BoolType(), unit=None)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='flag'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionCall/call_options_overload 1'] = [ @@ -2888,7 +2870,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_functionCall/calling_uninitialized_function 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionCall/calling_uninitialized_function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='intern'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))), Return(values=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='extern'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))), Return(values=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionCall/calling_uninitialized_function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='intern'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))), Return(values=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='extern'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))), Return(values=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionCall/creation_function_call_no_args 1'] = [ @@ -3093,36 +3075,36 @@ ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/comparison_operator_for_external_function_cleans_dirty_bits 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/comparison_operator_for_external_function_cleans_dirty_bits.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='comparison_operators_for_external_function_pointers_with_dirty_bits'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='g_ptr_dirty'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Assembly(code='assembly{g_ptr_dirty.address:=or(g_ptr_dirty.address,shl(160,sub(0,1)))g_ptr_dirty.selector:=or(g_ptr_dirty.selector,shl(32,sub(0,1)))}'), VarDecl(var=Var(name=Ident(text='g_ptr'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_ptr'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='g_ptr_dirty'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/comparison_operator_for_external_function_cleans_dirty_bits.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='comparison_operators_for_external_function_pointers_with_dirty_bits'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='g_ptr_dirty'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Assembly(code='assembly{g_ptr_dirty.address:=or(g_ptr_dirty.address,shl(160,sub(0,1)))g_ptr_dirty.selector:=or(g_ptr_dirty.selector,shl(32,sub(0,1)))}'), VarDecl(var=Var(name=Ident(text='g_ptr'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_ptr'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='g_ptr_dirty'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/comparison_operators_for_external_functions 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/comparison_operators_for_external_functions.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='i'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='comparison_operators_for_external_functions'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='comparison_operators_for_local_external_function_pointers'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/comparison_operators_for_external_functions.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='i'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='comparison_operators_for_external_functions'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='comparison_operators_for_local_external_function_pointers'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='f_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='g_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=BinaryOp(left=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), op=), right=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='h_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='i_local'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/duplicated_function_definition_with_same_id_in_internal_dispatcher 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/duplicated_function_definition_with_same_id_in_internal_dispatcher.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='a'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr1'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='ptr2'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[]), location=None), value=GetFunctionPointer(func=))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/duplicated_function_definition_with_same_id_in_internal_dispatcher.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='a'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr1'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='ptr2'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[]), location=None), value=GetFunctionPointer(func=))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/external_functions_with_calldata_args_assigned_to_function_pointers_with_memory_type 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/external_functions_with_calldata_args_assigned_to_function_pointers_with_memory_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='main'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[FunctionPointerCall(call_options=[], args=[Literal(value='testString', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=10), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/external_functions_with_calldata_args_assigned_to_function_pointers_with_memory_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='main'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[FunctionPointerCall(call_options=[], args=[Literal(value='testString', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=10), unit=None)], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/function_delete_stack 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/function_delete_stack.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='a'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='y'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='y'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None)), op=, is_pre=True)), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='y'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None))))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/function_delete_stack.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='a'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=7, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=3), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='y'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='y'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None)), op=, is_pre=True)), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='y'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), location=None))))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/function_type_library_internal 1'] = [ - GenericRepr("LibraryDefinition(source_unit_name='functionTypes/function_type_library_internal.sol', name=Ident(text='Utils'), parts=[FunctionDefinition(name=Ident(text='reduce'), inputs=[Parameter(var=Var(name=Ident(text='array'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), Parameter(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256), IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[For(initialiser=VarDecl(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), condition=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), right=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='array'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location()))), op=), advancement=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), op=, is_pre=False), body=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None), value=FunctionPointerCall(call_options=[], args=[ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='array'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))), LocalVarLoad(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256), IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))))], is_unchecked=False)), Return(values=[LocalVarLoad(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='sum'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None)), op=)])], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("LibraryDefinition(source_unit_name='functionTypes/function_type_library_internal.sol', name=Ident(text='Utils'), parts=[FunctionDefinition(name=Ident(text='reduce'), inputs=[Parameter(var=Var(name=Ident(text='array'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), Parameter(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256)), FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[For(initialiser=VarDecl(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), condition=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), right=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=LocalVarLoad(var=Var(name=Ident(text='array'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location()))), op=), advancement=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None)), op=, is_pre=False), body=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None), value=FunctionPointerCall(call_options=[], args=[ArrayLoad(base=LocalVarLoad(var=Var(name=Ident(text='array'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), index=LocalVarLoad(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))), LocalVarLoad(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256)), FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))))], is_unchecked=False)), Return(values=[LocalVarLoad(var=Var(name=Ident(text='init'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='sum'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None)), op=)])], is_unchecked=False), markers=[])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='functionTypes/function_type_library_internal.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=ArrayType(base_type=IntType(is_signed=False, size=256)), location=Location())), GetFunctionPointer(func=), Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)], ttype=ResolvedUserType(Utils), name=Ident(text='reduce'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/pass_function_types_externally 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/pass_function_types_externally.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], base=SelfObject(), name=Ident(text='eval'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f2'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], base=SelfObject(), name=Ident(text='eval'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='eval'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/pass_function_types_externally.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], base=SelfObject(), name=Ident(text='eval'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f2'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], base=SelfObject(), name=Ident(text='eval'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='eval'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/pass_function_types_internally 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/pass_function_types_internally.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], base=SelfObject(), name=Ident(text='eval'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='eval'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/pass_function_types_internally.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], base=SelfObject(), name=Ident(text='eval'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='eval'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/same_function_in_construction_and_runtime 1'] = [ @@ -3130,7 +3112,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/same_function_in_construction_and_runtime_equality_check 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='functionTypes/same_function_in_construction_and_runtime_equality_check.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='x'), value=GetFunctionPointer(func=)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=StateVarLoad(base=SelfObject(), name=Ident(text='x')), right=GetFunctionPointer(func=), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='_arg'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text='_ret'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='_ret'), ttype=IntType(is_signed=False, size=256), location=None), value=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_arg'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='functionTypes/same_function_in_construction_and_runtime_equality_check.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[]), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='x'), value=GetFunctionPointer(func=)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=StateVarLoad(base=SelfObject(), name=Ident(text='x')), right=GetFunctionPointer(func=), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='_arg'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text='_ret'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='_ret'), ttype=IntType(is_signed=False, size=256), location=None), value=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_arg'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_functionTypes/selector_1 1'] = [ @@ -3226,7 +3208,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_immutable/immutable_signed 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='immutable/immutable_signed.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='a'), ttype=IntType(is_signed=True, size=8), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='b'), ttype=FixedLengthArrayType(base_type=ByteType(), size=2), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='f'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), modifiers=[MutabilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='viaasm'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None)), Parameter(var=Var(name=Ident(text='y'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=True, size=8), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='a'))), VarDecl(var=Var(name=Ident(text='_b'), ttype=FixedLengthArrayType(base_type=ByteType(), size=2), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='b'))), Assembly(code='assembly{x:=_ay:=_b}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='immutable/immutable_signed.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='a'), ttype=IntType(is_signed=True, size=8), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='b'), ttype=FixedLengthArrayType(base_type=ByteType(), size=2), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='f'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), modifiers=[MutabilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='viaasm'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None)), Parameter(var=Var(name=Ident(text='y'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=True, size=8), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='a'))), VarDecl(var=Var(name=Ident(text='_b'), ttype=FixedLengthArrayType(base_type=ByteType(), size=2), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='b'))), Assembly(code='assembly{x:=_ay:=_b}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_immutable/increment_decrement 1'] = [ @@ -3332,7 +3314,7 @@ snapshots['TestSemanticTestCases::test_success_path_inheritance/inherited_function_through_dispatch 1'] = [ GenericRepr("ContractDefinition(source_unit_name='inheritance/inherited_function_through_dispatch.sol', name=Ident(text='A'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='inheritance/inherited_function_through_dispatch.sol', name=Ident(text='B'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(A), args=[])], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), OverrideSpecifier(bases=[])], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='inheritance/inherited_function_through_dispatch.sol', name=Ident(text='B'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(A), args=[])], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), OverrideSpecifier(bases=[])], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_inheritance/overloaded_function_call_resolve_to_first 1'] = [ @@ -3456,11 +3438,11 @@ ] snapshots['TestSemanticTestCases::test_success_path_inlineAssembly/external_function_pointer_selector 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='inlineAssembly/external_function_pointer_selector.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testYul'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=32), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='fp'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='selectorValue'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), Assembly(code='assembly{selectorValue:=fp.selector}'), Return(values=[Cast(ttype=IntType(is_signed=False, size=32), value=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=32), value=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='selectorValue'), ttype=IntType(is_signed=False, size=256), location=None)), right=BinaryOp(left=Literal(value=256, ttype=PreciseIntType(is_signed=False, size=16, real_bit_length=9), unit=None), right=Literal(value=32, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=6), unit=None), op=), op=))))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testSol'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=32), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Cast(ttype=IntType(is_signed=False, size=32), value=ABISelector(function=))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='inlineAssembly/external_function_pointer_selector.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testYul'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=32), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='fp'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='selectorValue'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), Assembly(code='assembly{selectorValue:=fp.selector}'), Return(values=[Cast(ttype=IntType(is_signed=False, size=32), value=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=4), value=Cast(ttype=FixedLengthArrayType(base_type=ByteType(), size=32), value=BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='selectorValue'), ttype=IntType(is_signed=False, size=256), location=None)), right=BinaryOp(left=Literal(value=256, ttype=PreciseIntType(is_signed=False, size=16, real_bit_length=9), unit=None), right=Literal(value=32, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=6), unit=None), op=), op=))))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testSol'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=32), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Cast(ttype=IntType(is_signed=False, size=32), value=ABISelector(function=))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_inlineAssembly/external_function_pointer_selector_assignment 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='inlineAssembly/external_function_pointer_selector_assignment.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testYul'), inputs=[Parameter(var=Var(name=Ident(text='newSelector'), ttype=IntType(is_signed=False, size=32), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=32), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='fp'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Assembly(code='assembly{fp.selector:=newSelector}'), Return(values=[Cast(ttype=IntType(is_signed=False, size=32), value=ABISelector(function=LocalVarLoad(var=Var(name=Ident(text='fp'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='inlineAssembly/external_function_pointer_selector_assignment.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='testFunction'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='testYul'), inputs=[Parameter(var=Var(name=Ident(text='newSelector'), ttype=IntType(is_signed=False, size=32), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=32), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='fp'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Assembly(code='assembly{fp.selector:=newSelector}'), Return(values=[Cast(ttype=IntType(is_signed=False, size=32), value=ABISelector(function=LocalVarLoad(var=Var(name=Ident(text='fp'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_inlineAssembly/external_identifier_access_shadowing 1'] = [ @@ -3661,7 +3643,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_inlineAssembly/tstore_hidden_staticcall 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='inlineAssembly/tstore_hidden_staticcall.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Assembly(code='assembly{tstore(0,0)}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='ptr2'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=None), Assembly(code='assembly{ptr2:=ptr}'), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr2'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='g')))], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='inlineAssembly/tstore_hidden_staticcall.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Assembly(code='assembly{tstore(0,0)}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), VarDecl(var=Var(name=Ident(text='ptr2'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=None), Assembly(code='assembly{ptr2:=ptr}'), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr2'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='g')))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_integer/basic 1'] = [ @@ -3792,7 +3774,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_libraries/external_call_with_function_pointer_parameter 1'] = [ - GenericRepr("LibraryDefinition(source_unit_name='libraries/external_call_with_function_pointer_parameter.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='run'), inputs=[Parameter(var=Var(name=Ident(text='_operation'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='_operation'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("LibraryDefinition(source_unit_name='libraries/external_call_with_function_pointer_parameter.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='run'), inputs=[Parameter(var=Var(name=Ident(text='_operation'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='_operation'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='libraries/external_call_with_function_pointer_parameter.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None)), right=LocalVarLoad(var=Var(name=Ident(text='_a'), ttype=IntType(is_signed=False, size=256), location=None)), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='_value'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='_value'), ttype=IntType(is_signed=False, size=256), location=None))], ttype=ResolvedUserType(L), name=Ident(text='run'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] @@ -3849,8 +3831,8 @@ ] snapshots['TestSemanticTestCases::test_success_path_libraries/internal_library_function_attached_to_external_function_type 1'] = [ - GenericRepr("LibraryDefinition(source_unit_name='libraries/internal_library_function_attached_to_external_function_type.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_attached_to_external_function_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='identity'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[Parameter(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], ttype=ResolvedUserType(L), name=Ident(text='double'))])], is_unchecked=False), markers=[])], type_overrides=[LibraryOverride(overriden_type=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), library=ResolvedUserType(L))])") + GenericRepr("LibraryDefinition(source_unit_name='libraries/internal_library_function_attached_to_external_function_type.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_attached_to_external_function_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='identity'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[Parameter(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], ttype=ResolvedUserType(L), name=Ident(text='double'))])], is_unchecked=False), markers=[])], type_overrides=[LibraryOverride(overriden_type=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), library=ResolvedUserType(L))])") ] snapshots['TestSemanticTestCases::test_success_path_libraries/internal_library_function_attached_to_fixed_bytes 1'] = [ @@ -3871,8 +3853,8 @@ ] snapshots['TestSemanticTestCases::test_success_path_libraries/internal_library_function_attached_to_internal_function_type 1'] = [ - GenericRepr("LibraryDefinition(source_unit_name='libraries/internal_library_function_attached_to_internal_function_type.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_attached_to_internal_function_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='identity'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[Parameter(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], ttype=ResolvedUserType(L), name=Ident(text='double'))])], is_unchecked=False), markers=[])], type_overrides=[LibraryOverride(overriden_type=FunctionType(inputs=[IntType(is_signed=False, size=256)], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), library=ResolvedUserType(L))])") + GenericRepr("LibraryDefinition(source_unit_name='libraries/internal_library_function_attached_to_internal_function_type.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='double'), inputs=[Parameter(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], callee=LocalVarLoad(var=Var(name=Ident(text='f'), ttype=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)])], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_attached_to_internal_function_type.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='identity'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='test'), inputs=[Parameter(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[DirectCall(call_options=[], args=[GetFunctionPointer(func=), LocalVarLoad(var=Var(name=Ident(text='value'), ttype=IntType(is_signed=False, size=256), location=None))], ttype=ResolvedUserType(L), name=Ident(text='double'))])], is_unchecked=False), markers=[])], type_overrides=[LibraryOverride(overriden_type=FunctionType(input_params=[FunctionParameter(name=None, ttype=IntType(is_signed=False, size=256))], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), library=ResolvedUserType(L))])") ] snapshots['TestSemanticTestCases::test_success_path_libraries/internal_library_function_attached_to_mapping 1'] = [ @@ -3903,7 +3885,7 @@ snapshots['TestSemanticTestCases::test_success_path_libraries/internal_library_function_pointer 1'] = [ GenericRepr("LibraryDefinition(source_unit_name='libraries/internal_library_function_pointer.sol', name=Ident(text='L'), parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=66, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=7), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_pointer.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=))), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='libraries/internal_library_function_pointer.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=))), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_libraries/internal_library_function_return_var_size 1'] = [ @@ -4593,7 +4575,7 @@ snapshots['TestSemanticTestCases::test_success_path_reverts/error_struct 1'] = [ GenericRepr("StructDefinition(source_unit_name='reverts/error_struct.sol', name=Ident(text='error'), members=[StructMember(ttype=IntType(is_signed=False, size=256), name=Ident(text='error'))])"), - GenericRepr("ContractDefinition(source_unit_name='reverts/error_struct.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='test'), inputs=[]), StateVariableDeclaration(name=Ident(text='_struct'), ttype=ResolvedUserType(error), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=StateVarLoad(base=SelfObject(), name=Ident(text='_struct')), name=Ident(text='error'), value=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None)))), Return(values=[StateVarLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='_struct')), name=Ident(text='error'))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='reverts/error_struct.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[ErrorDefinition(name=Ident(text='test'), inputs=[]), StateVariableDeclaration(name=Ident(text='_struct'), ttype=ResolvedUserType(error), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(test), args=[]))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[Parameter(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=StateVarLoad(base=SelfObject(), name=Ident(text='_struct')), name=Ident(text='error'), value=LocalVarLoad(var=Var(name=Ident(text='x'), ttype=IntType(is_signed=False, size=256), location=None)))), Return(values=[StateVarLoad(base=StateVarLoad(base=SelfObject(), name=Ident(text='_struct')), name=Ident(text='error'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_reverts/invalid_enum_as_external_arg 1'] = [ @@ -4901,7 +4883,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_strings/empty_storage_string 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='strings/empty_storage_string.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='uninitializedString'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='emptyString'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='nonEmptyString'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='nonEmptyString2'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='uninitializedBytes'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='emptyBytes'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), ErrorDefinition(name=Ident(text='EmptyError'), inputs=[ErrorParameter(ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), name=Ident(text=None))]), EventDefinition(name=Ident(text='EmptyEvent'), inputs=[EventParameter(name=Ident(text=')], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString')), StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString')), StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='i'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString')), StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='j'), inputs=[Parameter(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='k'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='nonEmptyString2'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString2'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='l'), inputs=[Parameter(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='m'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), Return(values=[Cast(ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), value=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='n'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=, args=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='o'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='p'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='q'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedBytes'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='r'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='emptyBytes'), value=BuiltInCall(call_options=[], args=[Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None)], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyBytes'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='s'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='emptyBytes'), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyBytes'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='set'), inputs=[Parameter(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='nonEmptyString'), value=LocalVarLoad(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='get'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString'))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='strings/empty_storage_string.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='uninitializedString'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='emptyString'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='nonEmptyString'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='nonEmptyString2'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='uninitializedBytes'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='emptyBytes'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), modifiers=[], value=None), ErrorDefinition(name=Ident(text='EmptyError'), inputs=[ErrorParameter(ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), name=Ident(text=None))]), EventDefinition(name=Ident(text='EmptyEvent'), inputs=[EventParameter(name=Ident(text=')], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString')), StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString')), StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='i'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())), Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString')), StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='j'), inputs=[Parameter(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='k'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='nonEmptyString2'), value=Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString2'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='l'), inputs=[Parameter(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[BuiltInCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='m'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)))), Return(values=[Cast(ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), value=LocalVarLoad(var=Var(name=Ident(text='b'), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location())))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='n'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[RevertWithError(error=CreateError(ttype=error(EmptyError), args=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString'))]))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='o'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyString'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='p'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[EmitEvent(event=, args=[Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='q'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedBytes'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='r'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='emptyBytes'), value=BuiltInCall(call_options=[], args=[Literal(value='', ttype=PreciseStringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1), real_size=0), unit=None)], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyBytes'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='s'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='emptyBytes'), value=BuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='uninitializedString'))], name='abi.encode', ttype=BytesType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1))))), Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='emptyBytes'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='set'), inputs=[Parameter(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='nonEmptyString'), value=LocalVarLoad(var=Var(name=Ident(text='_s'), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='get'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=StringType(base_type=FixedLengthArrayType(base_type=ByteType(), size=1)), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='nonEmptyString'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_strings/empty_string 1'] = [ @@ -5109,9 +5091,9 @@ ] snapshots['TestSemanticTestCases::test_success_path_structs/function_type_copy 1'] = [ - GenericRepr("StructDefinition(source_unit_name='structs/function_type_copy.sol', name=Ident(text='S'), members=[StructMember(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), name=Ident(text='functions'))])"), - GenericRepr("ContractDefinition(source_unit_name='structs/function_type_copy.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(S), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()), value=None), ExprStmt(expr=StateVarStore(base=LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions'), value=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())))), Return(values=[LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()))])], is_unchecked=False), markers=[])], type_overrides=[])"), - GenericRepr("ContractDefinition(source_unit_name='structs/function_type_copy.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='c'), ttype=ResolvedUserType(C), modifiers=[MutabilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), value=GetFunctionPointer(func=))), VarDecl(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location()), value=FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], base=StateVarLoad(base=SelfObject(), name=Ident(text='c')), name=Ident(text='f'))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions'))), right=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=ArrayLoad(base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=ArrayLoad(base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=ArrayLoad(base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='random1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='random2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='random3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("StructDefinition(source_unit_name='structs/function_type_copy.sol', name=Ident(text='S'), members=[StructMember(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), name=Ident(text='functions'))])"), + GenericRepr("ContractDefinition(source_unit_name='structs/function_type_copy.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[Parameter(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(S), location=Location()))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()), value=None), ExprStmt(expr=StateVarStore(base=LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions'), value=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())))), Return(values=[LocalVarLoad(var=Var(name=Ident(text='s'), ttype=ResolvedUserType(S), location=Location()))])], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("ContractDefinition(source_unit_name='structs/function_type_copy.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='c'), ttype=ResolvedUserType(C), modifiers=[MutabilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='test'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()), value=CreateMemoryArray(ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), size=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), value=GetFunctionPointer(func=))), ExprStmt(expr=ArrayStore(base=LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location())), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), value=GetFunctionPointer(func=))), VarDecl(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location()), value=FunctionCall(call_options=[], args=[LocalVarLoad(var=Var(name=Ident(text='functions'), ttype=ArrayType(base_type=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)])), location=Location()))], base=StateVarLoad(base=SelfObject(), name=Ident(text='c')), name=Ident(text='f'))), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=DynamicBuiltInValue(name='length', ttype=IntType(is_signed=False, size=256), base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions'))), right=Literal(value=3, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=ArrayLoad(base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions')), index=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=ArrayLoad(base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions')), index=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=ArrayLoad(base=StateVarLoad(base=LocalVarLoad(var=Var(name=Ident(text='ret'), ttype=ResolvedUserType(S), location=Location())), name=Ident(text='functions')), index=Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)), right=GetFunctionPointer(func=), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='random1'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='random2'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='random3'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_structs/global 1'] = [ @@ -5326,7 +5308,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_tryCatch/return_function 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='tryCatch/return_function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='h'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='h'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=9, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=4), unit=None)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Try(expr=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='g')), return_parameters=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='h'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], body=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), LocalVarLoad(var=Var(name=Ident(text='h'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), catch_clauses=[Catch(ident=None, parameters=[], body=Block(stmts=[], is_unchecked=False))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fun'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='tryCatch/return_function.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='h'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='h'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None), value=Literal(value=9, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=4), unit=None)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Try(expr=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='g')), return_parameters=[Parameter(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), Parameter(var=Var(name=Ident(text='h'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), Parameter(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))], body=Block(stmts=[Return(values=[LocalVarLoad(var=Var(name=Ident(text='a'), ttype=IntType(is_signed=False, size=256), location=None)), LocalVarLoad(var=Var(name=Ident(text='h'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)), LocalVarLoad(var=Var(name=Ident(text='b'), ttype=IntType(is_signed=False, size=256), location=None))])], is_unchecked=False), catch_clauses=[Catch(ident=None, parameters=[], body=Block(stmts=[], is_unchecked=False))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='fun'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_tryCatch/simple 1'] = [ @@ -5501,16 +5483,16 @@ ] snapshots['TestSemanticTestCases::test_success_path_uninitializedFunctionPointer/invalidInConstructor 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='uninitializedFunctionPointer/invalidInConstructor.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='storedFn'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='flag'), ttype=BoolType(), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[If(condition=UnaryOp(expr=StateVarLoad(base=SelfObject(), name=Ident(text='flag')), op=, is_pre=True), true_branch=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='flag'), value=Literal(value=True, ttype=BoolType(), unit=None))), VarDecl(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='storedFn'), value=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))))], is_unchecked=False), false_branch=None)], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("ContractDefinition(source_unit_name='uninitializedFunctionPointer/invalidInConstructor.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='storedFn'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), modifiers=[], value=None), StateVariableDeclaration(name=Ident(text='flag'), ttype=BoolType(), modifiers=[], value=None), FunctionDefinition(name=Ident(text='constructor'), inputs=[], outputs=[], modifiers=[], code=Block(stmts=[If(condition=UnaryOp(expr=StateVarLoad(base=SelfObject(), name=Ident(text='flag')), op=, is_pre=True), true_branch=Block(stmts=[ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='flag'), value=Literal(value=True, ttype=BoolType(), unit=None))), VarDecl(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=StateVarStore(base=SelfObject(), name=Ident(text='storedFn'), value=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))), ExprStmt(expr=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))))], is_unchecked=False), false_branch=None)], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[], is_unchecked=False), markers=[])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='uninitializedFunctionPointer/invalidInConstructor.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[ExprStmt(expr=CreateAndDeployContract(ttype=ResolvedUserType(C), call_options=[], args=[]))], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_uninitializedFunctionPointer/uninitialized_internal_storage_function_legacy 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='uninitializedFunctionPointer/uninitialized_internal_storage_function_legacy.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='t'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='x'))), VarDecl(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None), value=None), Assembly(code='assembly{z:=t}'), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)]), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='t'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='x'))), VarDecl(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None), value=None), Assembly(code='assembly{z:=t}'), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)]), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='t'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='x'))), VarDecl(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None), value=None), Assembly(code='assembly{z:=t}'), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='uninitializedFunctionPointer/uninitialized_internal_storage_function_via_yul.sol', name=Ident(text='Test'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='x'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), modifiers=[], value=None), FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='t'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='x'))), VarDecl(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None), value=None), Assembly(code='assembly{z:=t}'), ExprStmt(expr=BuiltInCall(call_options=[], args=[BinaryOp(left=LocalVarLoad(var=Var(name=Ident(text='z'), ttype=IntType(is_signed=False, size=256), location=None)), right=Literal(value=0, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None), op=)], name='assert', ttype=VoidType())), Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_unused_store_storage_removal_bug 1'] = [ @@ -5601,7 +5583,7 @@ snapshots['TestSemanticTestCases::test_success_path_userDefinedValueType/immutable_signed 1'] = [ GenericRepr("UserDefinedValueTypeDefinition(source_unit_name='userDefinedValueType/immutable_signed.sol', name=Ident(text='MyInt'), ttype=IntType(is_signed=True, size=16))"), GenericRepr("UserDefinedValueTypeDefinition(source_unit_name='userDefinedValueType/immutable_signed.sol', name=Ident(text='MyBytes'), ttype=FixedLengthArrayType(base_type=ByteType(), size=2))"), - GenericRepr("ContractDefinition(source_unit_name='userDefinedValueType/immutable_signed.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='a'), ttype=ResolvedUserType(MyInt), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='b'), ttype=ResolvedUserType(MyBytes), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='f'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), modifiers=[MutabilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='direct'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(MyInt), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(MyBytes), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='a')), StateVarLoad(base=SelfObject(), name=Ident(text='b'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='viaasm'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None)), Parameter(var=Var(name=Ident(text='y'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='_a'), ttype=ResolvedUserType(MyInt), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='a'))), VarDecl(var=Var(name=Ident(text='_b'), ttype=ResolvedUserType(MyBytes), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='b'))), Assembly(code='assembly{x:=_ay:=_b}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='userDefinedValueType/immutable_signed.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='a'), ttype=ResolvedUserType(MyInt), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='b'), ttype=ResolvedUserType(MyBytes), modifiers=[MutabilityModifier(kind=)], value=None), StateVariableDeclaration(name=Ident(text='f'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), modifiers=[MutabilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='direct'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(MyInt), location=None)), Parameter(var=Var(name=Ident(text=None), ttype=ResolvedUserType(MyBytes), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[StateVarLoad(base=SelfObject(), name=Ident(text='a')), StateVarLoad(base=SelfObject(), name=Ident(text='b'))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='viaasm'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='x'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None)), Parameter(var=Var(name=Ident(text='y'), ttype=FixedLengthArrayType(base_type=ByteType(), size=32), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='_a'), ttype=ResolvedUserType(MyInt), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='a'))), VarDecl(var=Var(name=Ident(text='_b'), ttype=ResolvedUserType(MyBytes), location=None), value=StateVarLoad(base=SelfObject(), name=Ident(text='b'))), Assembly(code='assembly{x:=_ay:=_b}')], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_userDefinedValueType/mapping_key 1'] = [ @@ -5618,7 +5600,7 @@ snapshots['TestSemanticTestCases::test_success_path_userDefinedValueType/ownable 1'] = [ GenericRepr("UserDefinedValueTypeDefinition(source_unit_name='userDefinedValueType/ownable.sol$Ownable', name=Ident(text='Owner'), ttype=AddressType(is_payable=False))"), - GenericRepr("ContractDefinition(source_unit_name='userDefinedValueType/ownable.sol', name=Ident(text='Ownable'), is_abstract=False, inherits=[], parts=[StateVariableDeclaration(name=Ident(text='owner'), ttype=ResolvedUserType(Owner), modifiers=[VisibilityModifier(kind=)], value=None), FunctionDefinition(name=Ident(text='owner'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='owner'), ttype=ResolvedUserType(Owner), location=None))], modifiers=[], code=None, markers=[]), ErrorDefinition(name=Ident(text='OnlyOwner'), inputs=[]), ModifierDefinition(name=Ident(text='onlyOwner'), inputs=[], modifiers=[], code=Block(stmts=[If(condition=BinaryOp(left=DynamicBuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='owner'))], ttype=AddressType(is_payable=False), base=ResolvedUserType(Owner), name='unwrap'), right=GlobalValue(name='msg.sender', ttype=AddressType(is_payable=False)), op=), FunctionInvocationModifier(modifier=ModifierDefinition(name=Ident(text='onlyOwner'), inputs=[], modifiers=[], code=Block(stmts=[If(condition=BinaryOp(left=DynamicBuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='owner'))], ttype=AddressType(is_payable=False), base=ResolvedUserType(Owner), name='unwrap'), right=GlobalValue(name='msg.sender', ttype=AddressType(is_payable=False)), op=), FunctionInvocationModifier(modifier=ModifierDefinition(name=Ident(text='onlyOwner'), inputs=[], modifiers=[], code=Block(stmts=[If(condition=BinaryOp(left=DynamicBuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='owner'))], ttype=AddressType(is_payable=False), base=ResolvedUserType(Owner), name='unwrap'), right=GlobalValue(name='msg.sender', ttype=AddressType(is_payable=False)), op=)], value=None), FunctionDefinition(name=Ident(text='owner'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='owner'), ttype=ResolvedUserType(Owner), location=None))], modifiers=[], code=None, markers=[]), ErrorDefinition(name=Ident(text='OnlyOwner'), inputs=[]), ModifierDefinition(name=Ident(text='onlyOwner'), inputs=[], modifiers=[], code=Block(stmts=[If(condition=BinaryOp(left=DynamicBuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='owner'))], ttype=AddressType(is_payable=False), base=ResolvedUserType(Owner), name='unwrap'), right=GlobalValue(name='msg.sender', ttype=AddressType(is_payable=False)), op=), FunctionInvocationModifier(modifier=ModifierDefinition(name=Ident(text='onlyOwner'), inputs=[], modifiers=[], code=Block(stmts=[If(condition=BinaryOp(left=DynamicBuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='owner'))], ttype=AddressType(is_payable=False), base=ResolvedUserType(Owner), name='unwrap'), right=GlobalValue(name='msg.sender', ttype=AddressType(is_payable=False)), op=), FunctionInvocationModifier(modifier=ModifierDefinition(name=Ident(text='onlyOwner'), inputs=[], modifiers=[], code=Block(stmts=[If(condition=BinaryOp(left=DynamicBuiltInCall(call_options=[], args=[StateVarLoad(base=SelfObject(), name=Ident(text='owner'))], ttype=AddressType(is_payable=False), base=ResolvedUserType(Owner), name='unwrap'), right=GlobalValue(name='msg.sender', ttype=AddressType(is_payable=False)), op=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='internal2'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=False, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='equal'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='diff'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='inv'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=, is_pre=True)), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='diff'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='inv'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='unequal'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='diff'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='inv'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=, is_pre=True)), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=GetFunctionPointer(func=), op=), right=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(inputs=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=True, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='internal2'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=False, ttype=BoolType(), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='equal'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='diff'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='inv'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=, is_pre=True)), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='diff'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=))), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='inv'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=)))], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='unequal'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='diff'), ttype=BoolType(), location=None)), Parameter(var=Var(name=Ident(text='inv'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=None), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=, is_pre=True)), ExprStmt(expr=LocalVarStore(var=Var(name=Ident(text='same'), ttype=BoolType(), location=None), value=BinaryOp(left=GetFunctionPointer(func=), right=GetFunctionPointer(func=), op=), right=GetFunctionPointer(func=), op=), right=LocalVarLoad(var=Var(name=Ident(text='invalid'), ttype=FunctionType(input_params=[], outputs=[BoolType()], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='call_internal_func'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='ret'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='func'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='func'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='internal_func')), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='call_deleted_internal_func'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='ret'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='func'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='func'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=, is_pre=True)), Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='func'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='internal_func')), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='viaYul/delete.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='internal_func'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=IntType(is_signed=True, size=8), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='call_internal_func'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='ret'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='func'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='func'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='internal_func')), op=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='call_deleted_internal_func'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='ret'), ttype=BoolType(), location=None))], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='func'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), ExprStmt(expr=UnaryOp(expr=LocalVarLoad(var=Var(name=Ident(text='func'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None)), op=, is_pre=True)), Return(values=[BinaryOp(left=FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='func'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=True, size=8)], modifiers=[VisibilityModifier(kind=), MutabilityModifier(kind=)]), location=None))), right=FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='internal_func')), op=)])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_viaYul/detect_add_overflow 1'] = [ @@ -6216,7 +6198,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_viaYul/function_selector 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='viaYul/function_selector.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=4), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[ABISelector(function=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=4), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[ABISelector(function=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=FunctionType(inputs=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") + GenericRepr("ContractDefinition(source_unit_name='viaYul/function_selector.sol', name=Ident(text='C'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=4), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[ABISelector(function=)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[Parameter(var=Var(name=Ident(text='a'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None))], outputs=[Parameter(var=Var(name=Ident(text=None), ttype=FixedLengthArrayType(base_type=ByteType(), size=4), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[ABISelector(function=LocalVarLoad(var=Var(name=Ident(text='a'), ttype=FunctionType(input_params=[], outputs=[], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[])], type_overrides=[])") ] snapshots['TestSemanticTestCases::test_success_path_viaYul/if 1'] = [ @@ -6394,7 +6376,7 @@ ] snapshots['TestSemanticTestCases::test_success_path_virtualFunctions/internal_virtual_function_calls_through_dispatch 1'] = [ - GenericRepr("ContractDefinition(source_unit_name='virtualFunctions/internal_virtual_function_calls_through_dispatch.sol', name=Ident(text='Base'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(inputs=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])"), + GenericRepr("ContractDefinition(source_unit_name='virtualFunctions/internal_virtual_function_calls_through_dispatch.sol', name=Ident(text='Base'), is_abstract=False, inherits=[], parts=[FunctionDefinition(name=Ident(text='f'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[VarDecl(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None), value=GetFunctionPointer(func=)), Return(values=[FunctionPointerCall(call_options=[], args=[], callee=LocalVarLoad(var=Var(name=Ident(text='ptr'), ttype=FunctionType(input_params=[], outputs=[IntType(is_signed=False, size=256)], modifiers=[VisibilityModifier(kind=)]), location=None)))])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[Literal(value=1, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=1), unit=None)])], is_unchecked=False), markers=[])], type_overrides=[])"), GenericRepr("ContractDefinition(source_unit_name='virtualFunctions/internal_virtual_function_calls_through_dispatch.sol', name=Ident(text='Derived'), is_abstract=False, inherits=[InheritSpecifier(name=ResolvedUserType(Base), args=[])], parts=[FunctionDefinition(name=Ident(text='g'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=), OverrideSpecifier(bases=[])], code=Block(stmts=[Return(values=[Literal(value=2, ttype=PreciseIntType(is_signed=False, size=8, real_bit_length=2), unit=None)])], is_unchecked=False), markers=[]), FunctionDefinition(name=Ident(text='h'), inputs=[], outputs=[Parameter(var=Var(name=Ident(text='i'), ttype=IntType(is_signed=False, size=256), location=None))], modifiers=[VisibilityModifier(kind=)], code=Block(stmts=[Return(values=[FunctionCall(call_options=[], args=[], base=SelfObject(), name=Ident(text='f'))])], is_unchecked=False), markers=[])], type_overrides=[])") ] diff --git a/test/solidity_parser/ast/test_parsing.py b/test/solidity_parser/ast/test_parsing.py index fabf191..db54b02 100644 --- a/test/solidity_parser/ast/test_parsing.py +++ b/test/solidity_parser/ast/test_parsing.py @@ -52,7 +52,7 @@ def __init__(self, *args, **vfs_options): self.vfs_options = vfs_options if 'compiler_version' not in self.vfs_options: - self.vfs_options['compiler_version'] = Version(0, 8, 22) + self.vfs_options['compiler_version'] = Version(0, 8, 24) def setUp(self) -> None: self.vfs = filesys.VirtualFileSystem(**self.vfs_options) diff --git a/test/solidity_parser/ast/test_solnodes2.py b/test/solidity_parser/ast/test_solnodes2.py index a1aa7e3..9611c6c 100644 --- a/test/solidity_parser/ast/test_solnodes2.py +++ b/test/solidity_parser/ast/test_solnodes2.py @@ -2,7 +2,7 @@ from mock import patch, Mock, MagicMock from solidity_parser.ast.nodebase import Node, NodeList -from solidity_parser.ast.types import VoidType, BoolType, TupleType +from solidity_parser.ast.types import VoidType, BoolType, TupleType, StringType, IntType class TestNodeDataclass(unittest.TestCase): @@ -41,8 +41,6 @@ def test_child_list_changed_should_recompute_hash(self): self.assertEqual(p_hash_mock.call_count, 2) def test_child_list_equals(self): - # comments here are NodeLists, not lists - n1 = TupleType([]) c1 = BoolType() n1.ttypes.append(c1) @@ -60,7 +58,14 @@ def test_child_list_equals(self): self.assertEqual(n1.ttypes, n2.ttypes) self.assertEqual(n1, n2) + def test_list_hashes_children(self): + a = StringType() # has Node child in the form of "base" + print(hash(tuple(a.get_all_children()))) + nl = NodeList(None, [a]) + print(hash(nl)) def test_list_item_propagates_to_grandparent(self): + # comments here are NodeLists, not lists + g = Node() p = Node() c = Node()