| /* |
| 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 |
| } |