Crate ink_lang_ir[][src]

Expand description

The ink! intermediate representation (IR) and abstractions.

This module defines everything the ink! procedural macro needs in order to parse, analyze and generate code for ink! smart contracts.

The entry point for every ink! smart contract is the Contract with its Config provided in the initial invocation at #[ink::contract(... configuration ...)].

The ink! IR tries to stay close to the original Rust syntactic structure. All ink! definitions of an ink! smart contract are always defined within a so-called Rust inline module (mod my_module { ... items ... }). Therefore all ink! definition are found and accessed using the ItemMod data structure.

Modules

Marker types and definitions.

Macros

Creates a syn::Error with the format message and infers the Span using Spanned.

Creates a syn::Error with the format message and infers the Span using ToTokens.

Structs

Computes the BLAKE2b-256 bit hash of a string or byte string literal.

Wrapper for a callable that adds its composed selector.

An ink! chain extension.

An ink! chain extension method.

The ink! configuration.

An ink! constructor definition.

An ink! contract definition consisting of the ink! configuration and module.

An ink! event struct definition.

The unique ID of an ink! chain extension method.

A checked ink! trait definition without its configuration.

The ink! test with all required information.

A checked ink! trait definition without its configuration.

A checked ink! message of an ink! trait definition.

Iterator over the input parameters of an ink! message or constructor.

An ink! implementation block.

The ink! module.

Iterator yielding all ink! constructor within a source ink! ir::ItemImpl.

Iterator yielding all ink! event definitions within the ink! ItemMod.

Iterator over all the ink! trait items of an ink! trait definition.

Iterator yielding all ink! implementation block definitions within the ink! ItemMod.

Iterator yielding all ink! messages within a source ink! ir::ItemImpl.

An ink! message definition.

An ink! namespace applicable to a trait implementation block.

The selector of an ink! dispatchable.

The selector ID of an ink! dispatchable.

An ink! storage struct definition.

Enums

The kind of externally callable smart contract entity.

An item within an ink! implementation block.

An ink! specific item.

An ink! item within an ink! trait definition.

An item in the root of the ink! module (ir::ItemMod).

The receiver of an ink! message.

The visibility of an ink! message or constructor.

Traits

An ink! callable.

Used to convert literal values into their hex representations for code generation.

An extension trait for syn::Attribute in order to query for documentation.

Functions

Computes the BLAKE-2b 256-bit hash for the given input and stores it in output.