[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