Skip to content

Commit

Permalink
Merge pull request #5621 from ethereum/explainAST
Browse files Browse the repository at this point in the history
Improve explanation how to get abi output.
  • Loading branch information
chriseth authored Dec 11, 2018
2 parents baaefb4 + 2f04633 commit 599760b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 9 deletions.
6 changes: 3 additions & 3 deletions docs/miscellaneous.rst
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,9 @@ for displaying the current position in the source code inside a debugger
or for breakpoint handling.

Both kinds of source mappings use integer identifiers to refer to source files.
These are regular array indices into a list of source files usually called
``"sourceList"``, which is part of the combined-json and the output of
the json / npm compiler.
The identifier of a source file is stored in
``output['sources'][sourceName]['id']`` where ``output`` is the output of the
standard-json compiler interface parsed as JSON.

.. note ::
In the case of instructions that are not associated with any particular source file,
Expand Down
24 changes: 18 additions & 6 deletions docs/using-the-compiler.rst
Original file line number Diff line number Diff line change
Expand Up @@ -200,15 +200,27 @@ Input Description
"MyLib": "0x123123..."
}
}
// The following can be used to select desired outputs.
// If this field is omitted, then the compiler loads and does type checking, but will not generate any outputs apart from errors.
// The first level key is the file name and the second is the contract name, where empty contract name refers to the file itself,
// while the star refers to all of the contracts.
// The following can be used to select desired outputs based
// on file and contract names.
// If this field is omitted, then the compiler loads and does type checking,
// but will not generate any outputs apart from errors.
// The first level key is the file name and the second level key is the contract name.
// An empty contract name is used for outputs that are not tied to a contract
// but to the whole source file like the AST.
// A star as contract name refers to all contracts in the file.
// Similarly, a star as a file name matches all files.
// To select all outputs the compiler can possibly generate, use
// "outputSelection: { "*": { "*": [ "*" ], "": [ "*" ] } }"
// but note that this might slow down the compilation process needlessly.
//
// The available output types are as follows:
// abi - ABI
//
// File level (needs empty string as contract name):
// ast - AST of all source files
// legacyAST - legacy AST of all source files
//
// Contract level (needs the contract name or "*"):
// abi - ABI
// devdoc - Developer documentation (natspec)
// userdoc - User documentation (natspec)
// metadata - Metadata
Expand Down Expand Up @@ -281,7 +293,7 @@ Output Description
// This contains the file-level outputs. In can be limited/filtered by the outputSelection settings.
sources: {
"sourceFile.sol": {
// Identifier (used in source maps)
// Identifier of the source (used in source maps)
id: 1,
// The AST object
ast: {},
Expand Down

0 comments on commit 599760b

Please sign in to comment.