Mercurial > projects > ldc
annotate tests/mini/vararg2.d @ 1642:f49cb50c6064
Revert 1637 because it breaks HelloWorld with Tangos Stdout. There may be another way to fix this so that Deewiants case works, as well as Tango.
author | Kelly Wilson <wilsonk cpsc.ucalgary.ca> |
---|---|
date | Mon, 08 Mar 2010 23:10:26 -0700 |
parents | 4ac97ec7c18e |
children |
rev | line source |
---|---|
57
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
1 module vararg2; |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
2 |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
3 void func(...) |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
4 { |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
5 assert(_arguments.length == 2); |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
6 assert(_arguments[0] is typeid(int)); |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
7 int a = *cast(int*)_argptr; |
741
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
341
diff
changeset
|
8 _argptr += size_t.sizeof; |
57
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
9 assert(_arguments[1] is typeid(int)); |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
10 a += *cast(int*)_argptr; |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
11 _argptr += int.sizeof; |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
12 assert(a == 3); |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
13 } |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
14 |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
15 void main() |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
16 { |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
17 func(1,2); |
a9d29e9f1fed
[svn r61] Added support for D-style variadic functions :)
lindquist
parents:
diff
changeset
|
18 } |