@@ -75,4 +75,136 @@ public class TypeBasedNoCollection<T> : IEnumerable {
75
75
public T Get ( ) { throw null ; }
76
76
77
77
public void Set ( T x ) { throw null ; }
78
- }
78
+ }
79
+
80
+ /*
81
+ * Representative subset of Linq.
82
+ *
83
+ * Only methods that will get summaries generated correctly are commented in.
84
+ * The remaning methods and interfaces are commented out with a descriptive reason.
85
+ * In some cases we will not be able correctly generate a summary based purely on the
86
+ * type information.
87
+ */
88
+ public static class SystemLinqEnumerable {
89
+
90
+ public static TSource Aggregate < TSource > ( this IEnumerable < TSource > source , Func < TSource , TSource , TSource > func ) { throw null ; }
91
+ public static TAccumulate Aggregate < TSource , TAccumulate > ( this IEnumerable < TSource > source , TAccumulate seed , Func < TAccumulate , TSource , TAccumulate > func ) { throw null ; }
92
+ public static TResult Aggregate < TSource , TAccumulate , TResult > ( this IEnumerable < TSource > source , TAccumulate seed , Func < TAccumulate , TSource , TAccumulate > func , Func < TAccumulate , TResult > resultSelector ) { throw null ; }
93
+ public static bool All < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
94
+ public static bool Any < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
95
+ public static bool Any < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
96
+ public static IEnumerable < TSource > Append < TSource > ( this IEnumerable < TSource > source , TSource element ) { throw null ; }
97
+ public static IEnumerable < TSource > AsEnumerable < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
98
+ public static decimal Average < TSource > ( this IEnumerable < TSource > source , Func < TSource , decimal > selector ) { throw null ; }
99
+ // Summary will not be derivables based on type information.
100
+ // public static IEnumerable<TResult> Cast<TResult>(this IEnumerable source) { throw null; }
101
+ public static IEnumerable < TSource [ ] > Chunk < TSource > ( this IEnumerable < TSource > source , int size ) { throw null ; }
102
+ public static IEnumerable < TSource > Concat < TSource > ( this IEnumerable < TSource > first , IEnumerable < TSource > second ) { throw null ; }
103
+ public static bool Contains < TSource > ( this IEnumerable < TSource > source , TSource value ) { throw null ; }
104
+ public static int Count < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
105
+ public static int Count < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
106
+ public static IEnumerable < TSource ? > DefaultIfEmpty < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
107
+ public static IEnumerable < TSource > DefaultIfEmpty < TSource > ( this IEnumerable < TSource > source , TSource defaultValue ) { throw null ; }
108
+ public static IEnumerable < TSource > DistinctBy < TSource , TKey > ( this IEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
109
+ public static IEnumerable < TSource > Distinct < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
110
+ public static TSource ? ElementAtOrDefault < TSource > ( this IEnumerable < TSource > source , int index ) { throw null ; }
111
+ public static TSource ElementAt < TSource > ( this IEnumerable < TSource > source , int index ) { throw null ; }
112
+ public static IEnumerable < TResult > Empty < TResult > ( ) { throw null ; }
113
+ // These summaries will not be derivable based on type information.
114
+ // public static IEnumerable<TSource> ExceptBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TKey> second, Func<TSource, TKey> keySelector) { throw null; }
115
+ // public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) { throw null; }
116
+ public static TSource ? FirstOrDefault < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
117
+ public static TSource FirstOrDefault < TSource > ( this IEnumerable < TSource > source , TSource defaultValue ) { throw null ; }
118
+ public static TSource ? FirstOrDefault < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
119
+ // Summary will not be correctly derivable based on type information.
120
+ // public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue) { throw null; }
121
+ public static TSource First < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
122
+ public static TSource First < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
123
+ // Missing summary for Argument[0].Element -> Argument[2].Parameter[1].Element and similar problem for GroupJoin (issue with generator)
124
+ // public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IEnumerable<TSource>, TResult> resultSelector) { throw null; }
125
+ // public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(this IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, IEnumerable<TInner>, TResult> resultSelector) { throw null; }
126
+ public static IEnumerable < TSource > IntersectBy < TSource , TKey > ( this IEnumerable < TSource > first , IEnumerable < TKey > second , Func < TSource , TKey > keySelector ) { throw null ; }
127
+ public static IEnumerable < TSource > Intersect < TSource > ( this IEnumerable < TSource > first , IEnumerable < TSource > second ) { throw null ; }
128
+ public static IEnumerable < TResult > Join < TOuter , TInner , TKey , TResult > ( this IEnumerable < TOuter > outer , IEnumerable < TInner > inner , Func < TOuter , TKey > outerKeySelector , Func < TInner , TKey > innerKeySelector , Func < TOuter , TInner , TResult > resultSelector ) { throw null ; }
129
+ public static TSource ? LastOrDefault < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
130
+ public static TSource LastOrDefault < TSource > ( this IEnumerable < TSource > source , TSource defaultValue ) { throw null ; }
131
+ public static TSource ? LastOrDefault < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
132
+ // Summary will not be correctly derivable based on type information (same problem as for FirstOrDefault)
133
+ // public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue) { throw null; }
134
+ public static TSource Last < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
135
+ public static TSource Last < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
136
+ public static long LongCount < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
137
+ public static TSource ? MaxBy < TSource , TKey > ( this IEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
138
+ public static TSource ? Max < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
139
+ public static decimal Max < TSource > ( this IEnumerable < TSource > source , Func < TSource , decimal > selector ) { throw null ; }
140
+ public static TResult ? Max < TSource , TResult > ( this IEnumerable < TSource > source , Func < TSource , TResult > selector ) { throw null ; }
141
+ public static TSource ? MinBy < TSource , TKey > ( this IEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
142
+ public static TSource ? Min < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
143
+ public static TResult ? Min < TSource , TResult > ( this IEnumerable < TSource > source , Func < TSource , TResult > selector ) { throw null ; }
144
+ // These summaries will not be derivable based on type information.
145
+ // public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source) { throw null; }
146
+ public static IOrderedEnumerable < TSource > OrderByDescending < TSource , TKey > ( this IEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
147
+ public static IOrderedEnumerable < TSource > OrderBy < TSource , TKey > ( this IEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
148
+ public static IEnumerable < TSource > Prepend < TSource > ( this IEnumerable < TSource > source , TSource element ) { throw null ; }
149
+ public static IEnumerable < TResult > Repeat < TResult > ( TResult element , int count ) { throw null ; }
150
+ public static IEnumerable < TSource > Reverse < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
151
+ public static IEnumerable < TResult > SelectMany < TSource , TResult > ( this IEnumerable < TSource > source , Func < TSource , IEnumerable < TResult > > selector ) { throw null ; }
152
+ public static IEnumerable < TResult > SelectMany < TSource , TCollection , TResult > ( this IEnumerable < TSource > source , Func < TSource , IEnumerable < TCollection > > collectionSelector , Func < TSource , TCollection , TResult > resultSelector ) { throw null ; }
153
+ public static IEnumerable < TResult > Select < TSource , TResult > ( this IEnumerable < TSource > source , Func < TSource , TResult > selector ) { throw null ; }
154
+ public static bool SequenceEqual < TSource > ( this IEnumerable < TSource > first , IEnumerable < TSource > second ) { throw null ; }
155
+ public static TSource ? SingleOrDefault < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
156
+ public static TSource SingleOrDefault < TSource > ( this IEnumerable < TSource > source , TSource defaultValue ) { throw null ; }
157
+ public static TSource ? SingleOrDefault < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
158
+ // Summary will not be correctly derivable based on type information (same problem as for FirstOrDefault)
159
+ // public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue) { throw null; }
160
+ public static TSource Single < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
161
+ public static TSource Single < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
162
+ public static IEnumerable < TSource > SkipLast < TSource > ( this IEnumerable < TSource > source , int count ) { throw null ; }
163
+ public static IEnumerable < TSource > SkipWhile < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
164
+ public static IEnumerable < TSource > Skip < TSource > ( this IEnumerable < TSource > source , int count ) { throw null ; }
165
+ public static IEnumerable < TSource > TakeLast < TSource > ( this IEnumerable < TSource > source , int count ) { throw null ; }
166
+ public static IEnumerable < TSource > TakeWhile < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
167
+ public static IEnumerable < TSource > Take < TSource > ( this IEnumerable < TSource > source , int count ) { throw null ; }
168
+ public static IOrderedEnumerable < TSource > ThenByDescending < TSource , TKey > ( this IOrderedEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
169
+ public static IOrderedEnumerable < TSource > ThenBy < TSource , TKey > ( this IOrderedEnumerable < TSource > source , Func < TSource , TKey > keySelector ) { throw null ; }
170
+ // Missing summary for Argument[0].Element -> ReturnValue.Element (issue with generator)
171
+ // public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source) { throw null; }
172
+ // Summaries related to dictionaries is not generated correctly as dictionaries are not identified as collections of keys and values (issue with generator).
173
+ // public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) where TKey : notnull { throw null; }
174
+ // public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) where TKey : notnull { throw null; }
175
+ public static HashSet < TSource > ToHashSet < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
176
+ public static List < TSource > ToList < TSource > ( this IEnumerable < TSource > source ) { throw null ; }
177
+ // Type to complicated to be handled by the generator (issue with generator).
178
+ // public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
179
+ // public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) { throw null; }
180
+ public static IEnumerable < TSource > UnionBy < TSource , TKey > ( this IEnumerable < TSource > first , IEnumerable < TSource > second , Func < TSource , TKey > keySelector ) { throw null ; }
181
+ public static IEnumerable < TSource > Union < TSource > ( this IEnumerable < TSource > first , IEnumerable < TSource > second ) { throw null ; }
182
+ public static IEnumerable < TSource > Where < TSource > ( this IEnumerable < TSource > source , Func < TSource , bool > predicate ) { throw null ; }
183
+ // Type to complicated to be handled by the generator (issue with generator).
184
+ // public static IEnumerable<(TFirst First, TSecond Second)> Zip<TFirst, TSecond>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second) { throw null; }
185
+ // public static IEnumerable<(TFirst First, TSecond Second, TThird Third)> Zip<TFirst, TSecond, TThird>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, IEnumerable<TThird> third) { throw null; }
186
+ public static IEnumerable < TResult > Zip < TFirst , TSecond , TResult > ( this IEnumerable < TFirst > first , IEnumerable < TSecond > second , Func < TFirst , TSecond , TResult > resultSelector ) { throw null ; }
187
+ }
188
+
189
+ public interface IGrouping < out TKey , out TElement > : IEnumerable < TElement > , IEnumerable {
190
+ TKey Key { get ; }
191
+ }
192
+
193
+ // public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable {
194
+ // IEnumerable<TElement> this[TKey key] { get; }
195
+ // bool Contains(TKey key);
196
+ // }
197
+
198
+ public interface IOrderedEnumerable < out TElement > : IEnumerable < TElement > , IEnumerable {
199
+ IOrderedEnumerable < TElement > CreateOrderedEnumerable < TKey > ( Func < TElement , TKey > keySelector , IComparer < TKey > ? comparer , bool descending ) ;
200
+ }
201
+
202
+ // public partial class Lookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable, ILookup<TKey, TElement>{
203
+ // internal Lookup() { }
204
+ // public int Count { get { throw null; } }
205
+ // public IEnumerable<TElement> this[TKey key] { get { throw null; } }
206
+ // public IEnumerable<TResult> ApplyResultSelector<TResult>(Func<TKey, IEnumerable<TElement>, TResult> resultSelector) { throw null; }
207
+ // public bool Contains(TKey key) { throw null; }
208
+ // public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator() { throw null; }
209
+ // IEnumerator IEnumerable.GetEnumerator() { throw null; }
210
+ // }
0 commit comments