[svn] r6283: nemerle/trunk/ncc: testsuite/positive/delegate.n typing/Typer.n

malekith svnadmin at nemerle.org
Mon May 15 11:24:06 CEST 2006


Log:
Use only the delegate that is requested in delegate conversion, not all the same-named ones.

Author: malekith
Date: Mon May 15 11:24:05 2006
New Revision: 6283

Modified:
   nemerle/trunk/ncc/testsuite/positive/delegate.n
   nemerle/trunk/ncc/typing/Typer.n

Modified: nemerle/trunk/ncc/testsuite/positive/delegate.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/delegate.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/delegate.n	Mon May 15 11:24:05 2006
@@ -183,6 +183,25 @@
 }
 }
 
+namespace Bug674reopen {
+using System.Collections.Generic;
+
+public delegate Func [T] () : T;
+public delegate Func [A0,T] (arg0 : A0) : T;
+public delegate Func [A0,A1,T] (arg0 : A0, arg1 : A1): T;
+
+public module Sequence {
+    public Select [T, S] (this _source : IEnumerable [T], _selector : Func [T, S]) : IEnumerable [S] { null; }
+    public Select [T, S] (this _source : IEnumerable [T], _selector : Func [T, int, S]) : IEnumerable [S] { null; }
+    public foo () : void
+    {
+      def input = $[1 .. 10];
+      _ = Sequence.Select (input, x : int => x);
+      _ = Sequence.Select (input, x : int * int => x);
+    }
+}
+}
+
 
 public module M {
 

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Mon May 15 11:24:05 2006
@@ -37,8 +37,8 @@
 using PT = Nemerle.Compiler.Parsetree;
 
 [assembly: LogFunction (Message.Debug),
-           LogFlag (TYPING, false),
-           LogFlag (MACRO_EXPANSIONS, false)
+           LogFlag (TYPING, 0),
+           LogFlag (MACRO_EXPANSIONS, 0)
 ]
 
 namespace Nemerle.Compiler
@@ -894,9 +894,10 @@
 
           if (del_tc != null) {
             log (TYPING, $ "delegate conversion, $(expr.Type) ---> $del_tc");
-            def name = Util.ExprOfQid (del_tc.FullName);
+            // we don't want any delegate named del_tc, we want this specific delegate
+            def con = MakeOverloadedNode (TypeToConstructor (null, del_tc), FreshTyVar ());
             def expr = TryTyping (fun () {
-              TypeExpr (<[ $name ($(expr : typed)) ]>)
+              TypeExpr (<[ $(con : typed) ($(expr : typed)) ]>)
             });
             if (IsError (expr) || ! expr.Type.TryRequire (target))
               null



More information about the svn mailing list