| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/fail20609.d(26): Error: none of the overloads of `this` are callable using argument types `(int)` |
| fail_compilation/fail20609.d(23): Candidate is: `fail20609.Foo.this(string[] args)` |
| fail_compilation/fail20609.d(27): Error: none of the overloads of `this` are callable using argument types `(int)` |
| fail_compilation/fail20609.d(22): Candidates are: `fail20609.Foo.this(Object _param_0)` |
| fail_compilation/fail20609.d(23): `fail20609.Foo.this(string[] args)` |
| fail_compilation/fail20609.d(37): Error: none of the overloads of `this` are callable using argument types `(int)` |
| fail_compilation/fail20609.d(37): All possible candidates are marked as `deprecated` or `@disable` |
| fail_compilation/fail20609.d(43): Error: undefined identifier `deprecatedTypo_` |
| fail_compilation/fail20609.d(44): Error: undefined identifier `deprecatedTypo_`, did you mean function `deprecatedTypo`? |
| fail_compilation/fail20609.d(45): Error: undefined identifier `disabledTypo_` |
| --- |
| */ |
| |
| // Only show `this(string[])` in non-deprecated context. |
| // Show both `this(string[])` and ` this(Object)` in deprecated context. |
| struct Foo |
| { |
| @disable this(); |
| deprecated this(Object) {} |
| this(string[] args) {} |
| } |
| |
| void test1() { auto f = Foo(42); } |
| deprecated void test2() { auto f = Foo(42); } |
| |
| // Make sure we do not show a message promising candidates, |
| // then no candidates in the special case where nothing |
| // would be usable |
| struct WhoDoesThat |
| { |
| @disable this(); |
| deprecated this(Object) {} |
| } |
| void test3() { auto f = WhoDoesThat(42); } |
| |
| // Make sure we don't suggest disabled or deprecated functions |
| deprecated void deprecatedTypo () {} |
| @disable void disabledTypo () {} |
| |
| void test4 () { deprecatedTypo_("42"); } |
| deprecated void test5 () { deprecatedTypo_("42"); } |
| void test6 () { disabledTypo_("42"); } |