diff options
author | David Nadlinger <code@klickverbot.at> | 2010-11-18 00:24:02 +0000 |
---|---|---|
committer | David Nadlinger <code@klickverbot.at> | 2010-11-18 00:24:02 +0000 |
commit | 03aefbc6e95d094a6de231e1f5264c0946e209a3 (patch) | |
tree | 94dff73a4aa3c27366f29f36712bde78317c5776 /Examples/test-suite/d/director_basic_runme.2.d | |
parent | a355d2d46af56c655816c37f24bb59fa6bade43f (diff) | |
download | swig-03aefbc6e95d094a6de231e1f5264c0946e209a3.tar.gz |
Added support for the D programming languge.
It is still a bit rough around some edges, particularly with regard to multi-threading and operator overloading, and there are some documentation bits missing, but it should be fine for basic use.
The test-suite should build and run fine with the current versions of DMD, LDC and Tango (at least) on Linux x86_64 and Mac OS X 10.6.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12299 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Examples/test-suite/d/director_basic_runme.2.d')
-rw-r--r-- | Examples/test-suite/d/director_basic_runme.2.d | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Examples/test-suite/d/director_basic_runme.2.d b/Examples/test-suite/d/director_basic_runme.2.d new file mode 100644 index 000000000..877fcbc47 --- /dev/null +++ b/Examples/test-suite/d/director_basic_runme.2.d @@ -0,0 +1,46 @@ +module director_basic_runme; + +import std.exception; +import director_basic.A1; +import director_basic.Bar; +import director_basic.Foo; +import director_basic.MyClass; + +void main() { + auto a = new director_basic_MyFoo(); + enforce(a.ping() == "director_basic_MyFoo::ping()", "a.ping()"); + enforce(a.pong() == "Foo::pong();director_basic_MyFoo::ping()", "a.pong()"); + + auto b = new Foo(); + enforce(b.ping() == "Foo::ping()", "b.ping()"); + enforce(b.pong() == "Foo::pong();Foo::ping()", "b.pong()"); + + { + scope a1 = new A1(1, false); + } + + auto my = new MyOverriddenClass(); + my.expectNull = true; + enforce(MyClass.call_pmethod(my, null) is null, "null pointer conversion problem"); + auto myBar = new Bar(); + my.expectNull = false; + auto myNewBar = MyClass.call_pmethod(my, myBar); + enforce(myNewBar !is null, "non-null pointer conversion problem"); + myNewBar.x = 10; +} + +class director_basic_MyFoo : Foo { + public override string 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; + } +} |