Deadbeef | 7f6150b | 2024-10-02 11:42:06 | [diff] [blame] | 1 | //@ compile-flags: -Znext-solver |
Michael Goulet | 0b5ddf3 | 2024-10-30 18:03:44 | [diff] [blame] | 2 | #![feature(const_trait_impl)] |
Dylan MacKenzie | 323ff19 | 2020-02-04 22:03:37 | [diff] [blame] | 3 | |
Deadbeef | 1bcc26a | 2022-08-28 06:27:31 | [diff] [blame] | 4 | #[const_trait] |
Dylan MacKenzie | 323ff19 | 2020-02-04 22:03:37 | [diff] [blame] | 5 | pub trait Plus { |
6 | fn plus(self, rhs: Self) -> Self; | ||||
7 | } | ||||
8 | |||||
9 | impl const Plus for i32 { | ||||
10 | fn plus(self, rhs: Self) -> Self { | ||||
11 | self + rhs | ||||
12 | } | ||||
13 | } | ||||
14 | |||||
15 | impl Plus for u32 { | ||||
16 | fn plus(self, rhs: Self) -> Self { | ||||
17 | self + rhs | ||||
18 | } | ||||
19 | } | ||||
20 | |||||
21 | pub const fn add_i32(a: i32, b: i32) -> i32 { | ||||
Dylan MacKenzie | d6d6d25 | 2020-02-05 17:35:32 | [diff] [blame] | 22 | a.plus(b) // ok |
Dylan MacKenzie | 323ff19 | 2020-02-04 22:03:37 | [diff] [blame] | 23 | } |
24 | |||||
25 | pub const fn add_u32(a: u32, b: u32) -> u32 { | ||||
26 | a.plus(b) | ||||
Deadbeef | 7f6150b | 2024-10-02 11:42:06 | [diff] [blame] | 27 | //~^ ERROR the trait bound `u32: ~const Plus` |
Dylan MacKenzie | 323ff19 | 2020-02-04 22:03:37 | [diff] [blame] | 28 | } |
29 | |||||
30 | fn main() {} |