Skip to content

Commit 36e8c11

Browse files
committed
added tests
1 parent a480ab6 commit 36e8c11

File tree

4 files changed

+84
-0
lines changed

4 files changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#![feature(const_trait_impl, min_specialization, rustc_attrs)]
2+
3+
#[rustc_specialization_trait]
4+
#[const_trait]
5+
pub trait Sup {}
6+
7+
impl const Sup for () {}
8+
9+
#[const_trait]
10+
pub trait A {
11+
fn a() -> u32;
12+
}
13+
14+
impl<T: Default> A for T {
15+
default fn a() -> u32 {
16+
2
17+
}
18+
}
19+
20+
impl<T: Default + ~const Sup> const A for T {
21+
fn a() -> u32 {
22+
3
23+
}
24+
}
25+
26+
const fn generic<T: Default>() {
27+
<T as A>::a();
28+
//~^ ERROR: the trait bound `T: ~const Sup` is not satisfied
29+
}
30+
31+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
error[E0277]: the trait bound `T: ~const Sup` is not satisfied
2+
--> $DIR/specializing-constness-2.rs:27:5
3+
|
4+
LL | <T as A>::a();
5+
| ^^^^^^^^^^^^^ the trait `~const Sup` is not implemented for `T`
6+
|
7+
note: required for `T` to implement `~const A`
8+
--> $DIR/specializing-constness-2.rs:20:37
9+
|
10+
LL | impl<T: Default + ~const Sup> const A for T {
11+
| ^ ^
12+
help: consider further restricting this bound
13+
|
14+
LL | const fn generic<T: Default + ~const Sup>() {
15+
| ++++++++++++
16+
17+
error: aborting due to previous error
18+
19+
For more information about this error, try `rustc --explain E0277`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#![feature(const_trait_impl, min_specialization, rustc_attrs)]
2+
3+
#[rustc_specialization_trait]
4+
#[const_trait]
5+
pub trait Sup {}
6+
7+
impl const Sup for () {}
8+
9+
#[const_trait]
10+
pub trait A {
11+
fn a() -> u32;
12+
}
13+
14+
impl<T: ~const Default> const A for T {
15+
default fn a() -> u32 {
16+
2
17+
}
18+
}
19+
20+
impl<T: Default + Sup> A for T { //~ ERROR: cannot specialize
21+
fn a() -> u32 {
22+
3
23+
}
24+
}
25+
26+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
error: cannot specialize on trait `Default`
2+
--> $DIR/specializing-constness.rs:20:9
3+
|
4+
LL | impl<T: Default + Sup> A for T {
5+
| ^^^^^^^
6+
7+
error: aborting due to previous error
8+

0 commit comments

Comments
 (0)