[svn] r7314: nemerle/trunk: BuildAndReg-Release.cmd
boot/Nemerle.Compiler.dll boot/Nemerle.MSBuild.Tasks.d...
VladD2
svnadmin at nemerle.org
Sun Jan 21 14:14:47 CET 2007
Log:
Improve OverrideObjectEquals macro (at now it more faster and flexible)
Author: VladD2
Date: Sun Jan 21 14:14:11 2007
New Revision: 7314
Modified:
nemerle/trunk/BuildAndReg-Release.cmd
nemerle/trunk/boot/Nemerle.Compiler.dll
nemerle/trunk/boot/Nemerle.MSBuild.Tasks.dll
nemerle/trunk/boot/Nemerle.Macros.dll
nemerle/trunk/boot/Nemerle.dll
nemerle/trunk/boot/ncc.exe
nemerle/trunk/macros/core.n
nemerle/trunk/ncc/hierarchy/TypeInfo.n
Modified: nemerle/trunk/BuildAndReg-Release.cmd
==============================================================================
--- nemerle/trunk/BuildAndReg-Release.cmd (original)
+++ nemerle/trunk/BuildAndReg-Release.cmd Sun Jan 21 14:14:11 2007
@@ -4,3 +4,4 @@
call BuildAndReg.cmd
+pause
\ No newline at end of file
Modified: nemerle/trunk/boot/Nemerle.Compiler.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/Nemerle.MSBuild.Tasks.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/Nemerle.Macros.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/Nemerle.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/ncc.exe
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/macros/core.n
==============================================================================
--- nemerle/trunk/macros/core.n (original)
+++ nemerle/trunk/macros/core.n Sun Jan 21 14:14:11 2007
@@ -1141,18 +1141,24 @@
macro OverrideObjectEquals (t : TypeBuilder, m : ParsedMethod)
{
match (m.header.parms) {
- | [_] =>
+ | [param] =>
+ mutable cases = [<[ case:
+ | x is $(param.ty) => this.$(m.header.name.GetName () : name) (x) ]>,
+ <[ case: | _ => false ]>];
+
+ unless (t.IsValueType)
+ cases ::= <[ case: | x when x : object == this => true ]>;
+
t.Define (<[ decl:
- public override Equals (x : object) : bool
+ public override Equals (other : object) : bool
{
- if (typeof (this).IsInstanceOfType (x))
- this.$(m.header.name.GetName () : name) (x :> this)
- else
- false
+ match (other)
+ {
+ ..$cases
+ }
}
]>)
- | _ =>
- Message.Error ("Equals()-like method shall have a single argument")
+ | _ => Message.Error ("Equals()-like method shall have a single parameter")
}
}
Modified: nemerle/trunk/ncc/hierarchy/TypeInfo.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeInfo.n (original)
+++ nemerle/trunk/ncc/hierarchy/TypeInfo.n Sun Jan 21 14:14:11 2007
@@ -133,7 +133,7 @@
GetSetter () : IMethod;
}
-public abstract class MemberInfo
+public abstract class MemberInfo : System.IEquatable[MemberInfo]
{
[Accessor]
protected mutable is_obsolete : bool;
@@ -205,6 +205,11 @@
}
(msg, is_error)
}
+
+ public Equals (other : MemberInfo) : bool
+ {
+ this : object == other
+ }
}
[ManagerAccess]
More information about the svn
mailing list