d: Merge upstream dmd, druntime 26f049fb26, phobos 330d6a4fd.
[official-gcc.git] / gcc / testsuite / gdc.test / compilable / deprecated_override.d
blobc9da34dbfa73d549bc768cb559ad43c6ba441b07
1 // https://issues.dlang.org/show_bug.cgi?id=22668
3 // Overrides with same deprecated'ness are allowed
5 class SameParent
7 deprecated void foo() {}
8 void foo(int) {}
10 void bar(int) {}
11 deprecated void bar() {}
14 class SameChild : SameParent
16 deprecated override void foo() {}
17 override void foo(int) {}
19 override void bar(int) {}
20 deprecated override void bar() {}
23 /**
24 Only the parent declaration is deprecated
26 TEST_OUTPUT:
27 ----
28 compilable/deprecated_override.d(44): Deprecation: `deprecated_override.IntroducingChild.foo` is overriding the deprecated method `deprecated_override.IntroducingParent.foo`
29 compilable/deprecated_override.d(48): Deprecation: `deprecated_override.IntroducingChild.bar` is overriding the deprecated method `deprecated_override.IntroducingParent.bar`
30 ----
31 **/
33 class IntroducingParent
35 deprecated void foo() {}
36 void foo(int) {}
38 void bar(int) {}
39 deprecated void bar() {}
42 class IntroducingChild : IntroducingParent
44 override void foo() {}
45 override void foo(int) {}
47 override void bar(int) {}
48 override void bar() {}
51 // Unrelated to this path but should this error as well?
53 class IntroducingGrandchild : IntroducingChild
55 override void foo() {}
56 override void foo(int) {}
58 override void bar(int) {}
59 override void bar() {}
62 /**
63 Only the overriding declaration is deprecated
65 TEST_OUTPUT:
66 ----
67 compilable/deprecated_override.d(83): Deprecation: `deprecated_override.OverrideChild.foo` cannot be marked as `deprecated` because it is overriding a function in the base class
68 compilable/deprecated_override.d(87): Deprecation: `deprecated_override.OverrideChild.bar` cannot be marked as `deprecated` because it is overriding a function in the base class
69 ----
70 **/
72 class OverrideParent
74 void foo() {}
75 void foo(int) {}
77 void bar(int) {}
78 void bar() {}
81 class OverrideChild : OverrideParent
83 deprecated override void foo() {}
84 override void foo(int) {}
86 override void bar(int) {}
87 deprecated override void bar() {}
90 class OverrideGrandChild : OverrideChild
92 deprecated override void foo() {}
93 override void foo(int) {}
95 override void bar(int) {}
96 deprecated override void bar() {}