Skip to content

bug: Method must be implemented by the inherited class #4725

@pcaversaccio

Description

@pcaversaccio

Version Information

  • vyper Version (output of vyper --version): 0.4.3
  • OS: linux
  • Python Version (output of python --version): 3.13.3

What's your issue about?

# pragma version ~=0.4.3

EXTRA_ARGS_V1_TAG: public(constant(bytes4)) = 0x92FD1338 # == `bytes4(keccak256("VRF ExtraArgsV1"))`.

struct ExtraArgsV1:
    nativePayment: bool

@internal
@view
def _args_to_bytes(extra_args: ExtraArgsV1) -> Bytes[1_024]:
    return abi_encode(ExtraArgsV1, method_id=EXTRA_ARGS_V1_TAG)

will lead to the compilation error:

vyper.exceptions.CompilerPanic: Method must be implemented by the inherited class

  contract "test.vy:11", function "_args_to_bytes", line 11:4
       10 def _args_to_bytes(extra_args: ExtraArgsV1) -> Bytes[1_024]:
  ---> 11     return abi_encode(ExtraArgsV1, method_id=EXTRA_ARGS_V1_TAG)
  ------------^
       12


This is an unhandled internal compiler error. Please create an issue on Github to notify the developers!
https://github.com/vyperlang/vyper/issues/new?template=bug.md

How can it be fixed?

Requires some skills but I have trust in you 😄. Joking aside, you should have an error message saying "Did you mean extra_args?".

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions