Skip to content

Commit a185f93

Browse files
committed
Added workaround trait for compiler bug
1 parent 4fa5b54 commit a185f93

File tree

3 files changed

+43
-10
lines changed

3 files changed

+43
-10
lines changed

core/src/da_block.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#[cfg(feature = "std")]
2121
use std::fmt;
2222

23-
use crate::traits::{ExtendedBlock, ExtendedHeader};
23+
use crate::traits::{DaHeaderProvider, ExtendedBlock, ExtendedHeader};
2424
use codec::{Codec, Decode, Encode};
2525
#[cfg(feature = "serde")]
2626
use serde::{Deserialize, Serialize};
@@ -146,5 +146,24 @@ where
146146
>,
147147
Extrinsic: Member + Codec + traits::Extrinsic + MaybeSerializeDeserialize,
148148
{
149-
type Header = Header;
149+
type DaHeader = Header;
150+
}
151+
152+
impl<Header, Extrinsic, Extension>
153+
DaHeaderProvider<
154+
<Header as sp_runtime::traits::Header>::Number,
155+
<Header as sp_runtime::traits::Header>::Hash,
156+
sp_runtime::Digest,
157+
Extension,
158+
> for DaBlock<Header, Extrinsic>
159+
where
160+
Header: HeaderT
161+
+ ExtendedHeader<
162+
<Header as sp_runtime::traits::Header>::Number,
163+
<Header as sp_runtime::traits::Header>::Hash,
164+
sp_runtime::Digest,
165+
Extension,
166+
>,
167+
{
168+
type DaHeader = Header;
150169
}

core/src/traits.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use codec::{Codec, Decode};
2-
use sp_arithmetic::traits::AtLeast32BitUnsigned;
3-
use sp_arithmetic::traits::Saturating;
2+
use sp_arithmetic::traits::{AtLeast32BitUnsigned, Saturating};
43
use sp_core::U256;
54
use sp_std::{convert::TryFrom, fmt::Debug, hash::Hash as StdHash};
65

@@ -10,7 +9,9 @@ pub use get_app_id::*;
109
pub mod extended_header;
1110
pub use extended_header::*;
1211

12+
#[cfg(feature = "runtime")]
1313
pub mod extended_block;
14+
#[cfg(feature = "runtime")]
1415
pub use extended_block::*;
1516

1617
/// Header block number trait.

core/src/traits/extended_block.rs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,32 @@
1-
#[cfg(feature = "runtime")]
21
use crate::traits::ExtendedHeader;
3-
#[cfg(feature = "runtime")]
42
use sp_runtime::{
53
traits::{Block, Header},
64
Digest,
75
};
86

9-
/// Extended block trait that extends Block to include ExtendedHeader in the header
10-
#[cfg(feature = "runtime")]
11-
pub trait ExtendedBlock<Extension>: Block {
12-
type Header: Header<Hash = Self::Hash>
7+
/// Extended Block trait that extends substrate primitive Block to include ExtendedHeader in the header
8+
pub trait ExtendedBlock<Extension>:
9+
Block
10+
+ DaHeaderProvider<
11+
<<Self as Block>::Header as Header>::Number,
12+
<<Self as Block>::Header as Header>::Hash,
13+
Digest,
14+
Extension,
15+
DaHeader = <Self as ExtendedBlock<Extension>>::DaHeader,
16+
>
17+
{
18+
type DaHeader: Header<Hash = Self::Hash>
1319
+ ExtendedHeader<
1420
<<Self as Block>::Header as Header>::Number,
1521
<<Self as Block>::Header as Header>::Hash,
1622
Digest,
1723
Extension,
1824
>;
1925
}
26+
27+
// Note: This is a workaround for a compiler bug (https://github.com/rust-lang/rust/issues/96634)
28+
// and should be removed when the compiler bug is fixed.
29+
pub trait DaHeaderProvider<Number, Hash, Digest, Extension> {
30+
/// DaHeader type.
31+
type DaHeader: ExtendedHeader<Number, Hash, Digest, Extension>;
32+
}

0 commit comments

Comments
 (0)