Browse Source

Fixing ObservableQuery expression rewriting to support higher order queries expressed via IQbservable.

Bart De Smet 10 years ago
parent
commit
24f10391b9

+ 5 - 0
Rx.NET/Source/System.Reactive.Providers/Reactive/ObservableQuery.cs

@@ -296,6 +296,11 @@ namespace System.Reactive
                 return base.VisitMethodCall(node);
             }
 
+            protected override Expression VisitLambda<T>(Expression<T> node)
+            {
+                return node;
+            }
+
             private IList<Expression> VisitQbservableOperatorArguments(MethodInfo method, IEnumerable<Expression> arguments)
             {
                 //

+ 7 - 0
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/QbservableTest.cs

@@ -1856,6 +1856,13 @@ namespace ReactiveTests.Tests
 
             Assert.Fail();
         }
+
+        [TestMethod]
+        public void Qbservable_HigherOrder()
+        {
+            var res = Qbservable.Return(Qbservable.Provider, 42).Select(_ => Qbservable.Return(Qbservable.Provider, 42)).Switch().Single();
+            Assert.AreEqual(42, res);
+        }
     }
 
     public static class MyExt