[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