| // REQUIRED_ARGS: -de |
| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/depmsg.d(40): Deprecation: struct depmsg.main.Inner.A is deprecated - With message! |
| fail_compilation/depmsg.d(40): Deprecation: struct depmsg.main.Inner.A is deprecated - With message! |
| fail_compilation/depmsg.d(41): Deprecation: class depmsg.main.Inner.B is deprecated - With message! |
| fail_compilation/depmsg.d(41): Deprecation: class depmsg.main.Inner.B is deprecated - With message! |
| fail_compilation/depmsg.d(42): Deprecation: interface depmsg.main.Inner.C is deprecated - With message! |
| fail_compilation/depmsg.d(42): Deprecation: interface depmsg.main.Inner.C is deprecated - With message! |
| fail_compilation/depmsg.d(43): Deprecation: union depmsg.main.Inner.D is deprecated - With message! |
| fail_compilation/depmsg.d(43): Deprecation: union depmsg.main.Inner.D is deprecated - With message! |
| fail_compilation/depmsg.d(44): Deprecation: enum depmsg.main.Inner.E is deprecated - With message! |
| fail_compilation/depmsg.d(44): Deprecation: enum depmsg.main.Inner.E is deprecated - With message! |
| fail_compilation/depmsg.d(46): Deprecation: alias depmsg.main.Inner.G is deprecated - With message! |
| fail_compilation/depmsg.d(47): Deprecation: variable depmsg.main.Inner.H is deprecated - With message! |
| fail_compilation/depmsg.d(48): Deprecation: class depmsg.main.Inner.I!().I is deprecated - With message! |
| --- |
| */ |
| |
| void main() |
| { |
| class Inner |
| { |
| deprecated("With message!") |
| { |
| struct A { } |
| class B { } |
| interface C { } |
| union D { } |
| enum E { e }; |
| //typedef int F; |
| alias int G; |
| static int H; |
| template I() { class I {} } |
| } |
| } |
| with(Inner) |
| { |
| A a; |
| B b; |
| C c; |
| D d; |
| E e; |
| //F f; |
| G g; |
| auto h = H; |
| I!() i; |
| } |
| } |
| |
| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/depmsg.d(94): Deprecation: function depmsg.test12954.Foo.bar1 is deprecated - [C] Use Foo.bar42 instead |
| fail_compilation/depmsg.d(95): Deprecation: function depmsg.test12954.Foo.bar2 is deprecated - [E] Use Foo.bar42 instead |
| fail_compilation/depmsg.d(96): Deprecation: function depmsg.test12954.Foo.bar3 is deprecated - [S] Use Foo.bar42 instead |
| fail_compilation/depmsg.d(97): Deprecation: function depmsg.test12954.Foo.bar4 is deprecated - [F] Use Foo.bar42 instead |
| fail_compilation/depmsg.d(98): Deprecation: variable depmsg.test12954.Foo.v2 is deprecated - Forward reference |
| fail_compilation/depmsg.d(105): Deprecation: class depmsg.test12954.Obsolete is deprecated |
| fail_compilation/depmsg.d(105): Deprecation: function depmsg.test12954.Obsolete.obs is deprecated - Function is obsolete |
| --- |
| */ |
| void test12954() |
| { |
| struct Foo |
| { |
| enum DeprecatedReasonEnum = "[E] Use Foo.bar42 instead"; |
| static const DeprecatedReasonStatic = "[S] Use Foo.bar42 instead"; |
| static immutable DeprecatedReasonFunc = reason("Foo.bar42"); |
| |
| static string reason (string name) |
| { |
| return "[F] Use " ~ name ~ " instead"; |
| } |
| |
| deprecated("[C] Use " ~ `Foo.bar42 instead`) |
| void bar1 () {} |
| |
| deprecated(DeprecatedReasonEnum) |
| void bar2 () {} |
| |
| deprecated(DeprecatedReasonStatic) |
| void bar3 () {} |
| |
| deprecated(DeprecatedReasonFunc) |
| void bar4 () {} |
| |
| deprecated(Forward ~ Reference) int v2 = 2; |
| enum Forward = "Forward ", Reference = "reference"; |
| } |
| |
| Foo f; |
| f.bar1; |
| f.bar2; |
| f.bar3; |
| f.bar4; |
| assert(f.v2 == 2); |
| |
| deprecated class Obsolete |
| { |
| deprecated("Function is obsolete") void obs() {} |
| } |
| |
| (new Obsolete).obs(); |
| } |