about summary refs log tree commit diff
path: root/tests/ui/deriving/deriving-from-wrong-target.rs
blob: d0cab937b5d49401379e8ca4c60e258664bb3307 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//@ check-fail

#![feature(derive_from)]
#![allow(dead_code)]

use std::from::From;

#[derive(From)]
//~^ ERROR `#[derive(From)]` used on a struct with no fields
struct S1;

#[derive(From)]
//~^ ERROR `#[derive(From)]` used on a struct with no fields
struct S2 {}

#[derive(From)]
//~^ ERROR `#[derive(From)]` used on a struct with multiple fields
struct S3(u32, bool);

#[derive(From)]
//~^ ERROR `#[derive(From)]` used on a struct with multiple fields
struct S4 {
    a: u32,
    b: bool,
}

#[derive(From)]
//~^ ERROR `#[derive(From)]` used on an enum
enum E1 {}

#[derive(From)]
struct SUnsizedField<T: ?Sized> {
    last: T,
    //~^ ERROR the size for values of type `T` cannot be known at compilation time [E0277]
}

fn main() {}