edit: $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs;C1040664
File: RubyTests.cs
===================================================================
--- $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs;C1040664  (server)    8/4/2009 11:31 AM
+++ Shelved Change: $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs;OperatorMapping
@@ -411,6 +411,7 @@
                 ClrChar1,
                 ClrOperators1,
                 ClrOperators2,
+                ClrOperators3,
                 ClrConversions1,
                 ClrHashEqualsToString1,
                 ClrHashEqualsToString2,
===================================================================
edit: $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs;C1040664
File: ClrTests.cs
===================================================================
--- $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs;C1040664  (server)    8/4/2009 11:26 AM
+++ Shelved Change: $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs;OperatorMapping
@@ -2260,8 +2260,7 @@
         }
 
         public void ClrOperators2() {
-            AssertOutput(delegate() {
-                CompilerTest(@"
+            TestOutput(@"
 p :b == true                # Symbol hides SymbolId::op_Equality
 p String == Fixnum          # Only instance operator calls are allowed (MutableString::op_Equality shound be ignored)
 
@@ -2272,14 +2271,32 @@
 end
 
 p C.new.ceil                 # Numeric#ceil uses self with DefaultProtocol attribute
-");
-            }, @"
+", @"
 false
 false
 2
 ");
         }
 
+        /// <summary>
+        /// Operator mapping is not performed for builtin classes. 
+        /// CLR DateTime defines op_LessThan but we want less-than operator to call comparison method &lt;=&gt;.
+        /// </summary>
+        public void ClrOperators3() {
+            TestOutput(@"
+class Time
+  def <=>(other)
+    puts '<=>'
+    1
+  end
+end
+p Time.mktime(1) < Time.mktime(10)
+", @"
+<=>
+false
+");
+        }
+
         public class Conversions1 {
             public int F(int? a, int? b) {
                 return a ?? b ?? 3;
===================================================================
edit: $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;C1040664
File: RubyClass.cs
===================================================================
--- $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;C1040664  (server)    8/4/2009 11:35 AM
+++ Shelved Change: $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;OperatorMapping
@@ -742,12 +742,12 @@
             }
 
             string operatorName;
-            if (!_isSingletonClass && (operatorName = RubyUtils.MapOperator(name)) != null) {
+            if (tryUnmangle && !_isSingletonClass && (operatorName = RubyUtils.MapOperator(name)) != null) {
                 // instance invocation of an operator:
                 if (TryGetClrMethod(type, basicBindingFlags | BindingFlags.Static, true, name, null, operatorName, null, out method)) {
                     return true;
                 }
-            } else if (name == "[]" || name == "[]=") {
+            } else if (tryUnmangle && (name == "[]" || name == "[]=")) {
                 if (type.IsArray && !_isSingletonClass) {
                     bool isSetter = name.Length == 3;
                     TryGetClrMethod(type, bindingFlags, false, name, null, isSetter ? "Set" : "Get", null, out method);
===================================================================
