blob: a17479c2a5c25283eed07ad09d97ff5c7d03d611 (
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
/*
TEST_OUTPUT:
---
fail_compilation/diag1730.d(51): Error: mutable method `diag1730.S.func` is not callable using a `inout` object
fail_compilation/diag1730.d(43): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(53): Error: `immutable` method `diag1730.S.iFunc` is not callable using a `inout` object
fail_compilation/diag1730.d(54): Error: `shared` mutable method `diag1730.S.sFunc` is not callable using a non-shared `inout` object
fail_compilation/diag1730.d(46): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(55): Error: `shared` `const` method `diag1730.S.scFunc` is not callable using a non-shared `inout` object
fail_compilation/diag1730.d(70): Error: `immutable` method `diag1730.S.iFunc` is not callable using a mutable object
fail_compilation/diag1730.d(71): Error: `shared` method `diag1730.S.sFunc` is not callable using a non-shared object
fail_compilation/diag1730.d(72): Error: `shared` `const` method `diag1730.S.scFunc` is not callable using a non-shared mutable object
fail_compilation/diag1730.d(75): Error: mutable method `diag1730.S.func` is not callable using a `const` object
fail_compilation/diag1730.d(43): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(77): Error: `immutable` method `diag1730.S.iFunc` is not callable using a `const` object
fail_compilation/diag1730.d(78): Error: `shared` mutable method `diag1730.S.sFunc` is not callable using a non-shared `const` object
fail_compilation/diag1730.d(46): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(79): Error: `shared` `const` method `diag1730.S.scFunc` is not callable using a non-shared `const` object
fail_compilation/diag1730.d(82): Error: mutable method `diag1730.S.func` is not callable using a `immutable` object
fail_compilation/diag1730.d(43): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(85): Error: `shared` mutable method `diag1730.S.sFunc` is not callable using a `immutable` object
fail_compilation/diag1730.d(46): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(89): Error: non-shared method `diag1730.S.func` is not callable using a `shared` object
fail_compilation/diag1730.d(43): Consider adding `shared` here
fail_compilation/diag1730.d(90): Error: non-shared `const` method `diag1730.S.cFunc` is not callable using a `shared` mutable object
fail_compilation/diag1730.d(44): Consider adding `shared` here
fail_compilation/diag1730.d(91): Error: `immutable` method `diag1730.S.iFunc` is not callable using a `shared` mutable object
fail_compilation/diag1730.d(94): Error: non-shared `inout` method `diag1730.S.wFunc` is not callable using a `shared` mutable object
fail_compilation/diag1730.d(48): Consider adding `shared` here
fail_compilation/diag1730.d(96): Error: non-shared mutable method `diag1730.S.func` is not callable using a `shared` `const` object
fail_compilation/diag1730.d(43): Consider adding `shared` here
fail_compilation/diag1730.d(97): Error: non-shared `const` method `diag1730.S.cFunc` is not callable using a `shared` `const` object
fail_compilation/diag1730.d(44): Consider adding `shared` here
fail_compilation/diag1730.d(98): Error: `immutable` method `diag1730.S.iFunc` is not callable using a `shared` `const` object
fail_compilation/diag1730.d(99): Error: `shared` mutable method `diag1730.S.sFunc` is not callable using a `shared` `const` object
fail_compilation/diag1730.d(46): Consider adding `const` or `inout` here
fail_compilation/diag1730.d(101): Error: non-shared `inout` method `diag1730.S.wFunc` is not callable using a `shared` `const` object
fail_compilation/diag1730.d(48): Consider adding `shared` here
---
*/
struct S
{
void func() { }
void cFunc() const { }
void iFunc() immutable { }
void sFunc() shared { }
void scFunc() shared const { }
void wFunc() inout { }
static void test(inout(S) s)
{
s.func(); // ng
s.cFunc();
s.iFunc(); // ng
s.sFunc(); // ng
s.scFunc(); // ng
s.wFunc();
}
}
void main()
{
S obj;
const(S) cObj;
immutable(S) iObj;
shared(S) sObj;
shared(const(S)) scObj;
obj.func();
obj.cFunc();
obj.iFunc(); // ng
obj.sFunc(); // ng
obj.scFunc(); // ng
obj.wFunc();
cObj.func(); // ng
cObj.cFunc();
cObj.iFunc(); // ng
cObj.sFunc(); // ng
cObj.scFunc(); // ng
cObj.wFunc();
iObj.func(); // ng
iObj.cFunc();
iObj.iFunc();
iObj.sFunc(); // ng
iObj.scFunc();
iObj.wFunc();
sObj.func(); // ng
sObj.cFunc(); // ng
sObj.iFunc(); // ng
sObj.sFunc();
sObj.scFunc();
sObj.wFunc(); // ng
scObj.func(); // ng
scObj.cFunc(); // ng
scObj.iFunc(); // ng
scObj.sFunc(); // ng
scObj.scFunc();
scObj.wFunc(); // ng
}
|