| module director_basic_runme; |
| |
| import director_basic.A1; |
| import director_basic.Bar; |
| import director_basic.Foo; |
| import director_basic.MyClass; |
| |
| void main() { |
| auto a = new director_basic_MyFoo(); |
| if (a.ping() != "director_basic_MyFoo::ping()") { |
| throw new Exception("a.ping()"); |
| } |
| if (a.pong() != "Foo::pong();director_basic_MyFoo::ping()") { |
| throw new Exception("a.pong()"); |
| } |
| |
| auto b = new Foo(); |
| if (b.ping() != "Foo::ping()") { |
| throw new Exception("b.ping()"); |
| } |
| if (b.pong() != "Foo::pong();Foo::ping()") { |
| throw new Exception("b.pong()"); |
| } |
| |
| { |
| scope a1 = new A1(1, false); |
| } |
| |
| { |
| auto my = new MyOverriddenClass(); |
| |
| my.expectNull = true; |
| if (MyClass.call_pmethod(my, null) !is null) |
| throw new Exception("null pointer conversion problem"); |
| |
| auto myBar = new Bar(); |
| my.expectNull = false; |
| auto myNewBar = MyClass.call_pmethod(my, myBar); |
| if (myNewBar is null) |
| throw new Exception("non-null pointer conversion problem"); |
| myNewBar.x = 10; |
| } |
| } |
| |
| class director_basic_MyFoo : Foo { |
| public override char[] ping() { |
| return "director_basic_MyFoo::ping()"; |
| } |
| } |
| |
| class MyOverriddenClass : MyClass { |
| public bool expectNull = false; |
| public bool nonNullReceived = false; |
| public override Bar pmethod(Bar b) { |
| if (expectNull && (b !is null)) |
| throw new Exception("null not received as expected"); |
| return b; |
| } |
| } |