- 27 Oct, 2020 7 commits
-
-
Michael Müller authored
This reverts commit f581caae.
-
Michael Müller authored
* Revert me: Make fuzz test fail * Revert me: Do not run fuzz tests for codecov
-
Michael Müller authored
-
Michael Müller authored
-
Michael Müller authored
-
Michael Müller authored
* Prefix fuzz tests * Fuzz extensively after master merge + create issue on failure * Do not fuzz on regular test runs * Migrate deprecated 'only' to 'rules' * Indent correctly * Fuzz each crate separately * Add feature ink-fuzz-tests to crates which are missing it * Increase QUICKCHECK_TESTS to 50k * Set timeout to 1h * Improve issue title + body * Revert "Set timeout to 1h" This reverts commit 5888abaf. * Revert "Add feature ink-fuzz-tests to crates which are missing it" This reverts commit e0ece29e. * Fuzz only crates which have the ink-fuzz-tests feature * Indent consistently with two spaces * Make GitLab CI linter happy * Create issue when at least one test fails
-
Michael Müller authored
-
- 26 Oct, 2020 1 commit
-
-
Michael Müller authored
* Fix typo * Make minimum_balance docs clearer * Fix transfer() docs
-
- 23 Oct, 2020 1 commit
-
-
Michael Müller authored
* [examples] Add missing accumulator/std * Fix check-examples.sh * Fix check-workspaces.sh * Line up results * Complete crates * Update scripts/check-examples.sh Co-authored-by:
Hero Bird <robin.freyler@gmail.com> * Introduce differentiation purely_std_crate/also_wasm_crate * Include crates lang/codegen and metadata in CI testing Co-authored-by:
Hero Bird <robin.freyler@gmail.com>
-
- 22 Oct, 2020 3 commits
-
-
Robin Freyler authored
-
Hero Bird authored
* [releases] add release notes for ink! 3.0-rc2 * [*] bump crate versions to ink! 3.0-rc2 * [releases] add missing ink! 3.0-rc2 release note
-
Hero Bird authored
* [benches] fix lazy benchmarks * [*] fix Cargo.toml documentation links * [readme] show CI status of master branch always * [readme] misc improvements * [storage] make re-export of LazyHashMap inline * [releases] add notes about ink_core split * [allocator] add some crate level docs * [storage] impl scale_info::TypeInfo for ink_storage::alloc::Box * [metadata] improve docs slightly * [storage] re-introduce StorageLayout impl for storage::Box
-
- 21 Oct, 2020 6 commits
-
-
Michael Müller authored
* [chores] Fix typo entitiy ➜ entity * [storage] Extract push_pull_works_for_primitive macro * [storage] Add tests for Tuple * [storage] Add tests for Option, Result, Box * [storage] Add tests for Array * [storage] Add fuzz tests for primitives * [chores] Fix typo * [storage] Add fuzz test for HashMap::defrag * [storage] Improve unit tests * [storage] Clarify TestResult::discard
-
Hero Bird authored
* [storage] make Lazy::laze constructor crate private * [storage] fix Lazy SpreadLayout impl behaving incorrectly when not used * [storage] remove redundant state replacement in StorageEntry::push_packed_root * [storage] add regression test for the fixed bug * [storage] clean up code between LazyCell and StorageEntry * [storage] apply rustfmt
-
Michael Müller authored
* [chores] Fix typo * [chores] Update list of topics * [chores] ink ➜ ink! * [chores] Update Riot channel link
-
Michael Müller authored
* BinaryHeap::new() * Failing FromIterator test * Dumb push impl * Dumb peek impl * Naive push implementation * Copy in some reference impls for inspiration * WIP: use storage2::Vec and implement pop * Fix sift_up * Fix sift_down * Test with heap from slice * Add pass through clear impl * Add storage trait impls * Add binary_heap bench, start experimentation # Conflicts: # core/Cargo.toml * Add tests for push/pull from storage * Get basic bench working for pushing largest value * Fmt * Prevent storage from being cleared in test env * iter batched * Make inline setup to test consistency * Revert to iter_batch tests * Add populated cache benches * Fmt * Factor out bench push * Refactor benchmark loop on push * Configure warm-up and measurement times to improve consistency * Remove redundant test * Refactor push benches * Refactor push benches again * Add Pop benchmark * Fmt * Add some comments to the benchmarks * Remove some todos * Use iter_batched_ref * Fix pop benchmark name * Add test for worst case O(log n) push * Fmt * Add push test * Add peek and pop test * Fix up sift comments and log tests * Comments * Add Reverse wrapper type for min heaps * Fmt * Peek mut * Fmt * Add empty tests * Check complexity of pushing smallest value * Test drop clears cells * Fix stable build * Basic property test * Fix wasm build * Fmt * Derive Default, PartialEq, Eq * Add property test to feature * Fix doc links * Fmt * Remove commented out println * Avoid potential false positive * Add punctuation * Comments * Fmt * [core] Fix comment * [core] Remove unnecessary println * [core] Store two children in one Cell * [core] Add group_count() for fuzz tests * [core] Apply cargo fmt * [core] Fix imports for std env * [core] Improve comments describing read/write ops * [core] Improve feature switch * [core] Improve code readability * [core] Apply general comments * [core] Add group.exists() and make more use of Group API * [core] Major renaming * [core] Implement AlwaysPacked for Children * [core] Improve comments and panic messages * [core] Improve comments * [core] Improve comments * [core] Improve comments * [core] Improve comments * [core] Improve comments * [core] Improve comments * [core] Migrate children.exists() to children.is_empty() * [core] Fix children.is_empty() * [core] Bring back PackedLayout impl * Move binary_heap to crates * Make it compile * Fix up doc test and benches * Fmt * Fix license headers * [core] Improve Children API * [core] Use super instead of crate import * [core] Fix comments * [core] Rename Elements to ChildrenVector * [core] Fix comments * [core] Fix footprint * [core] Improve count() * [core] Move iterator to correct file * [core] Restrain visibility * [core] Fix comments * [core] Fix imports * [core] Rename ChildrenVector to ChildrenVec * [core] Improve imports * [storage] Use crate import instead of super * [storage] Remove some pub(super) * [storage] Add #[inline] * [storage] Rename push_to to insert * [storage] Add rational for child_count * [storage] Apply cargo fmt * [core] Give me back my blank line Co-authored-by:
Andrew Jones <ascjones@gmail.com>
-
Andrew Jones authored
* BinaryHeap::new() * Failing FromIterator test * Dumb push impl * Dumb peek impl * Naive push implementation * Copy in some reference impls for inspiration * WIP: use storage2::Vec and implement pop * Fix sift_up * Fix sift_down * Test with heap from slice * Add pass through clear impl * Add storage trait impls * Add binary_heap bench, start experimentation # Conflicts: # core/Cargo.toml * Add tests for push/pull from storage * Get basic bench working for pushing largest value * Fmt * Prevent storage from being cleared in test env * iter batched * Make inline setup to test consistency * Revert to iter_batch tests * Add populated cache benches * Fmt * Factor out bench push * Refactor benchmark loop on push * Configure warm-up and measurement times to improve consistency * Remove redundant test * Refactor push benches * Refactor push benches again * Add Pop benchmark * Fmt * Add some comments to the benchmarks * Remove some todos * Use iter_batched_ref * Fix pop benchmark name * Add test for worst case O(log n) push * Fmt * Add push test * Add peek and pop test * Fix up sift comments and log tests * Comments * Add Reverse wrapper type for min heaps * Fmt * Peek mut * Fmt * Add empty tests * Check complexity of pushing smallest value * Test drop clears cells * Fix stable build * Basic property test * Fix wasm build * Fmt * Derive Default, PartialEq, Eq * Add property test to feature * Fix doc links * Fmt * Remove commented out println * Avoid potential false positive * Add punctuation * Comments * Fmt * Move binary_heap to crates * Make it compile * Fix up doc test and benches * Fmt * Fix license headers
-
Michael Müller authored
* [examples] Rustify return types * [examples] Add trait-erc20 Example * [examples] Improve readability * [examples] Remove unneeded export * [examples] Move definitions into module * [examples] Commentify * [examples] Improve comment * [examples] Improve comment * [examples] Fix typo * [examples] Add Error::InsufficientAllowance * [examples] Add Errors section in doc comments * [examples] Make allowance_of_or_zero and balance_of_or_zero inplace * [examples] Ensure allowance is only updated if transfer worked * [examples] Apply cargo fmt * [examples] Add test which would have catched allowance changing on failed transfer * [examples] Apply cargo fmt * [examples] Remove unnecessary assert for ()
-
- 20 Oct, 2020 1 commit
-
-
Michael Müller authored
-
- 16 Oct, 2020 1 commit
-
-
Andrew Jones authored
* Add 0x prefix if missing * Fmt
-
- 09 Oct, 2020 6 commits
-
-
Robin Freyler authored
-
Robin Freyler authored
-
Hero Bird authored
* [*] normalize authors for all ink! crates * [lang, storage] add extern crate proc_macro This is somehow needed for cargo publishing.
-
Hero Bird authored
* [storage/derive] add missing info for publish * [prelude] cargo publish cannot handle non-default lib.rs paths ... * [primitives] add path for finding benchmarks Needed by cargo unleash.
-
Denis_P authored
* debug (CI): putting reports in artifacts [skip ci] * debug (CI): remove unneded jobs, revert lated * change (doc): fix artifacts * change (CI): CARGO_HOME goes to branch level to avoid collapses; pre-population for it * change (CI): small fix to codecov * change (CI): DRY prepop script * change (CI): DRY prepop script * change (CI): docstring for pre-pop cache script * change (CI): no cache for codecov report
-
Hero Bird authored
* [chores] add release notes for ink! 3.0 * [releases] 3.0: add note about trait definitions and implementations * [*] bump all ink! crate versions to 3.0.0-rc1 * [releases] fix elipsis * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] add note to lazy * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] add missing release notes for ink! 2.1 * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] fix typo, improve sentences Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [releases] improve payable docs * [*] update crate descriptions Co-authored-by:
Andrew Jones <ascjones@gmail.com>
-
- 08 Oct, 2020 3 commits
-
-
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
-
Andrew Jones authored
-
Hero Bird authored
* [env] remove unnecessary copy of no longer used mod.rs * [env, lang] make crates compile again under newest Rust nightly * [env] on-chain: enhance ScopedBuffer Add append_encoded and take_appended methods. * [env] remove old Topics trait * [env] add new Topics infrastructure * [env] implement new Topics infrastructure for on/off chain environments * [env] remove dummy event * [env] make env::topics::state mod externally accessible It stays hidden in docs. * [lang/codegen] generate proper Topics impls for ink! events * [env] apply rustfmt * [lang/codegen] fix codegen for events without topics * [lang/macro] fix UI test * [env] off-chain: clean-up slightly * [examples] ERC-20: improve tests for event topics * [env] remove commented-out line * [lang/codegen] include event signature into topics This is the same as it is done for non-anonymous Solidity events. The signature of an ink! event is: ContractName::EventName. E.g. for ERC-20's Transfer event it is: Erc20::Transfer * [examples] ERC-20: adjust test for changes with event topics * [lang/ir] add support for anonymous events * [lang/codegen] add codegen for anonymous events * [lang/ir] apply rustfmt * [lang/macro] comment out failing unit test Fails due to rustc version mismatch and some recent error display change. * [examples] apply rustfmt
-
- 07 Oct, 2020 1 commit
-
-
Andrew Jones authored
* Make public fields for InkProject and specs * Make layout fields public * Use scale-info from branch * Add Deserialize derives, use ReadOnlyRegistry * Deserialize contract metadata specs * Deserialize layout2 specs * WIP decode hex * Use impl_serde crate for hex byte string serde * Test for selector deserialization * Fix up custom deserialization * Export selector and add to_vec impl * Fmt * Fix up spec segments IntoCompact * Make name public * Update to latest scale-info master * Replace pub fields with getters * Replace pub fields with getters in spec * Fix search replace error with any::TypeId * Use scale-info 0.4 * Fmt * Remove commented out getter * Fix up other scale-info deps * Clippy * Fix up message and constructor spec builder method names * Serialize empty bytes vec without 0x prefix
-
- 05 Oct, 2020 1 commit
-
-
Hero Bird authored
* [lang] add doc to ink_lang::test proc. macro * [lang] add doc to ink_lang::trait_definition proc. macro * [examples] add whitespace to separate trait methods * [env] make it possible to use a primitive [u8; 32] as hash type * [lang] add doc-comment to #[ink::contract] proc. macro * [lang] add additional notes to #[ink::contract] docs * [lang] document #[ink::contract] selector controlling * [lang] add documentation for #[ink::contract] event definition and emitting * [lang] add doc section explaining env interaction via #[ink::contract] Explains Self::env() and self.env() interations. * [ci] add doc generation for ink_lang_ir and ink_lang_codegen * [lang/macro] fix docs Co-authored-by:
Michael Müller <mich@elmueller.net> * [lang/macro] fix typo Co-authored-by:
Michael Müller <mich@elmueller.net> * [ink/macro] fix typo Co-authored-by:
Michael Müller <mich@elmueller.net> * [lang/macro] improve docs Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/macro] fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/macro] fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/macro] fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [env] implement Clear for Hash in terms of Clear for [u8; 32] * [storage] apply better formatting * [storage] make clearer that we use DynamicAllocator in test * [lang/macro] improve docs Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/macro] fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> * [lang/macro] add note about payable constructors * [lang/macro] fix payable messages example * [lang/macro] add note about disabling dynamic storage allocator * [lang/macro] improve section about compile_as_dependency * [lang/macro] clear up EnvTypes SCALE encoding * [lang/macro] fix docs * [lang/macro] fix typo Co-authored-by:
Andrew Jones <ascjones@gmail.com> Co-authored-by:
Michael Müller <mich@elmueller.net> Co-authored-by:
Andrew Jones <ascjones@gmail.com>
-
- 02 Oct, 2020 1 commit
-
-
Hero Bird authored
* [env] remove crate-level re-exports for the hash module * [env] rename ink_env::println -> debug_println This makes the usage intent clearer. * [lang] remove deprecated method * [lang] hide all definitions that are only needed for codegen purposes * [lang] remove False, move True * [lang] remove unnecessary where bounds * [lang] add EnvAccess forwarding for built-in crypto hashes * [README] add ink_lang doc link * [env] fix on-chain compilation * [lang] apply clippy suggestion
-
- 01 Oct, 2020 3 commits
-
-
Hero Bird authored
* [*] split ink_core into ink_env and ink_storage The workspace does not yet compile! * [env] make compile again * [env] fix doc tests * [storage] make crate compile again * [env] fix some doc comment links * [README] flipper example: remove unused import * [storage/derive] fix compilation of generated code * [README] add ink_storage and ink_env doc links * [env, primitives, storage] fix docs * [lang] make compile again * [lang/codegen] use absolute paths in #[ink::test] proc. macro * [examples] make compile again * [*] apply rustfmt * [env] remove unneeded dependencies * [storage] remove all unneeded dependencies and crate features * [*] update outdated dependencies * [env, lang] remove unused dependencies * [*] fix comments * [*] fix some intra doc links * [ci] adjust to split ink_env and ink_storage crates * [ci] forgot to handle split ink_env and ink_storage in docs * [storage] fix fuzz tests * [examples] apply rustfmt * [examples] apply rustfmt (ERC-721)
-
Denis_P authored
-
Hero Bird authored
* [core] add new crypto hash API * [core] move new crypto hash definitions to dedicated module * [core] integrate the new env::hash module into core::storage module * [core] fix LayoutCryptoHasher impls * [core] add doc test to hash_encoded * [core] fix minor things in lazy hash map * [core] apply rustfmt * [core] remove old crypto hash module * [core] base DynamicAllocation::key implementation on new hash API * [core] remove old hash impls from on-chain env * [core] make DynamicAllocation::key impl work on Wasm32 target * [core] remove the entire deprecated ink_core::hash module
-
- 30 Sep, 2020 2 commits
-
-
Denis_P authored
change (CI): `CARGO_HOME`, `RUST_INCREMENTAL`, no artifacts for `needs`, `only` changed to `rules` (#495) * change (CI): CARGO_HOME, RUST_INCREMENTAL, no artifacts for needs, only -> rules * change (CI): some order
-
Hero Bird authored
* [chores] update README to new ink! 3.0 syntax * [*] update all broken LICENSE and README.md symbolic links * [*] update all license headers Also be more strict about their dates: 2018-2020 for all
-
- 29 Sep, 2020 2 commits
-
-
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.
-
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
-
- 28 Sep, 2020 1 commit
-
-
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
-