1. 04 Oct, 2021 1 commit
    • Robin Freyler's avatar
      Implement selector_id!, selector_bytes! and blake2x256! macros (#947) · bd4b51e3
      Robin Freyler authored
      * add selector_id! and selector_bytes! proc macros
      * implement blake2x256! macro
      * re-export blake2x256! macro from ink_lang crate
      * apply rustfmt
      * add BLAKE2b to hunspell dictionary
      * add UI tests for blake2x256! macro
      * improve span for non-literal inputs to blake2x256! macro
      * add non-literal input failure UI test to blake2x256! macro
      * improve error span for non-literal selector_{id,bytes}! macro inputs
      * rename UI test blake2x256 -> blake2x256_macro
      * rename UI test
      * add UI tests for selector_id! proc. macro
      * fix UI test
      * fix UI test expectation
      * add UI tests for seletor_bytes! macro
      * make flaky and broken codecov CI happy again ...
  2. 21 Sep, 2021 2 commits
    • Robin Freyler's avatar
      Move ink_lang_macro UI tests into macro-specific folders (#934) · 87867ef8
      Robin Freyler authored
      * move ink_lang_macro UI tests into macro-specific folders
      * fix GitLab CI formatting pass
      * migrate back to a single trybuild test case
      This is because our CI currently fails if we have multiple test cases.
    • Robin Freyler's avatar
      Check namespace argument is identifier (#931) · 41b0a1c0
      Robin Freyler authored
      * check that argument in #[ink(namespace = "argument")] is a Rust identifier
      * add UI tests for #[ink(namespace = "..")] ink! property
      # Conflicts:
      #	crates/lang/macro/tests/compile_tests.rs
      #	crates/lang/macro/tests/ui/fail/N-01-namespace-invalid-identifier.rs
      #	crates/lang/macro/tests/ui/fail/N-01-namespace-invalid-identifier.stderr
      #	crates/lang/macro/tests/ui/fail/N-02-namespace-invalid-type.rs
      #	crates/lang/macro/tests/ui/fail/N-02-namespace-invalid-type.stderr
      #	crates/lang/macro/tests/ui/fail/N-03-namespace-missing-argument.rs
      #	crates/lang/macro/tests/ui/fail/N-03-namespace-missing-argument.stderr
      * fix error message for non-identifier namespace argument
  3. 20 Sep, 2021 1 commit
    • Robin Freyler's avatar
      Make #[ink(selector = ..)] take a u32 parameter instead of a string (#928) · c9a97bbe
      Robin Freyler authored
      * make #[ink(selector = ..)] take an integer instead of a string
      Also warn about deprecation if a user still uses the old string parameter.
      * update tests for new selector int parameter
      * update contract examples for new selector int parameter
      * remove unused regex dependency from ink_lang_ir
      Also remove unnecessary regex dependency from ink_lang_codegen
      * update README for new selector int parameter
      Also update namespace parameter description.
      * update preliminary release notes
      * update spellcheck dict
  4. 06 Sep, 2021 1 commit
  5. 25 Aug, 2021 1 commit
  6. 05 Aug, 2021 1 commit
    • Michael Müller's avatar
      Run clippy with `--all-targets` (#884) · 4b909706
      Michael Müller authored
      * Add clippy flag `--all-targets`
      * Fix `redundant_closure`
      * Fix `redundant_clone`
      * Fix `clone_on_copy`
      * Fix `needless_borrow`
      * Fix `bool_assert_comparison`
      * Fix `len_zero`
      * Fix `stable_sort_primitive`
      * Forward feature
      * Allow `type_complexity`
      * Fix `unnecessary_mut_passed`
      * Fix `manual_map`
      * Fix `match_like_matches_macro`
      * Remove duplicate test
      * Fix `new_without_default`
      * Fix `match_ref_pats`
      * Allow clippy rules for  tests
      * Fix `unit_arg`
      * Apply `cargo fmt`
      * Add explanatory comments
      * Remove `--all-targets` for Wasm tests
      * Fix `or_fun_call`
      * Fix `bool_comparison`
      * Fix `needless_collect`
      * Revert "Forward feature"
      This reverts commit 472c50ed.
      * Fix `bool_assert_comparison`
      * Deactivate test because of feature issue with dev-dependencies
      * Add flag
      * Fix `unique_topics` tests
      * Allow `clippy:bool_assert_comparison`
      * Revert "Fix `bool_assert_comparison`"
      This reverts commit bceb2dc2.
      * Revert "Fix `bool_comparison`"
      This reverts commit 02960f98.
      * Fix flags positioning
      * Add comment for clarification
      * Fix comparison
      * Do not check all targets for target = wasm32
      * Adapt `check-workspace.sh` with clippy flag
      * Add clarification comment
      * Ignore test
      * Revert `CLIPPY_FLAGS` hack
      * Link ink! issue
      * Fix `assert`'s
      * Fix `assert`'s
  7. 13 Jul, 2021 1 commit
  8. 08 Jul, 2021 1 commit
  9. 02 Jul, 2021 1 commit
    • Michael Müller's avatar
      Add example usage comments to `EnvAccess` methods (#797) · da5a1247
      Michael Müller authored
      * Add example usage comments to env methods
      * Remove superfluous line
      * wip
      * Remove debug code
      * Make doc comment examples compile
      * Remove superfluous line
      * Surround with complete contract code
      * Experiment with macro to reduce code duplication
      * Revert "Experiment with macro to reduce code duplication"
      This reverts commit f7319126
      * Add complete contract code in doc tests
      * Remove unnecessary `[dev-dependencies]`
      * Improve code in doc tests
      * Fix doc tests
      * Improve code appearance
      * Add better doc test examples
      * Make `gas` be of type `u64` instead of `Balance`
      * Make `gas` be of type `u64` instead of `Balance`
      * Make `gas` be of type `u64` instead of `Balance`
      * Apply suggestions from code review
      Co-authored-by: default avatarRobin Freyler <robin.freyler@gmail.com>
      * Add simple access permission contract
      * Fix syntax
      Co-authored-by: default avatarRobin Freyler <robin.freyler@gmail.com>
  10. 17 Jun, 2021 1 commit
  11. 09 Jun, 2021 1 commit
  12. 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
  13. 25 May, 2021 1 commit
  14. 10 May, 2021 1 commit
    • Michael Müller's avatar
      Implement MVP for new off-chain testing engine (#712) · 1a19f937
      Michael Müller authored
      * Add `engine` crate
      * Add `env_types` crate
      * Adapt `env`, `lang` and `storage`
      * Adapt examples
      * Adapt CI
      * Symlink license and readme
      * Throw `TypedEncoded` out of `engine`
      * Improve Erc20
      * Bump versions to rc3
      * Fix clippy error: Manual implementation of `Option::map` (#717)
      * Implement comments
      * Fix yml
      * Improve structure
      * Add tests
      * Fix function signature
      * Get rid of `engine`s singleton
      * Revert instantiate stuff
      * Implement review comments
      * Make `Storage` non-generic
      * Improve API for emmitted events
      * Migrate to `panic_any`
      * Clean up import
      * Import `panic_any`
      * Implement comments
      * Fix param
      * Use type
      * Store balances in chain storage
      * Fix tests
      * Use individual storage per contract
      * Implement comments
  15. 01 Apr, 2021 1 commit
  16. 13 Jan, 2021 1 commit
  17. 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>
  18. 04 Jan, 2021 1 commit
  19. 02 Dec, 2020 1 commit
    • Michael Müller's avatar
      Ensure topics are unique (#594) · 64eec2c2
      Michael Müller authored
      * Ensure topics are unique
      * Remove unavailable method
      * Fix salt appending in Wasm
      * Remove salt param
      * Add missing assignment
      * Update crates/lang/src/events.rs
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      * Add suggestions
      * Remove always inline
      * Fix event hashing in examples
      * Make nightly clippy happy
      * Remove unnecessary return param
      * Do not use internal type for hash calculation
      * Hide internal type from docs
      * Expose `PrefixedValue` from ink_env::topics
      * Apply cargo fmt
      * Apply cargo fmt
      * Apply comments
      * Apply comments
      * Apply comments
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
  20. 11 Nov, 2020 1 commit
    • Michael Müller's avatar
      Make CI check format of UI tests (#534) · fe82d173
      Michael Müller authored
      * [ci] Check format of UI tests as well
      * [lang] Apply our formatting guidelines to UI tests
      * [ci] Make Gitlab happy
      * [ci] Remove superfluous space
      * [ci] Output rustfmt version
      * [ci] Tune rustfmt params
      * Remove todo's
      * Migrate erc721 ui test contract to recent example contract
      * Remove --version command used to debug
      * Apply cargo fmt
      * .gitlab-ci.yml formatting
      * Add main fn
      * Remove todo from stderr expect
      * Adapt fixtures
      * Revert "Adapt fixtures"
      This reverts commit 174c012e.
      * Adapt fixtures
  21. 04 Nov, 2020 1 commit
    • Michael Müller's avatar
      [lang] Improve invalid selector error (#561) · 0eca603f
      Michael Müller authored
      * [lang] Improve invalid selector message
      * [lang] Improve span
      * [lang] Return syn::Error instead of panicking
      * Make clippy happy
      * [lang] Reduce code dup with non_hex_err
      * [lang] Rename fn
      * [lang] Fix err functions
      * [lang] Add comments
      * [lang] Remove unnecessary lifetime
  22. 08 Oct, 2020 2 commits
    • 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
    • Hero Bird's avatar
      Implement event topic code generation (#510) · 6f701e50
      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
  23. 01 Oct, 2020 1 commit
    • Hero Bird's avatar
      Split ink_core crate into ink_env and ink_storage (#500) · cfe52e98
      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)
  24. 30 Sep, 2020 1 commit
  25. 29 Sep, 2020 1 commit
    • 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.