[svn] r7370: nemerle/trunk/ncc: testsuite/negative/redef.n typing/MType.n typing/Typer2.n

nazgul svnadmin at nemerle.org
Fri Feb 2 21:28:09 CET 2007


Log:
Cosider Ref/Out types equal... looks like this effectively prevents redefinition of method varying only on ref/out and does not break anything

Author: nazgul
Date: Fri Feb  2 21:28:06 2007
New Revision: 7370

Modified:
   nemerle/trunk/ncc/testsuite/negative/redef.n
   nemerle/trunk/ncc/typing/MType.n
   nemerle/trunk/ncc/typing/Typer2.n

Modified: nemerle/trunk/ncc/testsuite/negative/redef.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/negative/redef.n	(original)
+++ nemerle/trunk/ncc/testsuite/negative/redef.n	Fri Feb  2 21:28:06 2007
@@ -87,6 +87,12 @@
   s : S1;
 }
 
+class Bug859 {
+    static Foo(x : ref int) : void { }
+    static Foo(x : out int) : void { }   // E: redefinition of method Bug859.Foo
+}
+
 namespace System {
   class Uri { }  // E: redefinition of external type `System.Uri'
 }
+

Modified: nemerle/trunk/ncc/typing/MType.n
==============================================================================
--- nemerle/trunk/ncc/typing/MType.n	(original)
+++ nemerle/trunk/ncc/typing/MType.n	Fri Feb  2 21:28:06 2007
@@ -99,6 +99,8 @@
           | (Tuple (a1), Tuple (a2)) =>
             a1.Equals (a2)
 
+          | (Out (t1), Ref (t2))
+          | (Ref (t1), Out (t2))
           | (Out (t1), Out (t2))
           | (Ref (t1), Ref (t2))
           | (Array (t1, r1), Array (t2, r2)) when (r1 == r2) =>

Modified: nemerle/trunk/ncc/typing/Typer2.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer2.n	(original)
+++ nemerle/trunk/ncc/typing/Typer2.n	Fri Feb  2 21:28:06 2007
@@ -861,7 +861,11 @@
 
           
         | TExpr.ImplicitValueTypeCtor =>
-          MarkAsUsed ((expr.MType :> MType.Class).tycon, expr.Location);
+          match (expr.MType) {
+            | Class (tycon, _) 
+            | Fun (_, MType.Class (tycon, _)) => MarkAsUsed (tycon, expr.Location)
+            | t => Util.ice ($"unexpected type $t")
+          }
           null
           
 



More information about the svn mailing list