Unverified Commit ff723b17 authored by Andrew Jones's avatar Andrew Jones Committed by GitHub
Browse files

Update to scale-info `1.0`, introduce metadata format versioning (#845)



* Bump scale-info requirement to 0.9

* Update manual TypeInfo impls

* Use decode feature of scale-info

* scale-info 1.0

* Fix tests, 0 indexing on type registry

* Update some missing examples

* TMP: use ink rc5 for compat with cargo-contract

* Update RELEASES.md

* Bump versions back to 1.0

* Introduce versioning of ink metadata format

* Update RELEASES.md
Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>

* Update crates/metadata/src/lib.rs
Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>

* Clippy: allow large enum variant

* [storage] Allow one variant enum to derive SpreadLayout (#942)

* [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: Hero Bird's avatarRobin Freyler <robbepop@web.de>

* cargo fmt
Co-authored-by: Hero Bird's avatarRobin Freyler <robbepop@web.de>

* CI: remove gcda files from cache (#943)

* Update pretty_assertions requirement from 0.7.1 to 1.0.0 (#944)

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](https://github.com/colin-kiegel/rust-pretty-assertions/compare/v0.7.1...v1.0.0

)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
...
Signed-off-by: default avatardependabot[bot] <support@github.com>
Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add 'versioning' to spellcheck dict
Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
Co-authored-by: default avatartash-2s <81064017+tash-2s@users.noreply.github.com>
Co-authored-by: Hero Bird's avatarRobin Freyler <robbepop@web.de>
Co-authored-by: Denis_P's avatarDenis Pisarev <denis.pisarev@parity.io>
Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
parent 93d22fb3
Pipeline #162015 passed with stages
in 49 minutes and 51 seconds