Skip to content

Display of interfaces in errors show full path #4237

@fubuloubu

Description

@fubuloubu

Version Information

  • vyper Version (output of vyper --version): 0.4.0
  • OS: linux
  • Python Version (output of python --version): 3.11.9

What's your issue about?

When I have a compile issue with an function whose signature contains an interface, it shows the full path to the interface:

ERROR: (VyperCompileError) contracts/test/TestValidator.vy
InterfaceViolation:Contract does not implement all interface functions: validate(address,interface [...]/site-packages/vyper/builtins/interfaces/IERC20.vyi,uint256,Bytes[65535])

This is kind of noisy and too much information that muddles the display of the error

How can it be fixed?

It should display the module it came from instead:

ERROR: (VyperCompileError) contracts/test/TestValidator.vy
InterfaceViolation:Contract does not implement all interface functions: validate(address,interface ethereum.ercs.IERC20,uint256,Bytes[65535])

Additionally, it may be useful to have some sort of debug flag to call the compiler that contains the mapping of all root modules to their locations on disk (if that doesn't exist already)

Metadata

Metadata

Assignees

Labels

bug - UXa bug related to UX

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions