[svn] r5792: nemerle/trunk/ncc: generation/Typer4.n
testsuite/positive/valuetype-conv.n
malekith
svnadmin at nemerle.org
Sun Oct 2 21:19:24 CEST 2005
Log:
Generate proper code, when void-type parameter is passed. Resolves #540.
Author: malekith
Date: Sun Oct 2 21:19:23 2005
New Revision: 5792
Modified:
nemerle/trunk/ncc/generation/Typer4.n
nemerle/trunk/ncc/testsuite/positive/valuetype-conv.n
Modified: nemerle/trunk/ncc/generation/Typer4.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer4.n (original)
+++ nemerle/trunk/ncc/generation/Typer4.n Sun Oct 2 21:19:23 2005
@@ -552,6 +552,14 @@
def t = f.Fix ();
parm.expr = Walk (parm.expr);
if (parm.kind == ParmKind.Normal) {
+ if (parm.expr.MType is MType.Void)
+ parm.expr =
+ TExpr.Sequence (
+ InternalType.Object,
+ parm.expr,
+ TExpr.Literal (InternalType.Object,
+ Literal.Null ()))
+ else
when (NeedBoxing (t, parm.expr))
parm.expr = Box (t, parm.expr);
} else {
Modified: nemerle/trunk/ncc/testsuite/positive/valuetype-conv.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/valuetype-conv.n (original)
+++ nemerle/trunk/ncc/testsuite/positive/valuetype-conv.n Sun Oct 2 21:19:23 2005
@@ -1,4 +1,5 @@
using System.Globalization;
+using System.Console;
[Record]
struct A {
@@ -23,6 +24,19 @@
foo (array [1, 2, 3]);
foo (array [1 : object, 2, 3]);
foo (array [A(1.0), A(2.3)]);
+
+ def f['a] (_ : 'a) : void
+ {
+ Write ($ "f [$(typeof ('a))] called\n");
+ }
+
+ def g () {
+ Write ($ "g called\n");
+
+ }
+
+ f ( () );
+ f (g ());
}
}
@@ -38,5 +52,8 @@
3
1
2.3
+f [System.Object] called
+g called
+f [System.Object] called
END-OUTPUT
*/
More information about the svn
mailing list