Skip to content

[Bug-Candidate]: Failed to generate IR #2680

Open
@highskore

Description

@highskore

Describe the issue:

Seems like using custom type wrapping is making making slither solc parsing fail, I'm trying to run slither on any repository that has the latest version of https://github.com/rhinestonewtf/modulekit installed

Code example to reproduce the issue:

pnpm install [email protected]
slither .

Version:

0.11.0

Relevant log output:

'forge clean' running (wd: /testmodule)
'forge config --json' running
'forge build --build-info --skip */test/** */script/** --force' running (wd: /testmodule)
ERROR:SlitherSolcParsing:
Failed to generate IR for ERC7579HybridValidatorBase._packValidationData. Please open an issue https://github.com/crytic/slither/issues.
ERC7579HybridValidatorBase._packValidationData (node_modules/@rhinestone/modulekit/src/module-bases/ERC7579ValidatorBase.sol#25-35):
 	ValidationData.wrap(_packValidationData(sigFailed,validUntil,validAfter))
Traceback (most recent call last):
  File "/usr/local/bin/slither", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/__main__.py", line 776, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
  File "/usr/local/lib/python3.11/site-packages/slither/__main__.py", line 882, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/__main__.py", line 107, in process_all
    ) = process_single(compilation, args, detector_classes, printer_classes)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/__main__.py", line 80, in process_single
    slither = Slither(target, ast_format=ast, **vars(args))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/slither.py", line 202, in __init__
    self._init_parsing_and_analyses(kwargs.get("skip_analyze", False))
  File "/usr/local/lib/python3.11/site-packages/slither/slither.py", line 221, in _init_parsing_and_analyses
    raise e
  File "/usr/local/lib/python3.11/site-packages/slither/slither.py", line 217, in _init_parsing_and_analyses
    parser.analyze_contracts()
  File "/usr/local/lib/python3.11/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 593, in analyze_contracts
    self._convert_to_slithir()
  File "/usr/local/lib/python3.11/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 827, in _convert_to_slithir
    raise e
  File "/usr/local/lib/python3.11/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 812, in _convert_to_slithir
    func.generate_slithir_and_analyze()
  File "/usr/local/lib/python3.11/site-packages/slither/core/declarations/function.py", line 1837, in generate_slithir_and_analyze
    node.slithir_generation()
  File "/usr/local/lib/python3.11/site-packages/slither/core/cfg/node.py", line 707, in slithir_generation
    self._irs = convert_expression(expression, self)  # type:ignore
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/slithir/convert.py", line 114, in convert_expression
    visitor = ExpressionToSlithIR(expression, node)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 174, in __init__
    self._visit_expression(self.expression)
  File "/usr/local/lib/python3.11/site-packages/slither/visitors/expression/expression.py", line 76, in _visit_expression
    visitor(expression)
  File "/usr/local/lib/python3.11/site-packages/slither/visitors/expression/expression.py", line 91, in _visit_call_expression
    self._visit_expression(expression.called)
  File "/usr/local/lib/python3.11/site-packages/slither/visitors/expression/expression.py", line 78, in _visit_expression
    self._post_visit(expression)
  File "/usr/local/lib/python3.11/site-packages/slither/visitors/expression/expression.py", line 276, in _post_visit
    self._post_member_access(expression)
  File "/usr/local/lib/python3.11/site-packages/slither/visitors/slithir/expression_to_slithir.py", line 612, in _post_member_access
    member = Member(expr, Constant(expression.member_name), val_ref)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/slither/slithir/operations/member.py", line 34, in __init__
    assert is_valid_rvalue(variable_left) or isinstance(

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug-candidateBugs reports that are not yet confirmed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions