mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-04-11 22:39:02 +02:00
Adjust some more code that was depending on the function and delegate calling
conventions being equal.
There's also an instance in `tango.text.convert.Layout` that should be adjusted:
{{{
Index: tango/text/convert/Layout.d
===================================================================
--- tango/text/convert/Layout.d (revision 4578)
+++ tango/text/convert/Layout.d (working copy)
-660,8 +660,12 @@
case TypeCode.STRUCT:
auto s = cast(TypeInfo_Struct) type;
- if (s.xtoString)
- return Utf.fromString8 (s.xtoString(p), result);
+ if (s.xtoString) {
+ char[] delegate() toString;
+ toString.ptr = p;
+ toString.funcptr = cast(char[] function()) s.xtoString;
+ return Utf.fromString8 (toString(), result);
+ }
goto default;
case TypeCode.INTERFACE:
}}}
This commit is contained in:
@@ -58,7 +58,10 @@ void main()
|
||||
assert(ti.compare(&v,&u) > 0);
|
||||
{
|
||||
auto tis = cast(TypeInfo_Struct)ti;
|
||||
assert(tis.xtoString(&s) == s.toString());
|
||||
char[] delegate() structToString;
|
||||
structToString.ptr = &s;
|
||||
structToString.funcptr = tis.xtoString;
|
||||
assert(structToString() == s.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// tries to implement a fairly complete variadic print function
|
||||
module tangotests.vararg3;
|
||||
module tangotests.vararg6;
|
||||
|
||||
extern(C) int printf(char*, ...);
|
||||
|
||||
@@ -179,7 +179,10 @@ void print(TypeInfo ti, void* arg)
|
||||
{
|
||||
if (sti.xtoString !is null)
|
||||
{
|
||||
char[] str = sti.xtoString(arg);
|
||||
char[] delegate() toString;
|
||||
toString.ptr = arg;
|
||||
toString.funcptr = sti.xtoString;
|
||||
char[] str = toString();
|
||||
printf("%.*s", str.length, str.ptr);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user