You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've identified the issue lies with the following line of code: uint256 totalRegions = uint256(type(BosonTypes.PausableRegion).max);
It appears that during the Slither IR generation process, it's being transformed into: totalRegions = uint256(type()(BosonTypes.PausableRegion).max)
'npx hardhat clean' running (wd: /Users/anajulia/dev/code/boson-protocol-contracts)
'npx hardhat clean --global' running (wd: /Users/anajulia/dev/code/boson-protocol-contracts)
'npx hardhat compile --force' running (wd: /Users/anajulia/dev/code/boson-protocol-contracts)
ERROR:SlitherSolcParsing:
Failed to generate IR for PauseHandlerFacet.getPausedRegions. Please open an issue https://github.com/crytic/slither/issues.
PauseHandlerFacet.getPausedRegions (contracts/protocol/facets/PauseHandlerFacet.sol#72-102):
status = protocolStatus()
totalRegions = uint256(type()(BosonTypes.PausableRegion).max)
regions = new BosonTypes.PausableRegion[](totalRegions)
status.pauseScenario == ALL_REGIONS_MASK
i = 0
i < totalRegions
regions[i] = BosonTypes.PausableRegion(i)
i ++
regions
count = 0
i_scope_0 = 0
i_scope_0 < totalRegions
(status.pauseScenario & (1 <<i_scope_0)) != 0 regions[count] = BosonTypes.PausableRegion(i_scope_0) count ++ i_scope_0 ++ mstore(uint256,uint256)(regions,count)Traceback (most recent call last): File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 814, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 102, in process_all ) = process_single(compilation, args, detector_classes, printer_classes) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 80, in process_single slither = Slither(target, ast_format=ast, **vars(args)) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 135, in __init__ self._init_parsing_and_analyses(kwargs.get("skip_analyze", False)) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 155, in _init_parsing_and_analyses raise e File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 151, in _init_parsing_and_analyses parser.analyze_contracts() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 541, in analyze_contracts self._convert_to_slithir() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 767, in _convert_to_slithir raise e File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 752, in _convert_to_slithir func.generate_slithir_and_analyze() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/declarations/function.py", line 1760, in generate_slithir_and_analyze node.slithir_generation() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/cfg/node.py", line 706, in slithir_generation self._irs = convert_expression(expression, self) # type:ignore File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slithir/convert.py", line 115, in convert_expression visitor = ExpressionToSlithIR(expression, node) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 162, in __init__ self._visit_expression(self.expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 43, in _visit_expression self._visit_assignement_operation(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 99, in _visit_assignement_operation self._visit_expression(expression.expression_right) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 82, in _visit_expression self._visit_type_conversion(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 155, in _visit_type_conversion self._visit_expression(expression.expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 93, in _visit_expression self._post_visit(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 291, in _post_visit self._post_member_access(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 465, in _post_member_access assert isinstance(type_expression_found, Identifier)AssertionErrorERROR:root:Error in .ERROR:root:Traceback (most recent call last): File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 814, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 102, in process_all ) = process_single(compilation, args, detector_classes, printer_classes) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/__main__.py", line 80, in process_single slither = Slither(target, ast_format=ast, **vars(args)) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 135, in __init__ self._init_parsing_and_analyses(kwargs.get("skip_analyze", False)) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 155, in _init_parsing_and_analyses raise e File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slither.py", line 151, in _init_parsing_and_analyses parser.analyze_contracts() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 541, in analyze_contracts self._convert_to_slithir() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 767, in _convert_to_slithir raise e File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 752, in _convert_to_slithir func.generate_slithir_and_analyze() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/declarations/function.py", line 1760, in generate_slithir_and_analyze node.slithir_generation() File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/core/cfg/node.py", line 706, in slithir_generation self._irs = convert_expression(expression, self) # type:ignore File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/slithir/convert.py", line 115, in convert_expression visitor = ExpressionToSlithIR(expression, node) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 162, in __init__ self._visit_expression(self.expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 43, in _visit_expression self._visit_assignement_operation(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 99, in _visit_assignement_operation self._visit_expression(expression.expression_right) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 82, in _visit_expression self._visit_type_conversion(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 155, in _visit_type_conversion self._visit_expression(expression.expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 93, in _visit_expression self._post_visit(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/expression/expression.py", line 291, in _post_visit self._post_member_access(expression) File "/Users/anajulia/Library/Python/3.9/lib/python/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 465, in _post_member_access assert isinstance(type_expression_found, Identifier)AssertionError
The text was updated successfully, but these errors were encountered:
Describe the issue:
IR generation failing.
I've identified the issue lies with the following line of code:
uint256 totalRegions = uint256(type(BosonTypes.PausableRegion).max);
It appears that during the Slither IR generation process, it's being transformed into:
totalRegions = uint256(type()(BosonTypes.PausableRegion).max)
This seems to be a bug that needs addressing.
Code example to reproduce the issue:
Clone https://github.com/bosonprotocol/boson-protocol-contracts
Go to commit bosonprotocol/boson-protocol-contracts@c9ee232
run
slither . --checklist
Version:
0.9.5
Relevant log output:
The text was updated successfully, but these errors were encountered: