blob: 99a7949db173c862b45287a1794b5ff42a5be85b (
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
// revisions: edition2015 edition2021
// [edition2015]compile-flags: --edition=2015
// [edition2021]compile-flags: --edition=2021
#![feature(extern_types)]
#![feature(cfg_accessible)]
// Struct::unresolved - error
struct Struct {
existing: u8,
}
#[cfg_accessible(Struct::existing)] //~ ERROR not sure
const A: bool = true;
#[cfg_accessible(Struct::unresolved)] //~ ERROR not sure
const B: bool = true;
// Union::unresolved - error
struct Union {
existing: u8,
}
#[cfg_accessible(Union::existing)] //~ ERROR not sure
const A: bool = true;
#[cfg_accessible(Union::unresolved)] //~ ERROR not sure
const B: bool = true;
// Enum::unresolved - error
enum Enum {
Existing { existing: u8 },
}
#[cfg_accessible(Enum::Existing::existing)] //~ ERROR not sure
const A: bool = true;
#[cfg_accessible(Enum::Existing::unresolved)] //~ ERROR not sure
const B: bool = true;
#[cfg_accessible(Enum::unresolved)] //~ ERROR not sure
const C: bool = true;
// Trait::unresolved - false or error, depending on edition (error if you can write Trait::foo
// instead of <dyn Trait>::foo for methods like impl dyn Trait { fn foo() {} })
trait Trait {}
impl dyn Trait { fn existing() {} }
// FIXME: Should be an error for edition > 2015
#[cfg_accessible(Trait::existing)] //~ ERROR not sure
const A: bool = true;
#[cfg_accessible(Trait::unresolved)] //~ ERROR not sure
const B: bool = true;
// TypeAlias::unresolved - error
type TypeAlias = Struct;
#[cfg_accessible(TypeAlias::existing)] //~ ERROR not sure
const A: bool = true;
#[cfg_accessible(TypeAlias::unresolved)] //~ ERROR not sure
const B: bool = true;
// ForeignType::unresolved - error
extern {
type ForeignType;
}
#[cfg_accessible(ForeignType::unresolved)] //~ ERROR not sure
const A: bool = true;
// AssocType::unresolved - error
trait AssocType {
type AssocType;
}
#[cfg_accessible(AssocType::AssocType::unresolved)] //~ ERROR not sure
const A: bool = true;
// PrimitiveType::unresolved - error
#[cfg_accessible(u8::unresolved)] //~ ERROR not sure
const A: bool = true;
#[cfg_accessible(u8::is_ascii)] //~ ERROR not sure
const B: bool = true;
fn main() {}
|