[svn] r6168: nemerle/trunk/ncc: generation/ILEmitter.n
testsuite/positive/generic-delegateconv.n
nazgul
svnadmin at nemerle.org
Sat Apr 1 17:45:39 CEST 2006
Log:
Do not perform special mono hack for non-generic types nested in generic ones.
Author: nazgul
Date: Sat Apr 1 17:45:36 2006
New Revision: 6168
Added:
nemerle/trunk/ncc/testsuite/positive/generic-delegateconv.n (contents, props changed)
Modified:
nemerle/trunk/ncc/generation/ILEmitter.n
Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n (original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n Sat Apr 1 17:45:36 2006
@@ -69,6 +69,8 @@
// mono #76484
static workaround_mono_bug (type_ : Nemerle.Compiler.TypeBuilder) : void
{
+ when (MS_NET_RuntimeType != null) Nemerle.Imperative.Return (); // skip if on MS.NET
+
def type_of_this = type_.GetMemType ().SystemType;
def is_proper_method (_) {
@@ -77,7 +79,7 @@
| _ => false
}
- when (type_.TyparmsCount > 0)
+ when (type_of_this.ContainsGenericParameters)
match (type_.GetMembers ().Find (is_proper_method)) {
| Some (m) =>
//Message.Debug ($ "tot=$type_of_this m=$m");
Added: nemerle/trunk/ncc/testsuite/positive/generic-delegateconv.n
==============================================================================
--- (empty file)
+++ nemerle/trunk/ncc/testsuite/positive/generic-delegateconv.n Sat Apr 1 17:45:36 2006
@@ -0,0 +1,46 @@
+using System;
+
+namespace Utils
+{
+ class COrderedHandler
+ {
+ public delegate TInvoke(_ : object, _ : EventArgs) : void;
+
+ public Invoke(_xSource : object, _xArgs : EventArgs, _xNextHandler : TInvoke) : void
+ {
+ }
+ }
+
+ class COverloadableEvent['Handler] where 'Handler : COrderedHandler
+ {
+ private mutable _lHandlers : list['Handler] = [];
+
+ public Invoke() : void
+ {
+ def MakeFuncCall( lHandlers = _lHandlers ) : object * EventArgs -> void
+ {
+ | xHandler :: lTail => {
+ def f(a : object, b : EventArgs)
+ {
+ xHandler.Invoke( a, b, MakeFuncCall(lTail) );
+ }
+ f
+ }
+ | [] => null
+ }
+ _ = MakeFuncCall ();
+ }
+ }
+
+ module Test
+ {
+ public Main() : void
+ {
+ }
+ }
+}
+
+/*
+BEGIN-OUTPUT
+END-OUTPUT
+*/
\ No newline at end of file
More information about the svn
mailing list