1. 09 Jun, 2021 2 commits
    • Michael Müller's avatar
      Spellchecking for examples + Fix master CI (#812) · 9bda2031
      Michael Müller authored
      * Spellcheck examples as well
      
      * Remove non-existent method
      
      * Fix language
      
      * Fix clippy `needless_borrow`
      
      https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
      
      
      
      * Fix spellchecking for examples
      
      * Add `block_timestamp` in `engine`
      
      * Update examples/erc721/lib.rs
      Co-authored-by: default avatarRobin Freyler <robin.freyler@gmail.com>
      
      * Find solution for words which are non-existent
      Co-authored-by: default avatarRobin Freyler <robin.freyler@gmail.com>
      9bda2031
    • Andrew Jones's avatar
      Implement `seal_debug_message` (#792) · 2458e0c0
      Andrew Jones authored
      
      
      * Implement `seal_debug_message`
      
      * Update docs
      
      * Fmt
      
      * Fix debug_print macro
      
      * review: use newline char
      Co-authored-by: default avatarRobin Freyler <robin.freyler@gmail.com>
      
      * Fix example
      
      * Revert to newline string
      
      * Fmt
      
      * Single call to debug_print for debug_println!
      
      * Add missing ReturnCode, still need to handle it
      
      * Inline debug_println!
      
      * If logging is disabled then subsequent calls will be a no-op
      
      * Fmt
      
      * Fix missing error match in experimental off-chain
      
      * Add safety comment to debug_message
      
      * Only re-export ink_prelude::format, and explain
      
      * Satisfy clippy
      
      * Encapsulate DEBUG_ENABLED global in module
      
      * Move seal_denug_message to unstable module
      
      * Update unstable and safety comments
      
      * Add more comments about the required features to be enabled on the node runtime
      
      * Add `ink-debug` feature, make debug messages a noop if not enabled
      
      * Fmt
      
      * Noop macro formatting
      
      * Enable debug printing for std
      
      * Comment formatting
      
      * Encapsulate static variable inside the function
      
      * Fmt
      
      * Remove debug_assert!(true) for disabled macros
      Co-authored-by: default avatarRobin Freyler <robin.freyler@gmail.com>
      2458e0c0
  2. 26 May, 2021 1 commit
    • Michael Müller's avatar
      Implement `seal_rent_params` (#755) · cbf08a02
      Michael Müller authored
      * Fix typo
      
      * Add `seal_rent_params`
      
      * Make `rent_params` only available on `ink-unstable`
      
      * wip
      
      * wip
      
      * Wrap `seal_rent_params` in `__unstable__`
      
      * Add `rent_params` to experimental off-chain env
      
      * Fix return type
      
      * Remove comments
      
      * Remove debugging code
      
      * Remove `ink-unstable` feature
      cbf08a02
  3. 21 Apr, 2021 1 commit
    • Michael Müller's avatar
      Fix `Greeter` and run documentation tests in CI (#773) · c2e43fc6
      Michael Müller authored
      * Run documentation tests in CI
      
      * Use `format` from `prelude`
      
      The contract build will fail otherwise due to
      the usage of `std::string::String` because of
      `std::format`.
      
      * Remove superfluous mutable
      
      * Reduce amount of fuzz runs
      
      The CI run already takes quite long and I don't think
      it makes that much difference if we reduce the amount
      of runs. The bugs we catched so far were always catched
      with way less runs than even this new number.
      
      * Run documentation tests as part of `test` stage
      c2e43fc6
  4. 12 Mar, 2021 1 commit
  5. 12 Jan, 2021 1 commit
    • Hero Bird's avatar
      Implement ink! chain extensions (#592) · 59a7f5ed
      Hero Bird authored
      
      
      * add new tests for #[ink(namespace = ..)] and #[ink(selector = ..)] attrs
      
      * [lang] implement new errors for ink! attributes: namespace, selector
      
      * add #[ink(extension = N: u32)] attribute
      
      * apply rustfmt
      
      * [lang] add initial implementation of chain extension proc. macro
      
      * [lang] rename AttributeArg -> AttributeFrag
      
      * rename AttributeFrag::kind field to arg
      
      * rename AttributeArgKind -> AttributeArg
      
      Also introduce a new AttributeArgKind type and AttributeArg::kind method.
      
      * [lang] apply rustfmt
      
      * add Display impl for AttributeArgKind
      
      * [lang] use AttributeArgKind in sanitize_attributes and ensure_first methods
      
      * [lang/ir] improve error reporting for duplicate ink! attributes
      
      * [lang/ir] refactoring and improvements to chain extension IR impl
      
      * [lang/ir] add tests for IR implementation of chain extensions
      
      * [lang/ir] remove some code dupe
      
      * [lang/ir] add getters to ChainExtension
      
      * [lang/ir] add re-exports for ChainExtension definitions
      
      * [lang/codegen] add initial impl for ChainExtensions
      
      * [env] add ChainExtension assoc type to the Environment trait
      
      * [lang] initial impl to make it possible to use chain extension syntax
      
      * [env] improvements to chain extensions API
      
      Also removes the unstable crate feature guarding the feature.
      
      * [lang/macro] add UI test for chain extension
      
      * [lang/macro] register new UI test
      
      * [lang/codegen] fix some codegen bugs with new chain extension feature
      
      * [lang, env] apply rustfmt
      
      * [lang/ir] apply clippy suggestions and fix outdated error messages
      
      * [lang/ir] fix some tests and incorrect error messages
      
      * [examples] apply clippy suggestion
      
      * add ErrorCode to ink! chain extension trait
      
      * add FromStatusCode trait to ink_lang
      
      * add #[ink(expect_output)] and #[ink(expect_ok)] attributes
      
      Also add their handling for the #[ink::chain_extension] proc. macro.
      
      * add ink_lang::IsResultType trait
      
      * add ChainExtensionMethodInputs iterator
      
      * hide docs for IsResultType trait
      
      * add some docs to chain extension codegen
      
      * implement expect_ok and expect_output where bounds in codegen
      
      * apply code review suggestions by (cmichi)
      
      * add ReturnCode::into_u32 getter
      
      * change return type of ext::call_chain_extension: RetCode -> u32
      
      Chain extensions do not follow the general scheme of error return code because they have their own set of errors that is custom defined by the author of the chain extension.
      
      * [lang] add ChainExtension trait
      
      Not yet sure we need it.
      
      * change EnvBackend::call_chain_extension signature
      
      The new signature is much more low-level and supports all the different ways to call a chain extension method.
      This commit already implements the chain extension call on the on-chain environment.
      More work needs to be done to properly support this for the off-chain environment.
      
      * remove old high-level API for calling chain extension methods
      
      * [env] add new high-level module to handle chain extension calls
      
      * rename ChainExtensionMethodInstance -> ChainExtensionMethod
      
      * [env] add doc examples to chain extension method API
      
      * apply rustfmt
      
      * [env] clippy: allow complex type in ChainExtensionMethod type state
      
      * silence some warnings
      
      * re-export IsResultType from ink_lang crate
      
      * [lang] remove FromStatusCode trait
      
      This trait already exists in the ink_env crate.
      
      * [lang] update codegen for chain extensions
      
      Not yet done but close.
      
      * [lang] update simple chain extension test
      
      Compiles now again.
      
      * apply rustfmt
      
      * update some license headers
      
      * [env] fix where bound
      
      * extend chain extension test case to cover all cases
      
      * add messages for read_small, access and unlock_access
      
      * fix some bugs with chain extension method signatures in test
      
      * fix some bugs and docs in chain extension test
      
      * fix test
      
      * update quickcheck to 1.0
      
      * [env] implement chain extension calling for off-chain env
      
      The new interface is much more lower-level and it is still impossible to use chain state from within the chain extension call. The latter must be fixed as soon as the off-chain environment receives its rework.
      
      * apply rustfmt
      
      * add docs to #[ink::chain_extension] proc. macro
      
      * rename env_types -> env everywhere
      
      * make doc examples for #[ink::chain_extension] compile
      
      * add yet another technical limitation
      
      * make link to simple.rs test case more stable (point to revision)
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * add dev. note to Backend::call_chain_extension
      
      * fix docs example (code suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [env] chain extension: make doc examples/tests compile
      
      * fix some doc comments according to review suggestions
      
      * review suggestion: telling -> meaning
      
      * fix docs (review suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix docs (review suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve docs (review suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename chain extension test file
      
      * analyse_error_code add doc comments for possible errors
      
      * rename expect_ok -> returns_result and expect_output -> handle_status
      
      Some examples and docs might be invalidated or outdated.
      
      * [lang/ir] improve error reporting for ink! namespace attribute with missing parameter
      
      * [lang/*] implement new handle_status and returns_result attributes
      
      * [env] apply rustfmt
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      59a7f5ed
  6. 04 Jan, 2021 1 commit
  7. 09 Oct, 2020 1 commit
    • Hero Bird's avatar
      ink! 3.0 release branch (#517) · fa066742
      Hero Bird authored
      * [*] normalize authors for all ink! crates
      
      * [lang, storage] add extern crate proc_macro
      
      This is somehow needed for cargo publishing.
      fa066742
  8. 08 Oct, 2020 1 commit
    • Hero Bird's avatar
      Rename EnvTypes -> Env (and many other renamings) (#513) · 8edbfd28
      Hero Bird authored
      * [env] rename Env -> EnvBackend, TypedEnv -> TypedEnvBackend
      
      * [env] rename EnvError -> Error
      
      * [*] rename ink_env::EnvTypes -> Environment
      
      Namely rename:
      ink_env::EnvTypes -> Environment
      ink_env::DefaultEnvTypes -> DefaultEnvironment
      
      * [*] update cfg-if dependency 0.1 -> 1.0
      
      * [alloc] rename ink_alloc -> ink_allocator
      
      * [env] forgot to rename in lib.rs
      
      * [env, lang] fix some bugs with ink_env::EnvError -> Error renaming
      
      * [ci] adjust renaming of ink_alloc -> ink_allocator
      
      * [env] apply rustfmt
      
      * [lang/macro] re-enable disabled UI test
      
      * [examples] DNS: apply rustfmt
      
      * [examples] ERC-20, ERC-721: apply rustfmt
      8edbfd28
  9. 05 Oct, 2020 1 commit
  10. 30 Sep, 2020 1 commit
  11. 29 Sep, 2020 2 commits
    • Hero Bird's avatar
      Move all ink! crates into the crates directory (#494) · 31276d89
      Hero Bird authored
      * [*] move all ink! crates into crates/ directory
      
      * [ci] adjust .gitab-ci.yml to crates/ directory
      
      * [ci] fix GitLab .gitlab-ci.yml (attempt #2)
      
      * [ci] forgot some lines in attempt #2
      
      * [examples] fix example smart contracts
      
      They need to readjust their paths for the crates/ directory.
      31276d89
    • Hero Bird's avatar
      Finalize ink! 3.0 integration (#493) · 529bd588
      Hero Bird authored
      * [lang/codegen] initial impl of the new ink! codegen
      
      This new codegen is based on the (also) new ink! IR.
      
      * [lang/macro] apply rustfmt to imports
      
      * [lang/codegen] apply rustfmt
      
      * [lang/ir] add ItemMod::{attrs, vis} getters
      
      * [lang/codegen] make use of ir::ItemMod::{attrs, vis} in codegen
      
      * [lang/codegen] restructure ink_lang_codegen library
      
      * [lang/codegen] appliy clippy suggestion
      
      * [lang/ir] add Event::attrs() and ToTokens impl for EventField
      
      * [lang/codegen] apply rustfmt
      
      * [lang/codegen] implement Event code generator
      
      * [lang/codegen] make use of the new Events code generator
      
      * [lang/ir] make ir::Callable always Copy and Clone
      
      * [lang/ir] rename CallableWithSelector::item -> callable
      
      * [lang/ir] add Callable::kind() trait method
      
      * [lang/codegen] add dispatch enum code generation
      
      * [lang/codegen] enable dispatch code generator
      
      * [lang/codegen] add generation for constructor dispatch enum
      
      * [lang/codegen] implement contract entry points
      
      * [lang/codegen] implement code generation for DispatchUsingMode impl
      
      * [lang/codegen] add trait impl namespaces Msg<S> and Constr<S>
      
      * [lang/ir] add ir::Message::inputs_span() getter
      
      * [lang/codegen] add codegen for dispatch trait impls for ink! messages
      
      * [lang/codegen] plug-in dispatch trait impls code gen
      
      * [lang/ir] add Callable::inputs_span trait method
      
      * [lang/codegen] implement dispatch trait impl codegen for ink! constructors
      
      Also this implementation avoids a lot of code duplication with the similar code generation for dispatch trait impl of ink! messages.
      
      * [lang/codegen] make generate_input_bindings doc tests pass
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] fix message and constructor namespaces
      
      * [lang/ir] add {Message, Constructor}::attrs getter
      
      * [lang/codegen] implement codegen for ink! ItemImpls
      
      * [lang/codegen] remove some unneeded imports for ItemImpl codegen
      
      * [lang/codegen] automatically import ink_lang's Env, EmitEvent and StaticEnv traits
      
      * [lang/codegen] do not generate for ink-as-dependency
      
      * [lang/codegen] initial impl for cross-calling codegen
      
      Not complete, yet. Also we stubled upon the fact that due to the
      additional Rust trait support we have to completely change how we
      generate code for cross-calling. Research!
      
      * [core] rename utils.rs -> selector.rs
      
      * [core] add common mod for common abstractions for call and create
      
      * [core] improve ExecutionInput: add useful trait impls
      
      * [core] refactor call builder
      
      * [core] adjust rest of ink_core to changed imports
      
      * [core] implement new CreateBuilder
      
      * [core] remove old InstantiateBuilder
      
      * [core] remove no longer needed traits
      
      * [core] add eval,invoke,eval_params,invoke_params to CallBuilder
      
      This makes both CallBuilder and CreateBuilder more similar to each other.
      
      * [core] apply rustfmt
      
      * [core] adjust environment to new CreateBuilder
      
      * [core] apply rustfmt
      
      * [core] move eval and invoke to CallParams
      
      * [core] adjust on-chain impl for CallBuilder
      
      * [core] add explanation for the cfg
      
      * [core] move instantiate to CreateParams
      
      * [core] make CreateParams getters crate private
      
      * [core] rename Call -> CallParams
      
      * [core] improve doc comment
      
      * [lang] adjust lang for new call and create builders
      
      * [core] expose builder construction through build_call and build_create
      
      * [core] remove Default impl for empty ExecutionInput
      
      * [core] add usage examples to build_call
      
      * [core] improve usage doc example of build_call
      
      * [core] improve doc tests for build_call
      
      * [core] add doc test example to build_create
      
      * [core] fix compilation after merge
      
      * [metadata] make constuctor and message name an array and add is_payable
      
      Only messages need is_payable field since constructors must always be payable.
      
      * [lang/codegen] add metadata code generation
      
      * [lang/ir] implement lint to ensure there are no __ink_ prefixed identifiers
      
      Identifiers starting with __ink_ may only be used by the ink! codegen.
      So far this has been only implemented on TokenTree or TokenStream level and not on parsed syn abstractions leading to arcane errors. E.g. it was possible to catch errors if an __ink_ substring appeared in a string literal before.
      
      * [metadata] make serialized Layout fields camelCase
      
      * [lang/ir, lang/macro] apply rustfmt
      
      * [lang/ir] initial implementation of #[ink::trait_definition] proc. macro
      
      * [lang/ir] re-export InkTrait
      
      * [lang/macro] create new proc. macro for ink! trait definitions
      
      * [lang/ir] improve error messages of #[ink::trat_definition] a bit
      
      * [lang/ir] add many more unit tests
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] fixed spelling bug
      
      * [lang/ir] fix handling or errorneous Self receiver in ink! constructors
      
      * [lang/ir] add bunch of new unit tests for #[ink::trait_definition] proc. macro
      
      * [lang/ir] add some more unit tests
      
      * [lang/ir] implement checks for invalid ink! attributes
      
      * [lang/ir] add unit tests for invalid ink! attributes
      
      * [lang/ir] use syn's builtin receiver getter
      
      * [lang/ir] add iterators for ink! trait definition
      
      * [lang/ir] add getters for generic info of ink! trait definition
      
      * [lang/ir] fix a unit test testing too much
      
      * [lang/ir] deny ink! trait definitions with supertraits
      
      We might add support for supertraits in future versions.
      
      * [lang/ir] add verify_hash functions
      
      * [lang/ir] simplify ink! trait verification hash
      
      There now is only a single hash instead of a hash per constructor and message.
      
      * [lang/ir] add InkTrait::attrs() getter
      
      * [lang/ir] add re-exports for most InkTrait types
      
      * [lang/codegen] initial implementation of #[ink::trait_definition] codegen
      
      Does not yet include the verification hash generation.
      
      * [lang/codegen] refine codegen for ink! trait definitions
      
      * [lang, lang/codegen] use correct trait for ink! trait definition checking
      
      * [lang/codegen] rework crate exposed API
      
      * [lang/ir] fix return value of ir::InkTrait::new
      
      * [lang/macro] update codegen driver for ink! trait definition
      
      * [core, lang/codegen, lang/ir, metadata] apply clippy suggestions
      
      * [lang/codegen, lang/ir, lang/macro, lang] apply rustfmt
      
      * [lang/macro] add ink_lang_codegen dependency
      
      Needed for #[ink::trait_definition] proc. macro.
      
      * [core/derive] use _ as const name instead of generated one
      
      * [lang/codegen] prefix {Constructo,Message}DispatchEnum ident with __ink_
      
      * [lang/codegen] use payable instead of is_payable
      
      * [lang/codegen] hide some generated types
      
      * [lang/ir] improve error span of bad storage struct visibility
      
      * [core] add CallBuilder::returns to signal return type
      
      Also this adds CallBuilder::fire as a quick way to fire off the call.
      The CallBuilder::invoke_params and CallBuilder::eval_params are no longer needed and thus removed.
      
      * [lang/ir] implement ToTokens for ir::Receiver
      
      * [lang/codegen] apply #[doc(hidden)] to generated call forwarders
      
      * [lang/codegen] slightly clean-up code
      
      * [lang/codegen] use new call infrastructure for call forwarders
      
      * [lang/codegen] add codegen for short-hand cross-contract message calls
      
      * [lang/codegen] add #[inline] to generated short-hand message calls
      
      * [lang/codegen] improve short-hand call error message
      
      * [lang/codegen] do not generate conflicting impls
      
      * [lang/codegen] generate non-ink! specific user defined items
      
      * [lang/ir] remove some commented out code
      
      * [core, lang/ir] apply rustfmt
      
      * [core] add CreateBuilder::instantiate
      
      * [lang/codegen] fix generate_arg_list
      
      * [lang/codegen] add cross-calling codegen for non-trait constructor impls
      
      * [lang/codegen] add an associated type per trait constructor in ink! trait definition
      
      * [lang/codegen] remove former Output associated type in ink! trait definition
      
      * [lang] re-export trait_definiction proc. macro from ink_lang crate
      
      * [lang/ir] expose InkTrait::compute_verify_hash
      
      * [lang/ir] add ir::ItemImpl::trait_ident
      
      * [lang/codegen] fix some bugs with trait_definition codegen
      
      * [lang/codegen] add codegen for cross-calling ink! trait implementations
      
      * [lang/codegen] surpress warning in generated code
      
      * [lang/codegen] fix bug in generated trait constructors
      
      * [lang/codegen] add codegen for trait implementation blocks
      
      * [lang/ir] allow access to parent impl block from within a CallableWithSelector
      
      * [lang/codegen] make dispatch trait impls more explicit for trait impls
      
      * [lang/codegen] fix and fully implement cross-calling (trait) impl blocks
      
      Works now for both trait impl blocks as well as inherent impl blocks.
      Only missing piece now is the codegen for the call forwarders and their impl blocks.
      
      * [lang/ir] add ir::ItemImpl::attrs getter
      
      * [lang/codegen] add codegen for impl block attributes for cross-calling
      
      * [lang/codegen] correctly re-generate attributes for impl blocks
      
      * [lang/codegen] generate forwarder inherent impl blocks
      
      * [lang, lang/codegen] adjust ink::trait_definition proc. macro codegen
      
      Now it also generates an associated return type per message.
      Those have to respect the ink_lang::ImpliesReturn trait.
      
      * [lang/codegen] add cross-calling call forwarder codegen for trait impl blocks
      
      * [lang] add NeverReturns utility codegen type
      
      * [lang/codegen] implement codegen for cross-calling trait impl blocks
      
      * [*] apply rustfmt
      
      * [lang/codegen] apply some clippy suggestions
      
      * [lang/macro] make use of new ink! 3.0 codegen
      
      * [examples] adjust Flipper example to ink! 3.0
      
      * [examples] add trait based Flipper example
      
      * [examples] adjust Delegator example to ink! 3.0
      
      * [lang/codegen] always use std feature for itertools dependency
      
      Otherwise codegen won't work for Wasm32 compilations.
      
      * [examples] adjusted Incrementer to the new ink! 3.0 codegen
      
      * [lang/ir] fix error span for bad event visibility modifier
      
      * [lang/ir, lang/codegen] fix event fields codegen
      
      * [lang/codegen] fix incorrectly generated EmitEvent trait impl
      
      * [lang/codegen] fix bugs with ink-as-dependency and event usage
      
      * [examples] adjust Erc20 contract to ink! 3.0 syntax
      
      * [examples] fix Erc20 unit tests
      
      * [lang, lang/codegen] add ContractEnv trait
      
      Used to query EnvTypes trait impl using the ink! storage struct.
      
      * [lang, lang/codegen] implement payable messages and dynamic storage alloc
      
      Now it is possible to control whether to use the dynamic storage allocator provided by ink! in ink! itself.
      Also this PR implements codegen for non-payable messages.
      
      * [lang/macro, lang/codegen] apply rustfmt
      
      # Conflicts:
      #	lang/macro/src/lib.rs
      
      * [lang/ir] error upon payable constructor
      
      ink! constructors are payable by default.
      
      * [core] remove EnvTypes::Call associated type
      
      No longer needed since we just removed the ability to directly call the runtime.
      
      * [core] add MAX_EVENT_TOPICS to EnvTypes trait
      
      * [lang, lang/codegen] optimize message payment checks codegen
      
      * [lang/ir, lang/codegen] dynamic storage allocator: rename + change default
      
      New default is set to "false" so only contracts that actually use this feature need to specify it.
      Also renamed to dynamic_storage_allocator to better carry intention.
      
      * [lang, lang/codegen] add codegen to guard against too many event topics
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] pull topic guards codegen out of topics impl codegen const
      
      * [lang/codegen] split event topic guards into their own method
      
      * [lang] remove duplicate re-exports
      
      * [lang/codegen] improve error message for events with too many topics
      
      * [core/derive] explicitly use synstructure 0.12.4
      
      * [examples] update DNS contract example to ink! 3.0 syntax
      
      * [examples] update ERC-721 contract example to ink! 3.0 syntax
      
      * [examples] update multisig_plain example contract to ink! 3.0
      
      The most work was to update the new call builders.
      
      * [lang/ir] improve error message for bad visibility of ink! callables
      
      * [*] update all ink! versions: 2.1.0 -> 3.0.0
      
      * [lang/ir, lang/codegen] port InkTest proc. macro impl to new facilities
      
      * [lang/ir] make __ink_ ident prefix check more general
      
      * [lang/ir] make use of __ink_ idents check in other proc. macro impls
      
      * [*] apply rustfmt
      
      * [examples] apply rustfmt
      
      * [lang] integrate ported #[ink::test] proc. macro
      
      * [lang/macro] remove old proc. macro facilities
      
      * [lang/macro] fix all passing UI tests
      
      * [lang/ir] implement check to guard against Self return in ink! messages
      
      * [lang/codegen] implement check to guard against non ink! storage ink! impls
      
      This works even in precense of type aliases.
      
      * [lang] add re-export for static_assertions
      
      * [lang/macro] update all ink! UI failure tests
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] remove commented-out code
      
      * [lang/codegen] allow clippy::type_complexity in some cross-calling sites
      
      * [*] remove Cargo.lock.old ... oupsi
      
      * [examples] fix incorrected doc comments
      
      * [metadata] remove unnecessary serde field attribute
      
      * [metadata] rename module layout2 -> layout
      
      * [core] rename module storage2 -> storage
      
      * [core] apply rustfmt
      529bd588
  12. 28 Sep, 2020 1 commit
    • Hero Bird's avatar
      Implement trait support - Part 2/3 - New ink! codegen (#470) · 5d7d855c
      Hero Bird authored
      * [lang/codegen] initial impl of the new ink! codegen
      
      This new codegen is based on the (also) new ink! IR.
      
      * [lang/macro] apply rustfmt to imports
      
      * [lang/codegen] apply rustfmt
      
      * [lang/ir] add ItemMod::{attrs, vis} getters
      
      * [lang/codegen] make use of ir::ItemMod::{attrs, vis} in codegen
      
      * [lang/codegen] restructure ink_lang_codegen library
      
      * [lang/codegen] appliy clippy suggestion
      
      * [lang/ir] add Event::attrs() and ToTokens impl for EventField
      
      * [lang/codegen] apply rustfmt
      
      * [lang/codegen] implement Event code generator
      
      * [lang/codegen] make use of the new Events code generator
      
      * [lang/ir] make ir::Callable always Copy and Clone
      
      * [lang/ir] rename CallableWithSelector::item -> callable
      
      * [lang/ir] add Callable::kind() trait method
      
      * [lang/codegen] add dispatch enum code generation
      
      * [lang/codegen] enable dispatch code generator
      
      * [lang/codegen] add generation for constructor dispatch enum
      
      * [lang/codegen] implement contract entry points
      
      * [lang/codegen] implement code generation for DispatchUsingMode impl
      
      * [lang/codegen] add trait impl namespaces Msg<S> and Constr<S>
      
      * [lang/ir] add ir::Message::inputs_span() getter
      
      * [lang/codegen] add codegen for dispatch trait impls for ink! messages
      
      * [lang/codegen] plug-in dispatch trait impls code gen
      
      * [lang/ir] add Callable::inputs_span trait method
      
      * [lang/codegen] implement dispatch trait impl codegen for ink! constructors
      
      Also this implementation avoids a lot of code duplication with the similar code generation for dispatch trait impl of ink! messages.
      
      * [lang/codegen] make generate_input_bindings doc tests pass
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] fix message and constructor namespaces
      
      * [lang/ir] add {Message, Constructor}::attrs getter
      
      * [lang/codegen] implement codegen for ink! ItemImpls
      
      * [lang/codegen] remove some unneeded imports for ItemImpl codegen
      
      * [lang/codegen] automatically import ink_lang's Env, EmitEvent and StaticEnv traits
      
      * [lang/codegen] do not generate for ink-as-dependency
      
      * [lang/codegen] initial impl for cross-calling codegen
      
      Not complete, yet. Also we stubled upon the fact that due to the
      additional Rust trait support we have to completely change how we
      generate code for cross-calling. Research!
      
      * [core] rename utils.rs -> selector.rs
      
      * [core] add common mod for common abstractions for call and create
      
      * [core] improve ExecutionInput: add useful trait impls
      
      * [core] refactor call builder
      
      * [core] adjust rest of ink_core to changed imports
      
      * [core] implement new CreateBuilder
      
      * [core] remove old InstantiateBuilder
      
      * [core] remove no longer needed traits
      
      * [core] add eval,invoke,eval_params,invoke_params to CallBuilder
      
      This makes both CallBuilder and CreateBuilder more similar to each other.
      
      * [core] apply rustfmt
      
      * [core] adjust environment to new CreateBuilder
      
      * [core] apply rustfmt
      
      * [core] move eval and invoke to CallParams
      
      * [core] adjust on-chain impl for CallBuilder
      
      * [core] add explanation for the cfg
      
      * [core] move instantiate to CreateParams
      
      * [core] make CreateParams getters crate private
      
      * [core] rename Call -> CallParams
      
      * [core] improve doc comment
      
      * [lang] adjust lang for new call and create builders
      
      * [core] expose builder construction through build_call and build_create
      
      * [core] remove Default impl for empty ExecutionInput
      
      * [core] add usage examples to build_call
      
      * [core] improve usage doc example of build_call
      
      * [core] improve doc tests for build_call
      
      * [core] add doc test example to build_create
      
      * [core] fix compilation after merge
      
      * [metadata] make constuctor and message name an array and add is_payable
      
      Only messages need is_payable field since constructors must always be payable.
      
      * [lang/codegen] add metadata code generation
      
      * [lang/ir] implement lint to ensure there are no __ink_ prefixed identifiers
      
      Identifiers starting with __ink_ may only be used by the ink! codegen.
      So far this has been only implemented on TokenTree or TokenStream level and not on parsed syn abstractions leading to arcane errors. E.g. it was possible to catch errors if an __ink_ substring appeared in a string literal before.
      
      * [metadata] make serialized Layout fields camelCase
      
      * [lang/ir, lang/macro] apply rustfmt
      
      * [lang/ir] initial implementation of #[ink::trait_definition] proc. macro
      
      * [lang/ir] re-export InkTrait
      
      * [lang/macro] create new proc. macro for ink! trait definitions
      
      * [lang/ir] improve error messages of #[ink::trat_definition] a bit
      
      * [lang/ir] add many more unit tests
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] fixed spelling bug
      
      * [lang/ir] fix handling or errorneous Self receiver in ink! constructors
      
      * [lang/ir] add bunch of new unit tests for #[ink::trait_definition] proc. macro
      
      * [lang/ir] add some more unit tests
      
      * [lang/ir] implement checks for invalid ink! attributes
      
      * [lang/ir] add unit tests for invalid ink! attributes
      
      * [lang/ir] use syn's builtin receiver getter
      
      * [lang/ir] add iterators for ink! trait definition
      
      * [lang/ir] add getters for generic info of ink! trait definition
      
      * [lang/ir] fix a unit test testing too much
      
      * [lang/ir] deny ink! trait definitions with supertraits
      
      We might add support for supertraits in future versions.
      
      * [lang/ir] add verify_hash functions
      
      * [lang/ir] simplify ink! trait verification hash
      
      There now is only a single hash instead of a hash per constructor and message.
      
      * [lang/ir] add InkTrait::attrs() getter
      
      * [lang/ir] add re-exports for most InkTrait types
      
      * [lang/codegen] initial implementation of #[ink::trait_definition] codegen
      
      Does not yet include the verification hash generation.
      
      * [lang/codegen] refine codegen for ink! trait definitions
      
      * [lang, lang/codegen] use correct trait for ink! trait definition checking
      
      * [lang/codegen] rework crate exposed API
      
      * [lang/ir] fix return value of ir::InkTrait::new
      
      * [lang/macro] update codegen driver for ink! trait definition
      
      * [core, lang/codegen, lang/ir, metadata] apply clippy suggestions
      
      * [lang/codegen, lang/ir, lang/macro, lang] apply rustfmt
      
      * [lang/macro] add ink_lang_codegen dependency
      
      Needed for #[ink::trait_definition] proc. macro.
      
      * [core/derive] use _ as const name instead of generated one
      
      * [lang/codegen] prefix {Constructo,Message}DispatchEnum ident with __ink_
      
      * [lang/codegen] use payable instead of is_payable
      
      * [lang/codegen] hide some generated types
      
      * [lang/ir] improve error span of bad storage struct visibility
      
      * [core] add CallBuilder::returns to signal return type
      
      Also this adds CallBuilder::fire as a quick way to fire off the call.
      The CallBuilder::invoke_params and CallBuilder::eval_params are no longer needed and thus removed.
      
      * [lang/ir] implement ToTokens for ir::Receiver
      
      * [lang/codegen] apply #[doc(hidden)] to generated call forwarders
      
      * [lang/codegen] slightly clean-up code
      
      * [lang/codegen] use new call infrastructure for call forwarders
      
      * [lang/codegen] add codegen for short-hand cross-contract message calls
      
      * [lang/codegen] add #[inline] to generated short-hand message calls
      
      * [lang/codegen] improve short-hand call error message
      
      * [lang/codegen] do not generate conflicting impls
      
      * [lang/codegen] generate non-ink! specific user defined items
      
      * [lang/ir] remove some commented out code
      
      * [core, lang/ir] apply rustfmt
      
      * [core] add CreateBuilder::instantiate
      
      * [lang/codegen] fix generate_arg_list
      
      * [lang/codegen] add cross-calling codegen for non-trait constructor impls
      
      * [lang/codegen] add an associated type per trait constructor in ink! trait definition
      
      * [lang/codegen] remove former Output associated type in ink! trait definition
      
      * [lang] re-export trait_definiction proc. macro from ink_lang crate
      
      * [lang/ir] expose InkTrait::compute_verify_hash
      
      * [lang/ir] add ir::ItemImpl::trait_ident
      
      * [lang/codegen] fix some bugs with trait_definition codegen
      
      * [lang/codegen] add codegen for cross-calling ink! trait implementations
      
      * [lang/codegen] surpress warning in generated code
      
      * [lang/codegen] fix bug in generated trait constructors
      
      * [lang/codegen] add codegen for trait implementation blocks
      
      * [lang/ir] allow access to parent impl block from within a CallableWithSelector
      
      * [lang/codegen] make dispatch trait impls more explicit for trait impls
      
      * [lang/codegen] fix and fully implement cross-calling (trait) impl blocks
      
      Works now for both trait impl blocks as well as inherent impl blocks.
      Only missing piece now is the codegen for the call forwarders and their impl blocks.
      
      * [lang/ir] add ir::ItemImpl::attrs getter
      
      * [lang/codegen] add codegen for impl block attributes for cross-calling
      
      * [lang/codegen] correctly re-generate attributes for impl blocks
      
      * [lang/codegen] generate forwarder inherent impl blocks
      
      * [lang, lang/codegen] adjust ink::trait_definition proc. macro codegen
      
      Now it also generates an associated return type per message.
      Those have to respect the ink_lang::ImpliesReturn trait.
      
      * [lang/codegen] add cross-calling call forwarder codegen for trait impl blocks
      
      * [lang] add NeverReturns utility codegen type
      
      * [lang/codegen] implement codegen for cross-calling trait impl blocks
      
      * [*] apply rustfmt
      
      * [lang/codegen] apply some clippy suggestions
      
      * [lang/codegen] always use std feature for itertools dependency
      
      Otherwise codegen won't work for Wasm32 compilations.
      
      * [lang/ir] fix error span for bad event visibility modifier
      
      * [lang/ir, lang/codegen] fix event fields codegen
      
      * [lang/codegen] fix incorrectly generated EmitEvent trait impl
      
      * [lang/codegen] fix bugs with ink-as-dependency and event usage
      
      * [lang, lang/codegen] add ContractEnv trait
      
      Used to query EnvTypes trait impl using the ink! storage struct.
      
      * [lang, lang/codegen] implement payable messages and dynamic storage alloc
      
      Now it is possible to control whether to use the dynamic storage allocator provided by ink! in ink! itself.
      Also this PR implements codegen for non-payable messages.
      
      * [lang/macro, lang/codegen] apply rustfmt
      
      * [lang/ir] error upon payable constructor
      
      ink! constructors are payable by default.
      
      * [core] remove EnvTypes::Call associated type
      
      No longer needed since we just removed the ability to directly call the runtime.
      
      * [core] add MAX_EVENT_TOPICS to EnvTypes trait
      
      * [lang, lang/codegen] optimize message payment checks codegen
      
      * [lang/ir, lang/codegen] dynamic storage allocator: rename + change default
      
      New default is set to "false" so only contracts that actually use this feature need to specify it.
      Also renamed to dynamic_storage_allocator to better carry intention.
      
      * [lang, lang/codegen] add codegen to guard against too many event topics
      
      * [lang/codegen] pull topic guards codegen out of topics impl codegen const
      
      * [lang/codegen] split event topic guards into their own method
      
      * [lang] apply rustftm
      
      * [lang/ir] remove unnecessary lifetime
      
      * [lang] make use of deny_payment internally
      
      * [lang/macro] ignore UI compile tests for now
      
      These will be re-enabled for the follow-up PR.
      
      * [metadata] rename is_payable -> payable (also for metadata format)
      
      * [lang/ir] resolve duplicate code for non-pub visibility checking
      
      Was duplicated for events and storage structs.
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] removed commented-out code and update license header
      
      * [lang/codegen] update crate description
      
      * [core] move CreateParams impl blocks closer to struct definition
      
      * [lang/macro] use US english
      
      * [core] fix incorrect doc comment
      5d7d855c
  13. 23 Sep, 2020 1 commit
    • Michael Müller's avatar
      Implement [ink::test] proc macro (#490) · 552d38bb
      Michael Müller authored
      * [lang] Introduce [ink::test] macro
      
      * [core] Migrate some tests to use [ink::test] macro
      
      * Address comments
      
      * Apply cargo fmt
      
      * [lang] Ensure generated code behaves as if test fn has no return value
      
      * [examples] Migrate tests to use [ink::test] macro
      
      * [core] Revert core using [ink::test]
      
      * [lang] Use all available parameters
      
      * [lang] Remove unused imports
      
      * [lang] Remove implicit Ok(())
      
      * [core] Apply cargo fmt
      
      * [lang] Make it clearer where ItemFn comes from
      
      * Apply cargo fmt
      552d38bb
  14. 02 Jul, 2020 1 commit
    • Hero Bird's avatar
      Implement trait support - Part 1/3 - New ink! IR (#451) · c24f0ff9
      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's avatarMichael 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's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew 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's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew 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's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang/ir] fix doc comment
      
      * [lang/ir] remove outdated doc comment
      
      * fix doc comment
      Co-authored-by: Andrew Jones's avatarAndrew 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's avatarMichael Müller <mich@elmueller.net>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      c24f0ff9
  15. 03 Feb, 2020 1 commit
    • Hero Bird's avatar
      Implementation of ink! env (revision 3) (#312) · 321fe03a
      Hero Bird authored
      
      
      * [core] initial implementation of env revision 3
      
      * add engine abstraction layer and implement api functions
      
      * add support for dispatch_call to env3
      
      * add missing invoke_runtime to api.rs
      
      * [core] fix restore_contract docs
      
      * [core] initial implementation of off-chain environment
      
      * [core] clean-up of env3 fundamental types
      
      * [core] add WasmEnv::reset_buffer
      
      * show test submodule of env3 when compiling with rustdoc
      
      * [core] initial implementation of the off-chain env instance
      
      Also many other adjustments.
      
      * [core] further enhancements to off-chain env
      
      * [core] implement untyped Env for off-chain environment
      
      * [core] implemented a good chunk of TypedEnv for the off-chain environment
      
      * [core] minor improvements to env3
      
      * [core] further improvements and additions to test-api of env3
      
      * [core] remove former test-api file
      
      * [core] env3: add support for ext_tombstone_deposit
      
      * [core] env3: add setting of rent allowance in off-chain env
      
      * [core] env3: remove buffer.rs
      
      * [core] env3: remove property.rs
      
      * [core] env3: mark some TypedEnv methods as not-todo
      
      * [core] env3: enable off-chain api for non test/doc builds
      
      * [core] env3: use a static buffer instead of Vec<u8>
      
      * [core] env3: move static buffer into its own module
      
      * fix doc comment
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [core] env3: add missing license header
      
      * [core] env3: remove deprecated doc note
      
      * [core] env3: add off-chain {set/get}_runtime_storage
      
      * [core] env3: add off-chain invoke_runtime dispatch
      
      This also enables support for registering custom runtime call handlers.
      
      * [core] env3: slightly improve env3::random docs comment
      
      * [core] env3: move off-chain errors under EnvError
      
      * [core] env3: add ext_random support for the off-chain environment
      
      * [core] env3: minor clean ups
      
      * [core] env3: improve TypedEncoded::assign
      
      * [core] env3: un-mut some variables
      
      * [core] env3: fix some clippy warnings
      
      * [core] env3: add past_printlns to off-chain test api
      
      * [core] env3: minor refactoring
      
      * [core] env3: apply rustfmt
      
      * [core] env3: clean up of call and instantiate contract
      
      * [core] env3: rename moment -> time_stamp
      
      * [core] env3: make get_runtime_storage return a Result instead of RetCode
      
      * [core] env3: remove unneeded import
      
      * [core] env3: add some trait impls for EnvTypes::Hash
      
      * [core] env3: remove last remaining usages of RetCode
      
      * [core] env3: refactor some errors
      
      * [core] env3: document the EnvError enum
      
      * [core] env3: add impls for fire methods on call and create builders
      
      * [core] env3: add doc comment to past_printlns
      
      * [core] env3: apply rustfmt
      
      * [core] env3: update license headers
      
      * [core] env3: support querying and emitting of events in off-chain env
      
      * [core] env3: missing license header adjustment
      
      * [core] env3: apply rustfmt
      
      * [core] env3: rename some methods in off-chain test-api
      
      * [core] env3: add doc comment to test::emitted_events
      
      * [core] env3: add stub for test::advance_block
      
      * [core] env3: rename some more test API methods
      
      * [core] env3: initialize entropy of block randomly
      
      * [core] env3: extend EnvTypes trait bounds
      
      This change makes the trait bounds more similar to what Substrate defines.
      
      * [core] env3: document SimpleArithmetic trait
      
      * [core] env3: add From<u32> to SimpleArithmetic trait
      
      * [core] env3: made some trait bounds more explicit in SimpleArithmetic trait
      
      * [core] env3: add comment describing potential future extensions to SimpleArithmetic trait
      
      * [core] env3: rename EnvTypes::Moment to TimeStamp
      
      * [core] env3: add block_time to ChainSpec
      
      * [core] env3: remove CodeDb again
      
      Not needed right now. Maybe re-added at a later point.
      
      * [core] env3: apply rustfmt
      
      * [core] env3: implement off-chain test::advance_block
      
      * [core] env3: fix bug in off-chain test::advance_block impl
      
      * [core] env3: made SimpleArithmetic trait more explicit towards Output types
      
      * [core] env3: add default initialization routines for off-chain environment
      
      * [core] env3: remove test::create_user_account for now
      
      * [core] env3: fix missing renaming from Moment -> TimeStamp
      
      * [core] env3: impl PartialEq and Eq for off-chain error types
      
      * [core] env3: add test::run_test for off-chain testing with default setup
      
      * [core] env3: fix several minor bugs with the off-chain environment
      
      * [core] convert key.rs tests to new env3
      
      * [core] remove commented out code in key.rs tests
      
      * [core] evn3: add test::get_contract_storage_rw
      
      * [core] use env3 instead of env1 in storage cells
      
      * [core] integrate env3 into storage::TypedChunk
      
      * [core] remove storage::RawChunk and NonCloneMarker
      
      * [core] adjust SyncChunk slightly for TypedChunk modifications
      
      * [core] simplify transitioned env3 tests for TypedChunk
      
      * [core] transition tests for SynChunk to env3
      
      * [core] transition storage::Stash tests to env3
      
      * [core] transition storage::HashMap tests to env3
      
      * [core] transition storage::BinaryHeap tests to env3
      
      * [lang] remove the entire ink! lang crate
      
      It has been deprecated for a whole while.
      
      * [model] remove ink! model crate entirely
      
      It has been deprecated for a whole while.
      
      * [core] remove the old env1 sub-module of ink_core
      
      It has been deprecated for a whole while.
      
      * [examples] remove model examples
      
      * [examples] remove lang examples
      
      * [examples] remove core examples
      
      * remove "If given too few endowment" from docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang2] initial steps towards basing on env3 instead of env2
      
      With this commit `cargo contract build` already works.
      However, cargo test etc. are still broken.
      
      * [lang2] make macros work for `cargo test`
      
      * [core, lang2] make contracts compile as ink-as-dependency
      
      * [lang2] make events work for ink_lang2 on env3
      
      * [lang2] remove AccessEnv - no longer needed
      
      * [core] remove env2
      
      * [lang2] fix tests
      
      - Fix warning in ink_lang2
      - Remove no longer needed test case
      - Adjust some passing tests after default module import removal
      
      * [*] apply rustfmt
      
      * [lang2] silence unused warning for now
      
      * [core] rename {create|Create}* to {instantiate|Instantiate}*
      
      - CreateBuilder -> InstantiateBuilder
      - CreateParams -> InstantiateParams
      - create -> instantiate
      
      * [core] rename endowment -> transferred_value for CallBuilder/Params
      
      * [examples] adjust Delegator contracts for recents changes
      
      * [core] rename now_in_ms -> block_timestamp
      
      * [core] follow-up of the call renamings (transferred_value)
      
      * [lang2] rename now_in_ms -> block_timestamp
      
      * [examples] move examples out of the examples/lang2 folder
      
      * [examples] fix runtime-storage example contract
      
      * [examples] fix Flipper contract
      
      * [examples] fix Incrementer contract
      
      * [examples] fix Erc20 contract
      
      * [utils] add Key and byte_utils to ink_utils
      
      * [utils -> primitives] rename ink_utils -> ink_primitives
      
      * [*] move all links from ink_utils -> ink_primitives
      
      * [primitives] update Cargo.toml description
      
      * [*] use ink_primitives::Key remove ink_core::Key
      
      * [primitives] refactor new crate, make it more usable in ink! context
      
      * [*] relink to ink_primitives for Key usage
      
      * [abi] refactor macros and relink to ink_primitives::Key
      
      * [lang2] fix usage of renamed Create{Builder, Params}
      
      * [examples] fix examples under recent changes with ink_primitives
      
      * [*] apply rustfmt
      
      * [lang2/macro] remove deprecated feature usage of proc_macro_hygiene
      
      * [examples] remove deprecated proc_macro_hygiene feature
      
      * [core] remove test_utils
      
      * [core] rename env3 to env
      
      * [*] rename all usages of env3 to env
      
      * [core] fix feature usage in num-traits of ink_core Cargo.toml
      
      * [*] update README
      
      * [primitives] conditionally compile type_metadata from ink_primitives
      
      * [core] make env::get_contract_storage return Option<Result<T>>
      
      * [core] fix some faulty doc comments
      
      * [ci] fix GitLab CI
      
      * [primitives] fix no_std compilation
      
      * [primitives] fix warning
      
      * [core] make `rand` dependency optional for `std` crate feature
      
      * [core] remove the test-env crate feature from the ink_core crate
      
      * [core,primitives] move some tests from primitives to core
      
      * [lang] move lang2/ to lang/
      
      * [*] rename all instances of ink_lang2 or lang2 to ink_lang or lang
      
      * [lang/macro] fix ink_primitives dependency
      
      * [*] apply rustfmt
      
      * [core] fix clippy warning
      
      * [ci] eliminate README from examples CI checks
      
      * [examples] apply rustfmt
      
      * [lang/macro] improve event codegen
      
      * [core] rename TimeStamp/time_stamp to Timestamp/timestamp
      
      * [lang] remove unused extern crate alloc
      
      * [core] rename env::address to env::account_id
      
      * [lang] perform renamings on ink_lang::EnvAccess but with deprecation instead of removal
      
      * [core] fix missing time_stamp renamings
      
      * [lang] fix missing TimeStamp renamings
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * impr
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename endowment -> transferred_value
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename time stamp to timestamp
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename SRML to env in docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * remove SRML word from docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * remove SRML word from docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang] fix doc comment for filtered_keys in restore_contract
      
      * [core] rename create_contract -> instantiate_contract
      
      * [core] rename create_contract -> instantiate_contract
      
      * [core] fix some renamings around endowment -> transferred_value
      
      * [lang] rename create_contract -> instantiate_contract follow-up
      
      * [core] apply rustfmt
      
      * [core] improve restore_contract doc comment
      
      * [core, lang] link to ink_core::env::* doc comments from all api places
      
      * [core] apply rustfmt
      Co-authored-by: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      321fe03a
  16. 20 Nov, 2019 1 commit
  17. 09 Nov, 2019 1 commit
    • Hero Bird's avatar
      Implementation of ink! syntax 2.0 (#191) · 098b5a4d
      Hero Bird authored
      
      
      * [lang2] initial commit of ink! lang2 frontend
      
      This is going to be the frontend for the new ink! syntax.
      
      * [lang2] change version syntax to semantic versioning string
      
      * [lang2] add failure test for invalid semantic version string
      
      * [lang2] fix some unused warnings
      
      * [lang2] change lib name to ink_lang2
      
      * [lang2] add span to ir::data::ItemStorage
      
      * [lang2] modernize env types codegen
      
      * [lang2] re-introduce entry points codegen but without body for now
      
      * [lang2] add initial storage struct codegen
      
      * [lang2] add lang2 flipper contract example for testing purposes
      
      * [core] impl env2::EnvTypes for DefaultSrmlTypes instead of old env::EnvTypes
      
      * [lang2] add `0` body to entry points
      
      * [lang2] mark fn allocate_using impl for storage struct as unsafe
      
      * [lagn2] ignore args in Initialize::initialize impl for storage struct
      
      * [lang2] adjust compiletests
      
      * [core] add emit_event to EnvAccess{Mut}
      
      * [lang2] add codegen for contract functions
      
      * [lang2] add Signature::inputs
      
      * [lang2] adjust and modernize compiletests
      
      * [lang2] apply rustfmt
      
      * [core] add generic Encode param to EmitEventParams
      
      * [cli] bump version 0.1.1 -> 0.1.2
      
      * [core] make it possible to use EnvAccess{Mut} directly in storage
      
      * [core] make Selector::{from_bytes, to_bytes} const fn
      
      * [core] add check to Decode impl for CallData
      
      * [core] add #[inline..] annotations to some public trait impls
      
      * [lang2] move lang2 into lang2_macro and create new lang2 helper crate
      
      * [examples] add initial core/flipper example that acts as codegen prototype
      
      * [core] add some more #[inline..] annotations
      
      * [lang2] split DerefEnv into AccessEnv{Mut} and losen direct trait bounds
      
      * [core] add efficient conversion from DynEnv<EnvAccessMut> to DynEnv<EnvAccess>
      
      * [examples] adjust core::Flipper prototype to newest state
      
      * [core] add env accessors to DynEnv
      
      * [lang2] add AccessEnv{Mut} impls for DynEnv and EnvAccess{Mut}
      
      * [lang2] use double AccessEnv trait indirection in dispatch fns
      
      * [examples] core::flipper: add ink-dyn-alloc crate feature
      
      Enable this to enable dynamic storage allocation for your contract.
      Dynamic storage allocation is an optional drop-in feature.
      
      * [lang2] make LICENSE and README.md sym links
      
      * [lang2-macro] replace LICENSE and README.md with sym links
      
      * [lang2] add access_env sub module
      
      * [lang2] simplify Message trait concept for constructors
      
      * [lang2] add more general error codes
      
      * [lang2] add storage sub module
      
      * [lang2] remove old dispatch sub module
      
      * [lang2] implement new dispatcher based on ink_model v2
      
      * [examples] adjust core flipper example for new codegen
      
      * [lang2] remove some commented out code
      
      * [lang2] rename dispatch2 to dispatch_using_mode
      
      * [lang2] fix doc link in DispatchMode docs
      
      * [examples] adjust core::Flipper to better reflect codegen prototype
      
      * [lang2] rename ContractDispatch to DispatchUsingMode and add docs
      
      * [lang2] remove unused ContractInstance trait
      
      * [lang2] remove unneeded Msg and Constr utility types
      
      Those types should solely be provided by the contracts themselves.
      They act as namespaces for the respective message type.
      
      * [lang2/macro] add GenerateCodeUsing trait
      
      * [example] add explanation docs to the Flipper::get(&mut self) method
      
      * [lang2] fix unused warning
      
      * [lang2/macro] refactor codegen module
      
      * [lang2/macro] remove commented-out code
      
      * [core] add EnvAccess to allow universal usage of EnvAccess
      
      * [lang2] no longer require separate storage structs
      
      * [examples] adjust core/Flipper to newest ink_lang2 and ink_core changes
      
      * [examples] remove as much direct Flipper usages as possible
      
      * [lang2/macro] temporarily disable dispatch codegen
      
      * [lang2/macro] add MetaInfo::is_dynamic_allocation_enabled stub
      
      * [lang2/macro] implement initial storage codegen
      
      * [core] remove DynEnvAccess and DynEnvAccessMut
      
      No longer needed!
      
      * [core] implement AccessEnv for &'a {mut} DynEnv<EnvAccess{Mut}>
      
      * [examples] fix implementation of ink_lang2::AccesEnv for StorageAndEnv
      
      * [examples] fix ink_core::env2::AccessEnv impl for StorageAndEnv
      
      * [examples] move deploy and call fns into dispatch const block
      
      * [examples] convert docs to comments because they screw up cargo expand
      
      * [lang2/macro] remove ink_model dependency
      
      * [lang2] fix some minor warnings and issues
      
      * [lang2/macro] fix codegen of ink_core::env2::AccessEnv impls
      
      * [lang2/macro] refactor and improve FunctionSelector implementation
      
      * [lang2/macro] Signature::inputs now returns an iterator over IdentType
      
      Was returning an iterator over FnArg before but conversion is trivial.
      
      * [lang2/macro] add dispatch codegen
      
      * [examples] fix DefaultSrmlTypes usage in lang2/Flipper
      
      * [core] prepare env2 to be used with ABI generation purposes
      
      * [examples] add ABI generation to core/Flipper
      
      This will serve as a prototype for ink_lang2 codegen.
      
      * [core, model] remove unneeded warnings/lints
      
      * [lang2] make calls to AccessEnv and Flush more explicit
      
      * [lang2/macro] no longer use no-default-features for dev-dependencies
      
      * [lang2/macro] surpress warnings of unused imports for core::env2::AccessEnv
      
      * [lang2/macro] fix codegen of {ink_lang2/core::env2}::AccessEnv impls
      
      * [lang2/macro] remove unused let binding (was commented out anyways)
      
      * [lang2/macro] fix several codegen bugs
      
      * [examples] remove ink_model and ink_lang dependencies of lang2/Flipper
      
      * [examples] add contract and layout bindings type annotation
      
      * [lang2/macro] adjust some passing tests
      
      * [lang2] add GenerateAbi trait guarded by ink-generate-abi crate feature
      
      * [lang2/macro] move scale dependency away from ink dependencies in Cargo.toml
      
      * [lang2/macro] add Metadata and HasLayout derives to storage structs
      
      * [lang2/macro] insert minor whitespace between bindings and quote
      
      * [lang2/macro] add abi module to generate ABI generating code
      
      * [lang2/macro] add Function::{filter_constructor, filter_message}
      
      * [lang2/macro] fix bug that non-ink! filter for attributes was off
      
      * [lang2/macro] make use of iterative array quoting in Dispatch codegen
      
      * [lang2/macro] add utility to filter doc attributes and parse them to readable string
      
      * [lang2/macro] add codegen for ABI generation
      
      * [example] adjust lang2/Flipper abi-gen package
      
      * [lang2/macro] ink::contract params adjustments
      
      - make `env` param default to ink_core::env2::DefaultSrmlTypes
      - add `dynamic_allocations = {true|false}`, default: false
      - add `compile_as_dependency = {true|false}`, default: false
      
      * [lang2/macro] adjust passing tests to new contract params
      
      * [examples] adjust lang2/Flipper to new contract params
      
      We enable dynamic_allocations for now since disabling it causes other errors.
      
      * [lang2/macro] add different HasLayout impl for dynamic_allocations {true|false}
      
      * [examples] lang2/Flipper no longer requires dynamic_allocations = true
      
      * [lang2] rename AccessEnv::env to AccessEnv::access_env
      
      This helps to disambiguate certain other `env` methods and trait impls
      
      * [examples] adjust core/Flipper example
      
      * [core] refactor event emitting interfaces in env2
      
      * [examples] core/Flipper: fix env types aliases
      
      * [examples] core/Flipper: adjust to new event emitting
      
      Also:
      - messages and constructors no longer can access private fields from StorageAndEnv
      - rename __ink_storage to __ink_private
      - add __ink_events module in __ink_private defining all events and utilities
      - general rust formatting
      
      * [core] add EmitEvent utility trait
      
      This allow to disambiguate the contract's provided EmitEvent trait
      
      * [examples] core/Flipper: make it impossible to ambiguate emitting of events
      
      * [lang2/macro] rename contract_module.rs to contract.rs
      
      * [lang2/macro] generated messages and constructors can no longer access internals of StorageAndEnv
      
      * [lang2/macro] apply rustfmt
      
      * [lang2/macro] add event codegen
      
      - ABI generation codegen for events is still missing
      
      * [lang2/macro] adjust some pass UI tests to new event codegen
      
      * [lang2/macro] re-export the contract on crate root again
      
      This is done for ABI creation since otherwise the abi-gen tool couldn't access the data.
      
      * [lang2/macro] add ABI generation for events
      
      * [lang2/macro] add Erc721 UI pass test
      
      * [lang2/macro] add missing codegen for ABI event args docs
      
      * [lang2/macro] fix a bug that ABI codegen would always impl GenerateAbi for Flipper
      
      * [lang2/macro] add derive(Metadata) to Error enum for Erc721 test
      
      * [core] add missing Initialize::default_value impls
      
      * [core] add Debug impls for some env types
      
      * [examples] core/Flipper: add code to allow for offchain testability
      
      * [examples] core/Flipper: add error handling for test env init
      
      * [lang2/macro] add docs to ABI generation of event args
      
      * [examples] core/Flipper: adjust to improve testability
      
      - No longer requires <Flipper as Testable>::constructor
      - packs whole of flipper contract in associated flipper module such as what ink_lang2 does
      
      * [lang2/macro] add filter_ink_attributes and has_ink_attributes to utilities
      
      * [lang2/macro] re-export utils from ir
      
      * [lang2/macro] add ir::utils::is_ink_attribute
      
      * [lang2/macro] allow non-ink! items in the contract module
      
      * [lang2/macro] add test for non-ink! module items
      
      * [lang2/macro] apply rustfmt on UI tests
      
      * [lang2/macro] fix 02 ui fail test
      
      * [lang2/macro] generate code for non-ink! module items
      
      * [lang2/macro] move utilities inside the contract module - because we can!!
      
      * [lang2/macro] adjust compile tests for most recent changes
      
      * [lang2/macro] add compile test for missing messages
      
      * [lang2/macro] fix some minor warnings
      
      * [lang2/macro] add a lint to check if all identifiers respect not starting with __ink
      
      * [lang2/macro] add simple test for __ink starting identifiers lint
      
      * [lang2/macro] update docs of idents_respect_pred
      
      * [lang2] apply rustfmt
      
      * [core] apply rustfmt to env2 module
      
      * [lang2/macro] add ir::utils::filter_non_ink_attributes
      
      * [lang2/macro] make use or ir::utils::filter_non_ink_attributes
      
      * [lang2/macro] re-export contract on crate root only for ABI generation
      
      * [lang2/macro] documented code generation principles
      
      * [examples] add Erc20 token example for lang2
      
      * [lang2/macro] refactor event codegen
      
      * [lang2/macro] move dispatch codegen into __ink_private
      
      This hides `Msg` and `Constr` namespaces into __ink_private.
      
      * [lang2/macro] move ABI generation codegen into __ink_private
      
      * [lang2/macro] add test to forbig accessing generated storage fields
      
      * [lang2/macro] extend test to forbig accessing generated storage fields
      
      * [lang2] implement testable contracts codegen
      
      * [lang2/macro] do not generate dispatch code for tests or if `test-env` is enabled
      
      * [examples] lang2/Flipper: add contract tests
      
      * [lang2/macro] add simple tests to flipper test
      
      * [examples] remove core/Flipper example again
      
      This was decided after we felt that maintaining it was more of a burden than it being a help for further development.
      
      * [lang2/macro] apply rustfmt
      
      * [core] refactor env2 cross-calling infrastructure
      
      * [core] move seals into utils
      
      * [examples] lang2/Flipper: add default_works test
      
      * [lang2/macro] add cross-contract calling
      
      * [lang2/macro] add cross-contract calling test
      
      * [lang2] remove CreateForwarder infrastructure since unneeded
      
      * [lang2/macro] do not generate code for Events when compiled as dependency
      
      * [lang2/macro] remove strange semi-comments in Msg and Constr
      
      * [lang2/macro] add Debug derive to StorageAsDependency
      
      * [examples] add Delegator contract based on ink_lang2
      
      * [core] guard calling CreateBuilder::using_code at compile-time
      
      * [lang2] fix some clippy warnings
      
      * [chores] update README
      
      * [lang2/macro] refactor into_hir: use ir types through ir module
      
      * fix typo
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * fix typo in lang2/macro/src/ir/into_hir.rs
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * fix typo in examples/lang2/delegator/adder/lib.rs
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * fix typo in lang2/macro/src/codegen/cross_calling.rs
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * fix typo in core/src/env2/traits.rs
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * fix typo in lang2/macro/src/codegen/contract.rs
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [lang2/macro] improve some ink! error messages
      
      * [lang2/macro] remove commented-out code
      
      * fix typo in lang2/macro/src/codegen/dispatch.rs
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [lang2/macro] remove ancient Cargo.toml artifacts
      
      * [examples] fix typo and enhance delegator docs a bit
      
      * use `#!/usr/bin/env` instead of `#!/bin/bash`
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [lang2] apply rustfmt
      
      * [core] env2: apply rustfmt
      
      * [cli] adjust CLI to generate ink_lang2 contract upon new command
      
      * [lang2/macro] generate some #[inline] annotations on some generated cross-calling interfaces
      
      * [examples] improve Delegator example slightly
      
      * [core] fix bug that SrmlEnv tried to impl traits for TestEnv
      
      * [examples] fix bug that .ink/abi_gen was using incorrect crate features
      
      * [cli,examples] fix all abi_gen/Cargo.toml files
      
      * [examples] fix bugs in some examples
      
      * [lang2/macro] suppress some unused_parens warnings
      
      * [examples] add incrementer as lang2 example
      
      * [lang2/macro] make codegen more precise when using traits
      
      * [lang2/macro] "fix" a bug in cross-calling codegen
      
      The fix is actually a hack that we should remove again as soon as possible by a proper solution.
      
      * [core] rename ext_create to ext_instantiate
      
      * [examples] lang2/Delegator: fix some warnings and added Delegator::get
      
      * [examples] lang2/Erc20: add Erc20::allowance
      
      * [core] fix bug in executing ext::scratch_read causing panic
      
      * [core] remove unused println statements in tests
      
      * [examples] delegator: minor improvements
      098b5a4d
  18. 19 Aug, 2019 1 commit
    • Hero Bird's avatar
      Reintroduce old ABI format generation (#174) · 7b5486af
      Hero Bird authored
      * [lang] reintroduce the old ABI generation
      
      We keep this in ink! until the new ABI format support is stable enough.
      
      * [examples] update examples to be able to use the old ABI generation
      
      * [cli] update template for old ABI generation
      7b5486af
  19. 14 Aug, 2019 1 commit
    • Hero Bird's avatar
      ink! ABI (#104) · fa6b0065
      Hero Bird authored
      
      
      * [abi] Create ink_abi sub crate
      
      * [abi] Add initial types for abi generation
      
      * [abi] Add EventParamSpec to include indexed event params
      
      * [abi] Add documentation field to specs
      
      * [abi] Add license and readme links and clean up authors
      
      * [abi] Add missing license headers
      
      * [abi] Fix some compile errors
      
      * [abi] Make macros usable internally
      
      * [abi] Create type_spec_of_tuple constructor macro
      
      * [abi] Implement serialization for tuples
      
      * [abi] Implement serialize for array types
      
      * [abi] Remove module prefix of Vec<T>
      
      * [abi] Apply rustfmt
      
      * [abi] Improve minor formatting
      
      * [abi] Add trait to allow external crate to specify serialize of TypeSpec<T>
      
      * [abi] Make rustfmt happy
      
      * [abi] Handle missing Vec in no_std environment
      
      We really need a further abstraction to handle memory types.
      Right now they life in ink_core but we shouldn't depend on ink_core from within ink_abi.
      So we want to extract the memory sub module out of ink_core into its own crate that we can from then on depend on.
      
      * [abi] Use same array pre-impls as metadata prototype impl
      
      * [abi] Depend on cennznet/type-metadata + adjustments
      
      * [abi] add missing license headers
      
      * [abi] fixes for renamings in type-metadata crate
      
      * [abi] add IntoCompact impls for layout types
      
      * [abi] properly forward std feature
      
      * [abi] implement Serialize for Key
      
      * [abi] apply rustfmt and add some layout constructors
      
      This also removes the dependency from ink_abi to ink_core and adds derive feature to type-metadata dependency.
      
      * [core] implement ink_abi traits for ink_core abstractions
      
      * adjust ink_abi Cargo.toml to using std feature by default
      
      # Conflicts:
      #	abi/Cargo.toml
      
      * [core] Integrate ink_abi no_std compat into ink_core
      
      * [lang] initial skeleton of codegen for ink_abi
      
      * Enhance Flush (#136)
      
      * [core] Enhance Flush trait to make it work with SyncCell and SyncChunk
      
      * apply rustfmt
      
      * [core] implement ink_abi traits for ink_core abstractions
      
      * [core] Integrate ink_abi no_std compat into ink_core
      
      * [core] Apply cargo fmt
      
      * [cli] initial adjustments for ink_abi to ink! template
      
      * [abi] clean-up of Cargo.toml
      
      * [abi] remove invalid lib docs
      
      * [utils] Update utilities docs
      
      * [abi] improve JSON encoding of layout structs
      
      * [abi] improve JSON encoding and add builder pattern constructors
      
      * [abi] Add InkProject meta type
      
      * [abi] temporarily depend on improve-json-output type-metadata branch
      
      * [core] adjust type-metadata temporary branch to use the same as ink_abi
      
      * [ci] add travis CI nightly-2019-08-01 channel (experimental)
      
      * [abi] add MessageSpecBuilder::{args, docs} methods
      
      * [core] implement Metadata for AccountId and Hash of DefaultSrmlTypes
      
      * [abi] change type of selector from u64 to u32
      
      * [lang] add some helper routines
      
      * [lang] add code generation for new ABI format
      
      * [abi,core] use master branch for type-metadata again
      
      * [lang] implement initial code gen for ABI generation
      
      * [examples] adjust Flipper contract example to ink_abi generation
      
      * [lang] remove old generate-abi-description feature and associated code
      
      * [examples] remove traces of removed generate-api-description feature
      
      * [core] make cells_origin and chunks_origin only visible for test-env
      
      * [cli] adjust template for ink-abi update
      
      * [abi] implement ink_abi_derive for HasLayout derive macro
      
      * [lang] make use of new ink_abi_derive functionality
      
      * [examples] adjust Flipper for new ink_abi derive crate feature
      
      This is needed because we disable default features.
      
      * [abi] remove some commented-out code
      
      * [chores] update README and include ink_abi docs
      
      * [abi] apply rustfmt
      
      * [lang] apply rustfmt
      
      * [abi] apply rustfmt to non derive crate
      
      * [core] apply rustfmt
      
      * [lang] trim doc strings coming from syn::Attribute
      
      * [examples] rename .tools directory to .ink
      
      * [examples] fix bug with no_std and "std" crate feature
      
      * [lang] fix bug in abi generation for events
      
      * [examples] adjust events example to new ink_abi
      
      * [lang] fix some more edge cases with doc string trimming
      
      * [lang] fix a bug that path matching for function arguments was off
      
      * [examples] adjust Incrementer to new ink_abi
      
      * [cli] rename .tools to .ink in template
      
      * [cli] update template Cargo.toml
      
      * [examples] temporarily fix type-metadata hick-up
      
      * [examples] make ink_abi optional
      
      * [examples] adjust Erc20 token example to new ink_abi
      
      * [cli] fix template no_std support
      
      * [*] use master branch of type-metadata crate again
      
      * [examples] replace parity-codec/std with scale/std
      
      * [core] derive Metadata for some util types
      
      This unfortunately was lost upon the latest rebase.
      
      * [ci] update from nightly-2019-08-01/2019-07-19 to just nightly-2019-08-09
      
      * [abi] remove commented-out code
      
      * [abi] add some docs to specs items
      
      * Update abi/src/specs.rs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update abi/src/specs.rs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update core/src/storage/collections/stash/impls.rs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update core/src/storage/collections/stash/impls.rs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [examples] remove some more commented-out code
      
      * [lang] remove outdated docs
      
      * [lang] extract fn docs impl into helper method
      
      * [lang] fix compile-error in `filter_doc_attributes`
      
      * [core] use derive feature from ink_abi
      
      * [examples] adjust shared_vec example for ink_abi
      
      * [lang] trim doc comments raw string escape sequence
      
      * [lang] adjust noop test for ink_abi
      
      * [lang] adjust flipper test for ink_abi
      
      * [lang] improve raw-string char sequence fix
      
      * [lang] adjust incrementer test for ink_abi
      
      * [lang] adjust events test for ink_abi
      
      * [lang] fix whitespace (tabs) issues in lang tests
      
      * [ci] add examples to CI
      
      * [ci] remove +nightly attribute for examples
      
      * [abi] remove instances of std usage
      
      * [core] remove instances of std usage
      
      * [examples] erc20: remove std usage in no_std environment
      
      * [core] factor out ink_abi and type-metadata and guard their use with ink-generate-abi feature
      
      * [examples] adjust examples to newest refactoring in ink_core
      
      * [cli] adjust template to ink_core refactorings
      
      * [scripts] add new script to quickly check all example smart contracts
      
      * [ci] make use of new check-examples script
      
      * [*] apply rustfmt
      
      * [scripts] adjust check-examples to no longer set test-env
      
      * [scripts] Add check-workspace script
      
      * [examples] make test-env a default feature
      
      * [cli] make test-env a default feature for the template
      
      * [ci] update CI to use the new check-workspace script
      fa6b0065
  20. 29 May, 2019 1 commit
    • Hero Bird's avatar
      Ink cleanup (#101) · d803c2e2
      Hero Bird authored
      * [ink] Fix some clippy warnings
      
      * [lang] Major clean ups in preparation of greater refactorings
      d803c2e2
  21. 24 Apr, 2019 1 commit
  22. 22 Apr, 2019 1 commit
  23. 28 Mar, 2019 3 commits
  24. 27 Mar, 2019 1 commit
  25. 26 Mar, 2019 2 commits
  26. 22 Mar, 2019 1 commit
  27. 19 Mar, 2019 2 commits
  28. 18 Mar, 2019 1 commit
  29. 14 Mar, 2019 3 commits
  30. 12 Mar, 2019 1 commit
  31. 11 Mar, 2019 2 commits