-
Hero Bird authored
* [lang/macro] move some items around * [lang/macro] rename AttributeFlag -> AttributeArg This is in order to sync naming with the syn crate. * [lang/macro] implement ink! config parameter parsing * [lang/macro] add doc comment to into_nested_meta helper function * [lang/macro] add preliminary ast module * [lang/macro] replace usage of ink_primitives::hash module * [lang/macro] slightly refactor Selector * [lang/macro] fully implement AttributeArgs definitions + tests * [lang/macro] add IntoIterator for AttributeArgs * [lang/macro] base ir2::Config on the new ast::AttributeArgs definitions * [lang/macro] apply rustfmt * [lang/macro] add some ToTokens implementations * [lang/macro] add unit tests for ir2::Config * [lang/macro] introduce general Error type * [lang/macro] remove RustItem * [lang/macro] follow-up: remove RustItem * [lang/macro] add ir2::contains_ink_attributes helper function * [lang/macro] initial skeleton for TryFrom<syn::Item> for ir2::Item impl * [lang/macro] add first_ink_attribute helper function * [lang/macro] refactor initial skeleton for ir2::Item TryFrom impl * [lang/macro] re-export first_ink_attribute to ir2 module * [lang/macro] add unit tests for contains_ink_attributes and first_ink_attribute * [lang/macro] enhance initial TryFrom skeleton for ir2::Item * [lang/macro] simplify item_attrs * [lang/macro] further simplify item_attrs * [lang/macro] minor improvement * [lang/macro] add ExtError to extend syn::Error * [lang/macro] add Attrs trait to extract attributes from syn types * [lang/macro] re-base error infrastructure on to syn::Error * [lang/macro] adjust unit tests for new error infrastructure * [lang/macro] remove old error types * [lang/macro] use syn::Error in ir2::Config * [lang/macro] adjust Config unit tests for syn::Error usage * [lang/macro] rename ensure_no_duplicates -> ensure_no_duplicate_attrs * [lang/macro] add AttributeArg::kind method * [lang/macro] use full type path * [lang/macro] implement InkAttribute::from_expanded * [lang/macro] implement ir2::Storage TryFrom * [lang/macro] minor refactor * [lang/macro] add InkAttribute::ensure_no_conflicts * [lang/macro] add some failure paths to TryFrom<_> for ink! Storage struct * [lang/macro] add unit tests for ink! storage struct conversion * [lang/macro] apply rustfmt * [lang/macro] fix some clippy warnings * [lang/macro] rename Storage::item_struct field to ast * [lang/macro] rename Event::item_struct -> ast * [lang/macro] add some method and an iterator to ink! event struct * [lang/macro] add initial implementation of ink! event's TryFrom * [lang/macro] add derives for Debug, PartialEq and Eq for ink! event * [lang/macro] add initial success path unit tests for TryFrom for ink! event * [lang/macro] fix bug with #[ink(topic)] annotated event fields * [lang/macro] apply rustfmt * [lang/macro] apply clippy suggestion * [lang/macro] add first bunch of failure event TryFrom unit tests * [lang/macro] normalize the current failure event unit tests * [lang/macro] add more event unit tests for topics on fields * [lang/macro] add Debug, PartialEq and Eq derives for some ir2 types * [lang/macro] add unit tests for ir2::Item * [lang/macro] add ir2::ImplBlock::is_ink_impl_block * [lang/macro] add doc comment note * [lang/macro] rename ImplBlockItem::Rust -> Other * [lang/macro] apply rustfmt * [lang/macro] add stub TryFrom impls for Constructor and Message * [lang/macro] add TryFrom impl for ir2::ImplBlockItem * [lang/macro] add initial skeleton for TryFrom impl for ir::ImplBlock * [lang/macro] implement ir2::sanitize_attributes * [lang/macro] split impl_block.rs into multiple files as sub modules * [lang/macro] apply rustfmt + remove unused imports * [lang/macro] split item module into multiple modules * [lang/macro] finalize move into multiple files from commit before * [lang/macro] add lots of error checks to TryFrom for Message * [lang/macro] improve TryFrom tests for ir2::ImplBlock * [lang/macro] make Event and Storage use ir2::sanitize_attributes * [lang/macro] add additional constructors for Iter{Constructors, Messages} * [lang/macro] add visibility check to Message TryFrom impl * [lang/macro] add Message::Visibility and getter * [lang/macro] implement Message::receiver getter * [lang/macro] extend ImplBlock doc comment note section * [lang/macro] add Message::Visibility getters * [lang/macro] refactor Receiver getters * [lang/macro] fix doc comment * [lang/macro] add unit test for Message::visibility getter * [lang/macro] add unit test for Message::receiver getter * [lang/macro] move Visibility from message.rs to impl_item.rs * [lang/macro] add Constructor::visibility getter * [lang/macro] implement callable.rs * [lang/macro] make use of new shared callable.rs utilities * [lang/macro] remove visibility from impl_item.rs * [lang/macro] fix some imports * [lang/macro] implement constructor check for missing return type * [lang/macro] implement constructor check for invalid self receiver * [lang/macro] add some ink! constructor try_from unit tests * [lang/macro] add ink! constructor visibility getter unit test * [lang/macro] fix unit test for ink! message visibility * [lang/macro] add many unit tests for ink! constructor TryFrom impl * [lang/macro] extend success TryFrom impl unit tests * [lang/macro] factor out sanitize_attributes for TryFrom impls * [lang/macro] remove salt from messages and constructors * [lang/macro] add salt extraction for ink! impl block * [lang/macro] add unit test for ink! impl block salt * [lang/macro] implement InkAttribute::{salt, selector} getters * [lang/macro] make use of InkAttribute::salt in TryFrom for ir2::ImplBlock * [lang/macro] apply rustfmt * [lang/macro] implement InkAttribute::is_payable * [lang/macro] make use of InkAttribute::{is_payable, selector} * [lang/macro] add module doc to callable.rs * [lang/macro] rename ImplBlock -> ItemImpl * [lang/macro] rename impl_block module to item_impl * [lang/macro] rename ImplBlockItem -> ImplItem * [lang/macro] add {Message, Constructor}::is_payable * [lang/macro] add doc note to ir2::ImplItem * [lang/macro] add implementation for InputsIter * [lang/macro] make use of InputsIter in ink! message and constructor * [lang/macro] add getter for the return type of an ink! message * [lang/macro] add unit test for ink! message is_payable * [lang/macro] add unit test for Constructor::is_payable * [lang/macro] rewrite receiver_works unit test for ink! message * [lang/macro] add unit test for ink! message inputs * [lang/macro] add unit test for ink! message output getter * [lang/macro] add identifier getter to ink! message and constructor * [lang/macro] apply rustfmt * [lang/macro] apply rustfmt * [lang/macro] implement clippy suggestions * [lang/macro] add unit test for Constructor::inputs * [lang/macro] refactor Storage::is_ink_storage * [lang/macro] add Event::is_ink_event * [lang/macro] add InkItem::is_ink_item * [lang/macro] apply rustfmt * [lang/macro] fix many non-dead-code warnings and allow dead-code for ir2 * [lang/macro] implement Contract::config getter * [lang/macro] allow compile failure of some in-doc tests * [lang/macro] implement TryFrom for ir2::Module * [lang/macro] re-export ImplItem from ir2 * [lang/macro] implement visibility check for ink! impl blocks * [lang/macro] fix unit test * [lang/macro] improve error message for visibility check * [lang/macro] add unit test for visibility failure * [lang/macro] apply rustfmt * [lang/macro] introduce Callable trait to unify ink! messages and constructors * [lang/macro] craft initial skeleton of compose_selector function * [lang/macro] implement ItemImpl::{self_type, trait_path, salt} * [lang/macro] extend compose_selector docs with a usage recommendation section * [lang/macro] implement initial version of compose_selector * [lang/macro] apply clippy suggestion * [lang/macro] fix some bugs in compose_selector implementation * [lang/macro] add unit tests for compose_selector * [lang/macro] rename ir2::Module -> ir2::ItemMod (syn) * [lang/macro] rename module.rs -> item_mod.rs * [lang/macro] remove some imports, use names directly * [lang/macro] rename Event::ast -> item * [lang/macro] refactor event fields iterator * rebase resolve conflict * [lang/macro] move ir2 and ast modules to new crate * [lang/ir] some general renamings after crate move * [lang/macro] no longer refer to ast and ir2 modules * [lang/macro] get rid of all bail! and bail_span! macro calls They hide significant control flow which is bad for readability. * [lang/ir] export error macros * [lang/ir] remove unused import * [lang/macro] make use of new ink_lang_ir crate * [lang/ir] improve documentation and module structure * [lang/ir] apply clippy suggestions + formatting * [lang/macro] apply clippy suggestions * [lang/ir] further improvements to the documentation * [lang/ir] fix error macro docs * [lang/ir] add missing re-export for ir::Contract * [lang/ir] improve ir::Contract docs * [lang/ir] minor refactor of ir::Contract * [lang/ir] extend docs for ir::Contract * [lang/ir] make ast::AttributeArgs::args field private * [lang/ir] apply rustfmt * [lang/ir] improve docs * [lang/ir] further documentation improvements * [lang/ir] add missing exports * [lang/ir] adjust format_err to require its expr to be T:Spanned Formerly this was T:ToTokens which is more restrictive than it should have been. * [lang/ir] refactor format_err_span and format_err macros + docs * [lang/ir] rename format_err macro -> format_err_spanned * [lang/ir] rename format_err_span macro -> format_err * [lang/ir] apply rustfmt * [lang/ir] minor improvements to format_err{_spanned} * [lang/ir] implement ToTokens for all ink! IR structures This is useful because T:ToTokens automatically implements syn::spanned::Spanned while being simpler to implement than syn::spanned::Spanned. * [lang/ir] add links to tracking issue for format_err{_spanned} * [lang/ir] minor docs improvements * [lang/ir] do not re-export everything that belongs to attributes * [lang/ir] fix compilation in test mode * [lang/ir] add ir::ItemMod checks for ink! storage, message and constructor quantities * [lang/ir] make ast module private and move ir module to root * [lang/ir] rename IterItemImpls -> IterItemImpls * [lang/ir] remove ir::EnvTypes from public API * [lang/ir] rename ir::ItemMod::impl_blocks -> item_impls * [lang/ir] rename ir::Module::item_impls -> impls * [lang/ir] make ir::Config::env_types return syn::Path * [lang/ir] move mod doc to lib doc * [lang/ir] fix event doc test * [lang/ir] make Event::is_ink_event module private * [lang/ir] apply rustfmt * [lang/ir] fix Storage doc test * [lang/ir] remove unnecessary rust annotation for doc test * [lang/ir] fix doc tests for constructor and message * [lang/ir] fix fmt todo! avoidance * [lang/ir] remove unneded let binding * [lang/ir] fix doc tests of impl_item/mod.rs * [lang/ir] make ItemImpl::is_ink_impl_block module private * [lang/ir] re-export InputsIter * [lang/ir] add getter for ir::ItemImpl::items * [lang/ir] rename salt -> namespace * add doc link in MetaNameValue doc Co-authored-by:
Michael Müller <mich@elmueller.net> * [lang/ir] rename Callable::selector -> user_provided_selector This is going to avoid confusion with composed selector concept. * [lang/ir] make Storage::is_ink_storage module private * [lang/ir] fix doc link * [lang/ir] expose composed selector through messages and constructors iter * [lang/ir] apply rustfmt * [lang/ir] fix item_mod.rs doc tests * [lang/ir] ignore contract doc test for now It is hard to test because of the unknown ink::contract attribute at the top. * [lang/ir] add item getter to CallableWithSelector * [lang/ir] add Callable::statements getter * [lang/ir] add ir::ItemMod::ensure_no_overlapping_selectors + tests * [lang/ir] remove duplicate code * fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/ir] move config.rs -> attr_args.rs * [lang/ir] update doc comments * [lang/ir] some more doc polishing * [lang/ir] fix outdated doc comment * [lang/ir] remove outdated doc comment * fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/ir] remove unneeded let binding in doc test * [lang/ir] fix conflicting constructor attribute closure Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/ir] fix doc comment * [lang/ir] remove outdated doc comment * fix doc comment Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/ir] rename 'outer label to 'repeat * [ci] add lang/ir to ALL_CRATES * [lang/ir] update blake2 dependency from 0.8 -> 0.9 * [lang/macro] remove unneeded blake2 dependency * [lang/ir] take last segment of trait path * [lang/ir] slightly improve overlapping selector error message * [lang/ir] improve overlapping selector formatting * [lang/ir] add unit test for composed selector with relative trait path * [lang/ir] improve unit test for relative trait path composed selector * [lang/ir] fix bug that namespace was a valid attribute on ink! messages * [lang/ir] add unit test to check against conflicting attributes on ink! messages * [lang/ir] fix bug that namespace was an allowed attribute for ink! constructors * [lang/ir] add unit test to check against conflicting ink! constructor attributes * [lang/ir] add success tests for ir::ItemMod TryFrom * [lang/ir] fix out-of-line ink! module error message * [lang/ir] add a bunch of ink! module TryFrom failure unit tests * [lang/ir] add unit test for ink! event fields iterator * [lang/ir] apply rustfmt Co-authored-by:
Michael Müller <mich@elmueller.net> Co-authored-by:
Andrew Jones <ascjones@gmail.com>
c24f0ff9