diff options
author | Jb Evain <jbevain@gmail.com> | 2010-06-22 17:30:22 +0400 |
---|---|---|
committer | Jb Evain <jbevain@gmail.com> | 2010-06-22 17:30:22 +0400 |
commit | 9678267eb6999dda69d976dd0f533fdc8e8ac1c2 (patch) | |
tree | 474dcebef195ae52b1f0b0fb67c38ae7614060ee /mcs/class | |
parent | 2f2bd4ce47627de08de6d2cba20b43dbb48a7a68 (diff) |
2010-06-22 Jb Evain <jbevain@novell.com>
backport of r159337.
* Queryable.cs: properly set the constants types in the queryable
expression tree.
svn path=/branches/mono-2-6/mcs/; revision=159338
Diffstat (limited to 'mcs/class')
-rw-r--r-- | mcs/class/System.Core/System.Linq/ChangeLog | 7 | ||||
-rw-r--r-- | mcs/class/System.Core/System.Linq/Queryable.cs | 66 |
2 files changed, 40 insertions, 33 deletions
diff --git a/mcs/class/System.Core/System.Linq/ChangeLog b/mcs/class/System.Core/System.Linq/ChangeLog index 241eb4d889a..4bf0dcaa06f 100644 --- a/mcs/class/System.Core/System.Linq/ChangeLog +++ b/mcs/class/System.Core/System.Linq/ChangeLog @@ -1,5 +1,12 @@ 2010-06-22 Jb Evain <jbevain@novell.com> + backport of r159337. + + * Queryable.cs: properly set the constants types in the queryable + expression tree. + +2010-06-22 Jb Evain <jbevain@novell.com> + backport of r159329. * QueryableEnumerable.cs: override ToString. diff --git a/mcs/class/System.Core/System.Linq/Queryable.cs b/mcs/class/System.Core/System.Linq/Queryable.cs index 4aaccdff3bb..9d59829490a 100644 --- a/mcs/class/System.Core/System.Linq/Queryable.cs +++ b/mcs/class/System.Core/System.Linq/Queryable.cs @@ -77,7 +77,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TAccumulate)), source.Expression, - Expression.Constant (seed), + Expression.Constant (seed, typeof (TAccumulate)), Expression.Quote (func))); } @@ -88,7 +88,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TAccumulate), typeof (TResult)), source.Expression, - Expression.Constant (seed), + Expression.Constant (seed, typeof (TAccumulate)), Expression.Quote (func), Expression.Quote (selector))); } @@ -406,7 +406,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)))); } #endregion @@ -421,7 +421,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source.Expression, - Expression.Constant (item))); + Expression.Constant (item, typeof (TSource)))); } public static bool Contains<TSource> (this IQueryable<TSource> source, TSource item, IEqualityComparer<TSource> comparer) @@ -432,8 +432,8 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source.Expression, - Expression.Constant (item), - Expression.Constant (comparer))); + Expression.Constant (item, typeof (TSource)), + Expression.Constant (comparer, typeof (IEqualityComparer<TSource>)))); } #endregion @@ -480,7 +480,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source.Expression, - Expression.Constant (defaultValue))); + Expression.Constant (defaultValue, typeof (TSource)))); } #endregion @@ -505,7 +505,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source.Expression, - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IEqualityComparer<TSource>)))); } #endregion @@ -550,7 +550,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)))); } public static IQueryable<TSource> Except<TSource> (this IQueryable<TSource> source1, IEnumerable<TSource> source2, IEqualityComparer<TSource> comparer) @@ -561,8 +561,8 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2), - Expression.Constant (comparer))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)), + Expression.Constant (comparer, typeof (IEqualityComparer<TSource>)))); } #endregion @@ -638,7 +638,7 @@ namespace System.Linq { MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TKey)), source.Expression, Expression.Quote (keySelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IEqualityComparer<TKey>)))); } public static IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement> (this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, Expression<Func<TSource, TElement>> elementSelector) { @@ -672,7 +672,7 @@ namespace System.Linq { source.Expression, Expression.Quote (keySelector), Expression.Quote (elementSelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IEqualityComparer<TKey>)))); } public static IQueryable<TResult> GroupBy<TSource, TKey, TElement, TResult> (this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, Expression<Func<TSource, TElement>> elementSelector, Expression<Func<TKey, IEnumerable<TElement>, TResult>> resultSelector) { @@ -697,7 +697,7 @@ namespace System.Linq { source.Expression, Expression.Quote (keySelector), Expression.Quote (resultSelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IEqualityComparer<TKey>)))); } public static IQueryable<TResult> GroupBy<TSource, TKey, TElement, TResult> (this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, Expression<Func<TSource, TElement>> elementSelector, Expression<Func<TKey, IEnumerable<TElement>, TResult>> resultSelector, IEqualityComparer<TKey> comparer) { @@ -710,7 +710,7 @@ namespace System.Linq { Expression.Quote (keySelector), Expression.Quote (elementSelector), Expression.Quote (resultSelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IEqualityComparer<TKey>)))); } #endregion @@ -733,7 +733,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TOuter), typeof (TInner), typeof (TKey), typeof (TResult)), outer.Expression, - Expression.Constant (inner), + Expression.Constant (inner, typeof (IEnumerable<TInner>)), Expression.Quote (outerKeySelector), Expression.Quote (innerKeySelector), Expression.Quote (resultSelector))); @@ -756,7 +756,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TOuter), typeof (TInner), typeof (TKey), typeof (TResult)), outer.Expression, - Expression.Constant (inner), + Expression.Constant (inner, typeof (IEnumerable<TInner>)), Expression.Quote (outerKeySelector), Expression.Quote (innerKeySelector), Expression.Quote (resultSelector), @@ -775,7 +775,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)))); } public static IQueryable<TSource> Intersect<TSource> (this IQueryable<TSource> source1, IEnumerable<TSource> source2, IEqualityComparer<TSource> comparer) @@ -786,8 +786,8 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2), - Expression.Constant (comparer))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)), + Expression.Constant (comparer, typeof (IEqualityComparer<TSource>)))); } #endregion @@ -802,7 +802,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TOuter), typeof (TInner), typeof (TKey), typeof (TResult)), outer.Expression, - Expression.Constant (inner), + Expression.Constant (inner, typeof (IEnumerable<TInner>)), Expression.Quote (outerKeySelector), Expression.Quote (innerKeySelector), Expression.Quote (resultSelector))); @@ -816,11 +816,11 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TOuter), typeof (TInner), typeof (TKey), typeof (TResult)), outer.Expression, - Expression.Constant (inner), + Expression.Constant (inner, typeof (IEnumerable<TInner>)), Expression.Quote (outerKeySelector), Expression.Quote (innerKeySelector), Expression.Quote (resultSelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IEqualityComparer<TKey>)))); } @@ -986,7 +986,7 @@ namespace System.Linq { MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TKey)), source.Expression, Expression.Quote (keySelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IComparer<TKey>)))); } #endregion @@ -1013,7 +1013,7 @@ namespace System.Linq { MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TKey)), source.Expression, Expression.Quote (keySelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IComparer<TKey>)))); } #endregion @@ -1118,7 +1118,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)))); } public static bool SequenceEqual<TSource> (this IQueryable<TSource> source1, IEnumerable<TSource> source2, IEqualityComparer<TSource> comparer) @@ -1129,8 +1129,8 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2), - Expression.Constant (comparer))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)), + Expression.Constant (comparer, typeof (IEqualityComparer<TSource>)))); } #endregion @@ -1517,7 +1517,7 @@ namespace System.Linq { MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TKey)), source.Expression, Expression.Quote (keySelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IComparer<TKey>)))); } #endregion @@ -1544,7 +1544,7 @@ namespace System.Linq { MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource), typeof (TKey)), source.Expression, Expression.Quote (keySelector), - Expression.Constant (comparer))); + Expression.Constant (comparer, typeof (IComparer<TKey>)))); } #endregion @@ -1559,7 +1559,7 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)))); } public static IQueryable<TSource> Union<TSource>(this IQueryable<TSource> source1, IEnumerable<TSource> source2, IEqualityComparer<TSource> comparer) @@ -1570,8 +1570,8 @@ namespace System.Linq { StaticCall ( MakeGeneric (MethodBase.GetCurrentMethod (), typeof (TSource)), source1.Expression, - Expression.Constant (source2), - Expression.Constant (comparer))); + Expression.Constant (source2, typeof (IEnumerable<TSource>)), + Expression.Constant (comparer, typeof (IEqualityComparer<TSource>)))); } |