Skip to content

EthDebug source contents and language are mandatory #16001

Open
@RaoulSchaffranek

Description

@RaoulSchaffranek

Description

According to the EthDebug spec, a source's contents and language are required fields, but solc does not generate them. See: https://ethdebug.github.io/format/spec/materials/source

Environment

  • Compiler version: Version: 0.8.29+commit.ab55807c.Linux.g++
  • Compilation pipeline (legacy, IR, EOF): IR
  • Target EVM version (as per compiler settings): osaca
  • Framework/IDE (e.g. Foundry, Hardhat, Remix): No
  • EVM execution environment / backend / blockchain client: No
  • Operating system: WSL

Steps to Reproduce

solc --standard-json input.json --pretty-json > ouput.json

input.json

{
    "language": "Solidity",
    "sources": {
        "contract.sol": {
            "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.29;\n\nabstract contract GreeterBase {\n    function greet() public view virtual returns (string memory);\n}"
        },
        "interface.sol": {
            "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.29;\n\ninterface IGreeter {\n    function greet() external view returns (string memory);\n}"
        }
    },
    "settings": {
        "viaIR": true,
        "debug": {
            "debugInfo": [
                "ethdebug"
            ]
        },
        "outputSelection": {
            "*": {
                "*": [
                    "evm.bytecode.ethdebug",
                    "evm.deployedBytecode.ethdebug",
                    "ir",
                    "irOptimized"
                ]
            }
        }
    }
}

output.json

{
  "contracts": {
     // ...
  },
  "ethdebug": {
    "compilation": {
      "compiler": {
        "name": "solc",
        "version": "0.8.29+commit.ab55807c.Linux.g++"
      },
      "sources": [
        {
          "id": 0,
          "path": "contract.sol"
          // "language": <-- missing
          // "contents": <-- missing
        },
        {
          "id": 1,
          "path": "interface.sol"
          // "language": <-- missing
          // "contents": <-- missing
        }
      ]
    }
  },
  "sources": {
    "contract.sol": {
      "id": 0
    },
    "interface.sol": {
      "id": 1
    }
  }
}

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