Update to scale-info 1.0, introduce metadata format versioning#845
Update to scale-info 1.0, introduce metadata format versioning#845
1.0, introduce metadata format versioning#845Conversation
cmichi
left a comment
There was a problem hiding this comment.
LGTM!
I just want to wait with the merge until we have our CI running again everywhere. Otherwise it will become more hairy to sort out where a failure goes back to.
The CI is currently failing because of a number of issues: we changed our repository setup and there are some follow-ups to be done in GitLab (see the issues I created in the ci_cd repo), but also because I yesterday found WebAssembly/binaryen#4148.
|
Cool feel free to merge this when ready then 👍 |
|
Ah could you add the change to |
Codecov Report
@@ Coverage Diff @@
## master #845 +/- ##
==========================================
+ Coverage 84.17% 84.61% +0.44%
==========================================
Files 172 172
Lines 7924 7852 -72
==========================================
- Hits 6670 6644 -26
+ Misses 1254 1208 -46
Continue to review full report at Codecov.
|
|
Note that the |
|
Can we merge this now that all tests are passing and we have approvals? |
|
This PR is blocked by https://github.com/polkadot-js/apps/issues/6167. |
1.01.0, introduce metadata format versioning
Co-authored-by: Michael Müller <michi@parity.io>
Co-authored-by: Michael Müller <michi@parity.io>
…pgrade-scale-info
* [storage] Allow one variant enum to derive SpreadLayout
I have an enum that has only one variant, and I want to store the enum value in the storage. I might add new variants later in development, so the enum is not useless.
The current implementation doesn't allow to derive the `SpreadLayout` trait for one variant enums, and I fixed it on this PR.
# Sample code
```rust
#![cfg_attr(not(feature = "std"), no_std)]
use ink_lang as ink;
#[derive(
Copy,
Clone,
scale::Encode,
scale::Decode,
ink_storage::traits::SpreadLayout,
ink_storage::traits::PackedLayout,
)]
#[cfg_attr(
feature = "std",
derive(scale_info::TypeInfo, ink_storage::traits::StorageLayout)
)]
pub enum MyEnum {
A,
}
#[ink::contract]
mod enum_test {
use super::MyEnum;
#[ink(storage)]
pub struct EnumTest {
value: MyEnum,
}
impl EnumTest {
#[ink(constructor)]
pub fn new() -> Self {
Self { value: MyEnum::A }
}
#[ink(message)]
pub fn get(&self) -> MyEnum {
self.value
}
}
}
```
Without this change, I get this error.
```
$ cargo +nightly contract build
[1/5] Building cargo project
Updating crates.io index
Compiling enum_test v0.1.0 (/private/var/folders/zn/l2f569z56vnghtt524x1mv6w0000gn/T/cargo-contract_FM50JF)
error: proc-macro derive panicked
--> /snip/enum_test/lib.rs:10:5
|
10 | ink_storage::traits::SpreadLayout,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: message: can only operate on enums
```
* Update crates/storage/derive/src/spread_layout.rs
Co-authored-by: Robin Freyler <robbepop@web.de>
* cargo fmt
Co-authored-by: Robin Freyler <robbepop@web.de>
Updates the requirements on [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions) to permit the latest version. - [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases) - [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md) - [Commits](rust-pretty-assertions/rust-pretty-assertions@v0.7.1...v1.0.0) --- updated-dependencies: - dependency-name: pretty_assertions dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Use scale-info
1.0everywhere.Introduces metadata versioning as specified in #941.
Companion
cargo-contractPR: use-ink/cargo-contract#342todo
cargo-contractpolkadot-js/apiis updated to handle the new metadata format for Canvas UI and polkadot.js/appsSee polkadot-js/api#3687 for polkadot.js and polkadot-js/api#3759 for UI compat progress.