Crate osmium_libs_solidity_ast_extractor

Source

Modules§

errors
extract
kw
Solidity keywords.
retriever
spanned
Helper trait and methods to manipulate syntax tree nodes’ spans.
visit
Syntax tree traversal to walk a shared borrow of a syntax tree.

Macros§

sol_path
Create a SolPath from a list of identifiers.

Structs§

ArgList
A list of named or unnamed arguments: { foo: 42, bar: 64 } or (42, 64).
AssemblyFlags
A list of flags of an assembly statement.
Block
A curly-braced block of statements: { ... }.
CatchClause
A catch clause of a StmtTry: catch { ... }.
EventParameter
An event parameter.
ExprArray
An array literal expression: [a, b, c, d].
ExprBinary
A binary operation: a + b, a += b.
ExprCall
A function call expression: foo(42) or foo({ bar: 42 }).
ExprCallOptions
Function call options: foo.bar{ value: 1, gas: 2 }.
ExprDelete
A unary delete expression: delete vector.
ExprIndex
A square bracketed indexing expression: vector[2].
ExprMember
Access of a named member: obj.k.
ExprNew
A new expression: new Contract.
ExprPayable
A payable expression: payable(address(0x...)).
ExprPostfix
A postfix unary expression: foo++.
ExprTernary
A ternary (AKA conditional) expression: foo ? bar : baz.
ExprTuple
A tuple expression: (a, b, c, d).
ExprTypeCall
A type() expression: type(uint256)
ExprUnary
A unary operation: !x, -x.
File
A Solidity file. The root of the AST.
FunctionAttributes
A list of unique function attributes. Used in ItemFunction.
HexStr
A hex string.
ImportAlias
An import alias.
ImportAliases
A list of import aliases: { Foo as Bar, Baz } from "foo.sol".
ImportDirective
An import directive: import "foo.sol";.
ImportGlob
A glob import directive: * as Foo from "foo.sol".
ImportPlain
A plain import directive: import "foo.sol" as Foo;.
Inheritance
A list of inheritance specifiers of an ItemContract: is ERC20("Token", "TKN"), Ownable.
ItemContract
A contract, abstract contract, interface, or library definition: contract Foo is Bar("foo"), Baz { ... }.
ItemEnum
An enum definition: enum Foo { A, B, C }.
ItemError
An error definition: error Foo(uint256 a, uint256 b);.
ItemEvent
ItemFunction
A function, constructor, fallback, receive, or modifier definition: function helloWorld() external pure returns(string memory);.
ItemStruct
A struct definition: struct Foo { uint256 bar; }.
ItemUdt
A user-defined value type definition: type Foo is uint256;.
LineColumn
A line-column pair representing the start or end of a Span.
LitDenominated
LitHexStr
LitStr
LitUnicodeStr
Modifier
A modifier invocation, or an inheritance specifier.
NamedArg
A named argument in an argument list: foo: uint256(42).
NamedArgList
A named argument list: { foo: uint256(42), bar: true }.
Override
The override attribute.
Parameters
A list of VariableDeclarations, separated by P.
PragmaDirective
A pragma directive: pragma solidity ^0.8.0;
Returns
The returns attribute of a function.
SolIdent
A Solidity identifier.
SolPath
A list of identifiers, separated by dots.
StmtAssembly
An assembly block, with optional flags: assembly "evmasm" { ... }.
StmtBreak
A break statement: break;.
StmtContinue
A continue statement: continue;.
StmtDoWhile
A do-while statement: do { ... } while (condition);.
StmtEmit
An emit statement: emit FooBar(42);.
StmtExpr
An expression with a trailing semicolon.
StmtFor
A for statement: for (uint256 i; i < 42; ++i) { ... }.
StmtIf
An if statement with an optional else block: if (expr) { ... } else { ... }.
StmtReturn
A return statement: return 42;.
StmtRevert
A revert statement: revert("error");.
StmtTry
A try statement: try fooBar(42) catch { ... }.
StmtVarDecl
A variable declaration statement: uint256 foo = 42;.
StmtWhile
A while statement: while (i < 42) { ... }.
TypeArray
An array type.
TypeFunction
A function type: function() returns (string memory).
TypeMapping
A mapping type: mapping(uint key => string value)
TypeTuple
A tuple type.
UncheckedBlock
An unchecked block: unchecked { ... }.
UnicodeStr
A unicode string.
UsingDirective
A using directive: using { A, B.mul as * } for uint256 global;.
UsingListItem
VarDeclTuple
A declaration of variables in a tuple: (,,uint256 foo,string memory bar).
VariableAttributes
A list of unique variable attributes.
VariableDeclaration
A variable declaration: string memory hello.
VariableDefinition
Variant
An enum variant.
WalrusToken
Represents the walrus operator :=.
YulBlock
A Yul block contains YulStmt between curly braces.
YulCaseBranch
Represents a non-default case of a Yul switch statement.
YulFnCall
Yul function call.
YulFor
Yul for loop e.g for {let i := 0} lt(i,10) {i := add(i,1)} {mstore(i,7)}.
YulFunctionDef
Yul function definition: function f() -> a, b { ... }.
YulIdent
A Yul identifier.
YulIf
A Yul if statement: if lt(a, b) { sstore(0, 1) }.
YulPath
In inline assembly, only dot-less identifiers can be declared, but dotted paths can reference declarations made outside the assembly block.
YulReturns
The return attribute of a Yul function definition.
YulSwitch
A Yul switch statement can consist of only a default-case or one or more non-default cases optionally followed by a default-case.
YulSwitchDefault
Represents the default case of a Yul switch statement.
YulVarAssign
Yul variable assignment. x := 0 or x, y := foo(). Assigning values to multiple variables requires a function call.
YulVarDecl
Declares Yul variables, which may or may not have initial values. E.x. let x := 0 let x let x, y := foo() let x, y, z

Enums§

ArgListImpl
A list of either unnamed or named arguments.
BinOp
A binary operator: +, +=, &.
ContractKind
The kind of contract.
Expr
An expression.
ForInitStmt
A for statement initializer.
FunctionAttribute
A function attribute.
FunctionBody
The body of a function.
FunctionKind
The kind of function.
ImportPath
The path of an import directive.
Item
An AST item. A more expanded version of a Solidity source unit.
Lit
A Solidity literal such as a string or integer or boolean.
LitNumber
An integer or fixed-point number literal: 1 or 1.0.
Mutability
A mutability attribute.
PostUnOp
Postfix unary operators.
PragmaTokens
Stmt
A statement, usually ending in a semicolon.
Storage
A storage location.
SubDenomination
A sub-denomination suffix for a number literal.
Type
A type name.
UnOp
Unary operators.
UserDefinableOperator
A user-definable operator: +, *, |, etc.
UsingList
UsingType
VarDeclDecl
The declaration of the variable(s) in a variable declaration statement.
VariableAttribute
A variable attribute.
Visibility
A visibility attribute.
YulEVMBuiltIn
Representation of an EVM builtin opcode.
YulExpr
A Yul expression.
YulStmt
A Yul statement.

Traits§

Spanned
A trait that can provide the Span of the complete contents of a syntax tree node.
Visit
Syntax tree traversal to walk a shared borrow of a syntax tree.

Functions§

parse
Parse a Solidity proc_macro::TokenStream into a File.
parse2
Parse a Solidity proc_macro2::TokenStream into a File.

Type Aliases§

FieldList
A list of semicolon-separated VariableDeclarations.
ParameterList
A list of comma-separated VariableDeclarations.