disable broken tests on net_4_0
[mcs.git] / class / corlib / System.Collections.Generic / ChangeLog
blob8c203807e75600e803b4c592ba93ddb92a690eed
1 2010-05-15  Marek Safar <marek.safar@gmail.com>
3         * KeyValuePair.cs: Initialize fields definitely.
5 2010-03-19  Sebastien Pouliot  <sebastien@ximian.com>
7         * CollectionDebuggerView.cs: Change to internal so we can avoid
8         a duplicating the type in assemblies that have [InternalsVisibleTo]
10 2010-01-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
12         * EqualityComparer.cs: (Equals) the arguments are checked to be
13         the correct type.
15 2010-01-24  Robert Jordan  <robertj@gmx.net>
17         * Dictionary.cs: Fix deserialization compatibility with MS.NET.
18         Fixes bug #474009.
20 2010-01-20  Miguel de Icaza  <miguel@novell.com>
22         * Dictionary.cs: Always create the keys, fixes compatibility
23         between Mono and .NET.  Patch from John Lenz <jlenz2@math.uiuc.edu>
25 2009-12-06  Chris Toshok  <toshok@ximian.com>
27         * KeyValuePair.cs: we need setters for Key and Value so they can
28         be set via reflection from
29         System.ServiceModel.System.Runtime.Serialization.Json.TypeMap.cs.
31 2009-11-26  Marek Safar <marek.safar@gmail.com>
32         
33         * CollectionDebuggerView.cs: Removed limit restriction.
35 2009-11-23   Carlos Alberto Cortez <calberto.cortez@gmail.com>
37         * Comparer.cs: Our DefaultComparer class should be serializable just
38         as the generic one is.
39         Fixes #503585.
41 2009-11-23  Juraj Skripsky <js@hotfeet.ch>
43         * List.cs (Sort): Call more appropriate overload of Array.Sort<T>.
44         Array.Sort<T> should be able to determine the comparison itself.
45         Speeds up the sorting for items of primitive type. 
46         Fixes #530450.
48 2009-11-08  Juraj Skripsky <js@hotfeet.ch>
50         * List.cs (Sort): Sync to latest changes in Array.Sort.
52 2009-10-20  Marek Safar <marek.safar@gmail.com>
53         
54         * List.cs, CollectionDebuggerView.cs, KeyValuePair.cs, Dictionary.cs
55         Improve debugging experience.
57 2009-10-19  Marek Safar <marek.safar@gmail.com>
58         
59         * CollectionDebuggerView.cs: New file.
61 2009-10-17  Sebastien Pouliot  <sebastien@ximian.com>
63         * EqualityComparer.cs: Seal internal classes
65 2009-10-02  Raja R Harinath  <harinath@hurrynot.org>
67         * Dictionary.cs (Do_ICollectionCopyTo): Revert 2009-10-01 change.
68         Use BOOTSTRAP_BASIC to hide code from gmcs 2.4.x.
70 2009-10-01  Marek Habersack  <mhabersack@novell.com>
72         * Dictionary.cs: cast target array to TRet[] instead of object[] -
73         may fail, but otherwise it doesn't compile with 2.4 (e.g. when
74         bootstrapping trunk)
76 2009-09-22  Raja R Harinath  <harinath@hurrynot.org>
78         Ensure that invalid arrays to CopyTo result in ArgumentExceptions.
79         * Dictionary.cs (CopyToCheck, Do_CopyTo): Carve out of ...
80         (CopyTo): ... this.
81         (Do_ICollectionCopyTo): Carve out of ICollection.CopyTo.  Convert
82         type-cast exceptions to ArgumentExceptions.
83         (KeyCollection.CopyTo): Use them.
84         (ValueCollection.CopyTo): Use them.
86 2009-07-31  Raja R Harinath  <harinath@hurrynot.org>
88         * List.cs (IList.this.set): Convert NullReference and InvalidCast
89         exceptions into ArgumentExceptions.
90         (IList.Add, IList.Contains, IList.IndexOf, IList.Insert, IList.Remove):
91         Convert NullReferenceException to ArgumentException.
93 2009-07-31  Raja R Harinath  <harinath@hurrynot.org>
95         * List.cs (Enumerator.next): Rename from Enumerator.idx and change
96         meaning to be the index of the next item to be enumerated.
97         (Enumerator.MoveNext): Simplify.
99 2009-07-31  Raja R Harinath  <harinath@hurrynot.org>
101         * Dictionary.cs (Enumerator.next): Rename from Enumerator.cur and
102         change meaning to be the index of the slot to start searching on
103         the next iteration.
104         (Enumerator.MoveNext): Avoid an out-of-bounds access.
106 2009-07-30  Raja R Harinath  <harinath@hurrynot.org>
108         * List.cs (Enumerator.current): New.
109         (Enumerator.MoveNext): Update it.
110         (Enumerator.Current): Don't verify any invariants.
111         (Enumerator.Dispose): Set 'l' to null.
113 2009-07-29  Raja R Harinath  <harinath@hurrynot.org>
115         * Dictionary.cs (Enumerator.current): New.
116         (Enumerator.MoveNext): Update it.
117         (Enumerator.Current): Don't verify any invariants.
119 2009-06-10  Marek Safar <marek.safar@gmail.com>
121         * IEqualityComparer.cs, IComparer.cs, IEnumerable.cs,
122         IEnumerator.cs: Add type variance.
124 2009-04-02  Jb Evain  <jbevain@novell.com>
126         * Dictionary.cs (ValueCollection.CopyTo): fix for copying to
127         an object array. Based on a patch by Tobias Grimm <mono@e-tobi.net>.
128         Fixes bug #328036.
130 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
132         * Dictionary.cs: Declare the Link struct outside the main class to avoid
133         creating a separate inflated instances for each instantiation of Dictionary.
135 2008-11-14  Jb Evain  <jbevain@novell.com>
137         * Dictionary.cs (ICollection.CopyTo): fix the different possible
138         copying cases depending on the actual type of destination array,
139         be it an array of KeyValuePair, DictionaryEntry, or object.
140         Fixes #444778.
142 2008-11-14  Jb Evain  <jbevain@novell.com>
144         * Dictionary.cs: fix ICollection<KeyValuePair<T>>.Remove and .Contains
145         to not only check if the key exists but if the associated value is the
146         good one as well. Fixes #444768.
148 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
150         * Dictionary.cs (Clear): Clear the linkSlots array as well, as 
151         Enumerator.MoveNext () depends on it. Fixes #432441.
153 Fri Oct 3 23:08:06 CEST 2008 Paolo Molaro <lupus@ximian.com>
155         * Dictionary.cs: by popular demand, return keys/values in insertion
156         order when possible.
158 2008-09-29  Jb Evain  <jbevain@novell.com>
160         * Dictionary.cs: check for null argument in ContainsKey.
161         Patch by Jonathan Anderson  <jonathan.l.anderson@gmail.com>
163 2008-09-24  Jb Evain  <jbevain@novell.com>
165         * Dictionary.cs: properly reset all compounds enumerators.
166         Fixes #429530.
168 2008-09-12  Jb Evain  <jbevain@novell.com>
170         * Dictionary.cs: (ToTValue) allow null values to be added for non
171         value types TValues to the dictionary when using the
172         non generic IDictionary. Fixes #425693.
174 2008-06-16  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
176         * String.cs: Dictionary: Do not change the index data when using the indexer for
177         an already existing index. This is somewhat illogical and breakes obscure code situations
179 2008-05-29  Juraj Skripsky <js@hotfeet.ch>
181         * List.cs (RemoveAll, Shift): Fix leak by clearing empty array
182         items.
184 2008-04-29  Juraj Skripsky <js@hotfeet.ch>
186         * Dictionary.cs (Clear, Remove): Clear empty slots in keySlots 
187         and valueSlots. Otherwise the garbage collector cannot reclaim 
188         the referenced key/value. Fixes bug #384723.
190 2008-04-02  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>
192         * KeyNotFoundException.cs
193         * KeyValuePair.cs: Fix parameter names
195 2008-03-21  Sebastien Pouliot  <sebastien@ximian.com>
197         * EqualityComparer.cs: Add null checks in GetHashCode. Fix bug 
198         #372892
200 2007-11-05  Sebastien Pouliot  <sebastien@ximian.com>
202         * Dictionary.cs: Ensure that the non-generic CopyTo works on Array.
203         Fix #322783
205 2007-10-31  Miguel de Icaza  <miguel@novell.com>
207         * Dictionary.cs: Do not increment curTableItem when we return
208         false.   Was not necessary, just a defensive move.
210 2007-10-10  Juraj Skripsky <js@hotfeet.ch>
212         * Dictionary.cs (Enumerator.MoveNext): Handle the case where we
213         had already reached the end. Fixes bug #332534.
215 2007-08-20  Jb Evain  <jbevain@novell.com>
217         * List.cs (AddCollection): return early if the collection
218         to be added is empty.
220 2007-08-08  Atsushi Enomoto  <atsushi@ximian.com>
222         * Dictionary.cs : [Comvisible(true)]->[ComVisible(false)].
224 2007-06-23  Marek Safar <marek.safar@gmail.com>
226         * List.cs: Make CheckMatch static.
227         
228 2007-06-20  Juraj Skripsky <js@hotfeet.ch>
230         * Dictionary.cs: Optimize and add implementation notes. Use a "mini-heap"
231         to store the linked lists instead of the regular heap. Split arrays of
232         structs into separate arrays to make the GC's life simpler (see bug 81879
233         for details). Make class serialization compatible with MS.NET.
235         * EqualityComparer.cs: Rename IEquatableOfTEqualityComparer<T> to
236         GenericEqualityComparer<T> to fix binary serialization compatibility
237         with MS.
239 2006-04-16  Jonathan Chambers  <joncham@gmail.com>
241         * List.cs: Clear entry in RemoveAt after removing item. 
242         Fixes bug #81387.
243         
244 2007-03-27  Alan McGovern <alan.mcgovern@gmail.com>
246         * List.cs: Optimized several methods to increase performance
248 2007-03-21  Juraj Skripsky <js@hotfeet.ch>
250         * List.cs (FindAllStackBits): Small optimization to the new code.
251         Built resulting List<T> directly as an array, wrap it in a List<T>
252         afterwards. Stop the filling of the result array as soon as all
253         matching items have been processed.
255 2007-03-20  Juan Cristóbal Olivares <juancri@gmail.com>
257         * List.cs (FindAll): Optimize FindAll using a bitmask to determine
258         the number of positive matches, this increases the performance in
259         all cases below 10,000,000 elements extensively:
261         100 elements:
262         old method:             00:00:00.0126610 (26x)
263         stackalloc bit method:  00:00:00.0004750 (1x)
264         array bit method:       00:00:00.0010700 (2x)
265         heap bit method:        00:00:00.0038830 (8x)
267         1,000 elements:
268         old method:             00:00:00.0139250 (24x)
269         stackalloc bit method:  00:00:00.0005670 (1x)
270         array bit method:       00:00:00.0010890 (2x)
271         heap bit method:        00:00:00.0034920 (6x)
273         10,000 elements:
274         old method:             00:00:00.0136110 (12x)
275         stackalloc bit method:  00:00:00.0011240 (1x)
276         array bit method:       00:00:00.0016450 (1.4x)
277         heap bit method:        00:00:00.0043110 (3x)
279         50,000 elements:
280         old method:             00:00:00.0175970 (3x)
281         stackalloc bit method:  00:00:00.0085630 (1.5x)
282         array bit method:       00:00:00.0055010 (1x)
283         heap bit method:        00:00:00.0099590 (1.8x)
285         100,000 elements:
286         old method:             00:00:00.0210330 (2x)
287         array bit method:       00:00:00.0100430 (1x)
288         heap bit method:        00:00:00.0154150 (1.5x)
290         1,000,000 elements:
291         old method:             00:00:00.1243730 (1.2x)
292         array bit method:       00:00:00.0973110 (1x)
293         heap bit method:        00:00:00.1285650 (1.3x)
295         10,000,000 elements:
296         old method:             00:00:00.9252570 (1x)
297         array bit method:       00:00:00.9632300 ( 1.05x)
298         heap bit method:        00:00:01.1098490 (1.20x)
300 2007-03-08  David Mitchell <dmitchell@logos.com>
302         * List.cs: Fix the case where List.set_Item(int index) throws
303         inappropriate exception when index is equal to List.Count
305         List.IndexOf(object item) and IList.Contains(object item) throw
306         exceptions when given invalid types.
308         IList.Add(object item) throws InvalidCastException when item is
309         not of the correct type.
311 2007-03-08  Gert Driesen  <drieseng@users.sourceforge.net>
313         * Comparer.cs: Renamed IComparableOfTComparer<T> to GenericComparer<T>
314         to fix binary serialization compatibility with MS.
316 2007-03-05  David Mitchell <dmitchell@logos.com>
318         * Dictionary.cs: An instance of Dictionary<TKey,TValue> is
319         supposed to throw a KeyNotFoundException when 
320         the user attempts to retrieve the value associated with a key that
321         is not in the dictionary.
323         On the other hand, an instance of IDictionary is supposed to
324         return null in similar circumstances.
326 2007-03-05  David Mitchell <dmitchell@logos.com>
328         * List.cs: Fix InsertRange bug (80930).
330 2006-09-15  Gert Driesen  <drieseng@users.sourceforge.net>
332         * List.cs: Fixed binary serialization compatibility with MS.NET.
333         Increment version whenever _items is modified; this fixes version
334         checks in Enumerator.
336 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
338         * Dictionary.cs: Speed up get_Item/set_Item/GetPrev () a bit. Increase capacity
339         specified by the user so 'capacity' elements can really be added without resizing.
341 2006-07-12  Zoltan Varga  <vargaz@gmail.com>
343         * Dictionary.cs: Swap order of parameters to cmp.Equals () to improve 
344         compatibility with MS.NET and strange Equals () implementations.        
346 2006-05-17  Kazuki Oikawa  <kazuki@panicode.com>
348         * List.cs : implemented Sort(Comparison <T>).
350 2006-05-08  Atsushi Enomoto  <atsushi@ximian.com>
352         * List.cs : use proper comparer in Contains(), IndexOf() and
353           LastIndexOf(). Patch by Kazuki Oikawa. Fixed bug #77277.
355 2006-03-16  Ankit Jain  <jankit@novell.com>
357         * List.cs (CheckIndex): Check for -ve indices and allow index == size.
358         (Insert): Use CheckIndex.
360 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
362         * List.cs: Applied patch from <kazuki@panicode.com>. Fixes #77504.
364 2006-02-10  Martin Baulig  <martin@ximian.com>
366         * Comparer.cs
367         (IComparableOfTComparer): `T' must implement `IComparable<T>' and
368         not `IComparable'.
370 Tue Jan 24 18:22:54 CET 2006 Paolo Molaro <lupus@ximian.com>
372         * Dictionary.cs: avoid long reminder operations.
374 2006-01-23  Raja R Harinath  <rharinath@novell.com>
376         Speed up remove.  Use 'dict[k]=v' as a self-tuning hint.
377         * Dictionary.cs (GetSlot): Move data-structure traversal to ...
378         (GetPrev): ... this.  Returns the slot prior to the place we're
379         looking for, or null if that place is the head of the chain.
380         (Remove): Use it.
381         (this.set): Use it.  Implement move-to-front on set.
383         * Dictionary.cs (ToTKey, ToTValue): New helpers to convert from
384         type 'object'.
385         (IDictionary.this, IDictionary.Add): Use them.
386         (IDictionary.Contains, IDictionary.Remove): If the types don't
387         match, do nothing.
389 2006-01-19  Raja R Harinath  <rharinath@novell.com>
391         Fix to pass new nunit tests.
392         * Dictionary.cs (ShimEnumerator): New class.  Implement the
393         requirement that ((IDictionary) foo).GetEnumerator ().Current has
394         type DictionaryEntry.
395         (IDictionary.GetEnumerator): Use ShimEnumerator.
396         (Enumerator.Current): Now has type KeyValuePair<TKey, TValue>.
397         (Enumerator.MoveNext): Use VerifyState.
398         (Enumerator.VerifyState): Move validation of 'current' field to ...
399         (Enumerator.CurrentSlot): ... this.
400         (Enumerator.Current, Enumerator.IDictionaryEnumerator.Entry):
401         Use CurrentSlot.
402         (CopyTo, ICollection.CopyTo): Use subtle reasoning to replace a
403         '>=' with a '>'.  Don't throw an ArgumentException when
404         index==array.Length && Count==0.
405         (KeyCollection.CopyTo, ValueCollection.CopyTo): Likewise, and thus
406         obviate the need to check (dictionary.Count == 0).
408 2005-12-20  Sebastien Pouliot  <sebastien@ximian.com>
410         * List.cs: Applied Atsushi's patch for Sort (bug 76361) now that the
411         generic versions of Array.Sort are implemented.
413 2005-12-19  Sebastien Pouliot  <sebastien@ximian.com>
415         * Dictionary.cs: Added [Serializable] attribute to both inner 
416         Enumerator struct in Key and Value inner collection classes.
417         * EqualityComparer.cs: Added missing IEqualityComparer interface.
418         * List.cs: Added [Serializable] attribute to both inner Enumerator
419         struct.
421 2005-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
423         * Dictionary.cs: Fixed ICollection.CopyTo to use DictionaryEntry. Fixed
424         Key and Value CopyTo not to throw exception if the dictionary is empty
425         (fix bug #77019).
426         * List.cs: Fix exception reporting to match MS behaviour (2.0 final).
428 2005-11-19  Zoltan Varga  <vargaz@gmail.com>
430         * KeyNotFoundException.cs: Add default message.
432 2005-09-18  Miguel de Icaza  <miguel@novell.com>
434         * Dictionary.cs: Change style for internal fields.
436         If the capacity is zero, set the capacity to our default size as 0
437         is an allowed parameter in .NET
439 2005-08-10  Kamil Skalski  <nazgul@nemerle.org>
441         * KeyValuePair.cs, Dictionary.cs: Change Key and Value to properties to match
442         .NET 2.0 July CTP. Update its use in Dictionary, since now we
443         cannot write to them.
444         
445 2005-07-10  Kamil Skalski <nazgul@nemerle.org>
447         * Comparer.cs, EqualityComparer.cs: Use MakeGenericType instead of BindGenericParameters.
450 2005-06-27  Raja R Harinath  <rharinath@novell.com>
452         Introduce some thread-safety by removing the modify-on-read
453         move-to-front heuristic.
454         * Dictionary.cs (_enumeratorGeneration, _enumerators): Remove.
455         (Count): Add internal property set.  Invalidate enumerators when
456         Count is changed.  Change all references of _usedSlots to Count.
457         (this): Invalidate enumerators when the value of some slot is
458         changed, even if the layout of the data-structure isn't modified.
459         (DoHash): Remove null-key check.  All codepaths leading to this
460         function already have the check.
461         (GetSlot): Remove move-to-front heuristic.
462         (Remove): Update.
464 2005-06-24  Martin Baulig  <martin@ximian.com>
466         * IDictionary.cs: Use the same type parameter names than on MS.
468         * IDictionary.cs, Dictionary.cs: We don't need the `CLSCompliant'
469         attribute here.
471 2005-06-23  Martin Baulig  <martin@ximian.com>
473         * *.cs: Removed the `[ComVisible(false)]' attributes everywhere.
475 2005-06-22  Raja R Harinath  <rharinath@novell.com>
477         * Dictionary.cs (_generation, _enumeratorGeneration, _enumerators):
478         New fields to implement fail-fast semantics.  All code that
479         modifies the table increment _generation.
480         (GetSlot): Use _hcp to compare keys.  Return the slot containing
481         the key, rather than the index.  Avoid move-to-front heuristic
482         when there's an enumerator coursing through the table.
483         (this, Add, TryGetValue, ContainsKey, Remove): Update to change.
484         (Enumerator.Enumerator): Save the generation of the dictionary.
485         (Enumerator.Dispose): Inform dictionary that the enumerator is no more.
486         (Enumerator.MoveNext, Enumerator.VerifyState): Fail if the
487         dictionary has been modified.
489 2005-06-20  David waite  <mass@akuma.org>
491         * List.cs : substantial changes and optimizations
492         (AddCollection, AddEnumerable): new internal specializations of AddRange
493         (AsReadOnly): returns specific IList<T> to match ms.net 2.0b2 api.
494         (Clear): reset size to zero on clear
495         (ConvertAll): catch null converter, use Add to prevent OutOfBounds
496         exception
497         (FindAll, FindIndex, FindLast, FindLastIndex, RemoveAll, TrueForAll): 
498         check for null match
499         (FindLastIndex): correct index parameters based on ms.net 2005b2 behavior
500         (ForEach): catch null action
501         (CheckIndex): new internal function similar to CheckRange for functions
502         which only provide a starting index
503         (InsertCollection, InsertEnumerable): new internal specializations of
504         InsertRange
505         (ReadOnlyList): removed, ReadOnlyCollection in 
506         System.Collections.ObjectModel is used instead now 
507     
508 2005-06-16  David Waite  <mass@akuma.org>
510         * Dictionary.cs (EnumerationMode): Remove.
511         (Enumerator): Remove return type flag - legacy return is expected to
512         always return a DictionaryEntry
513         (Enumerator): Make constructor internal, it is not public on ms.net 
514         beta 2
515         (VerifyState): Added method to check state preconditions and throw
516         appropriate exceptions.
517         (KeyCollection,ValueCollection): Mark sealed to match ms.net beta 2
518         (KeyCollection.Enumerator._hostEnumerator): make exact struct type,
519         rather than boxing and using by interface
520         (KeyCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
521         (ValueCollection.Enumerator._hostEnumerator): make exact struct type,
522         rather than boxing and using by interface
523         (ValueCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
524         * EqualityComparer.cs (DefaultComparer, IEquatableOfTEqualityComparer):
525         Mark as serializable.
527 2005-06-16  Raja R Harinath  <rharinath@novell.com>
529         * Dictionary.cs (GetKeys, GetValues): Remove.
530         (SetThreshold): New function to calculate the resize threshold.
531         (CopyTo): Don't use foreach syntax.
532         (ContainsValue): Likewise.  Use default equality comparer of the
533         value type.
534         (GetObjectData): Use CopyTo to copy into temporary array.  Don't
535         save redundant _usedSlots and _threshold.
536         (OnDeserialization): Rewrite.
537         (ICollection<>.CopyTo): Forward to CopyTo.
538         (Enumerator._nextIndex): Rename to from _index.
539         (Enumerator._next, Enumerator.FixNext): Remove.
540         (Enumerator.Current): Rewrite to avoid need for _next.
541         (Enumerator.IEnumerator.Reset): Update.
542         (KeyCollection): Is also IEnumerable<TKey> and IEnumerable.
543         Update methods to conform to standard.
544         (KeyCollection.GetEnumerator): Restore.  Return the correct type.
545         (KeyCollection.Enumerator): Rename from KeyEnumerator.  Simple
546         wrapper that forwards to Dictionary<,>.Enumerator.
547         (ValueCollection): Likewise.
549 2005-06-12  David Waite  <dwaite@gmail.com>
551         * IKeyComparer.cs: removed
552         * KeyValuePair.cs: add same-style ToString as ms.net Beta2 impl,
553         make Serializable, use correct field names.
554         * Dictionary.cs: Miscelaneus clean-ups, added serialization
555         support, use Hashtable prime functions
557 2005-06-12  Ben Maurer  <bmaurer@ximian.com>
559         * Comparer.cs, EqualityComparer.cs: Important performance hack:
560         make sure that we don't box stuff and do reflection on every
561         comparison. We use reflection at cctor time rather than on every
562         request.
564 2005-06-09  Raja R Harinath  <rharinath@novell.com>
566         Simplify Enumerator.MoveNext to make it "obviously correct", rather
567         than require subtle reasoning about the state of various variables.
568         * Dictionary.cs (Enumerator._isValid): Remove.  Replace all uses
569         with "_current == null".
570         (Enumerator._validNodeVisited): Remove.
571         (Enumerator._next): New.  Holds the the next position.
572         (Enumerator.FixNest): New helper function that ensures that _next
573         has the right value.
574         (Enumerator.MoveNext): Simplify.  Now, copies _next to _current
575         and advances _next if possible.
577 2005-06-08  Martin Baulig  <martin@ximian.com>
579         * Dictionary.cs (Dictionary.KeyEnumerator): Removed the public
580         GetEnumerator() function since it's returning the wrong type.
581         (Dictionary.ValueEnumerator): Likewise.  Fix #75073.
583 2005-06-08  Ankit Jain <ankit@corewars.org>
585         * Dictionary.cs (Dictionary<TKey, TValue>.MoveNext): Allow traversal of chain in last slot
586         of the table. Fixes #75168.
588 2005-06-04  Ben Maurer  <bmaurer@ximian.com>
590         * *.cs: 2.0 api fixups
592 2005-05-26  Miguel de Icaza  <miguel@novell.com>
594         * Dictionary.cs: Remove the `Hash' name from the Dictionary
595         internal classes, make them public.
597 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
599         * Dictionary.cs: Fix a warning.
601         * IDictionary.cs: Add missing TryGetValue method.
603 2005-05-19  Geoff Norton  <gnorton@customerdna.com>
605         * List.cs (Insert): Resize the array before the shift if needed
607 2005-05-18  Miguel de Icaza  <miguel@novell.com>
609         * List.cs (GetRange): Implement.
611         Do not do lazy loading of data.  Not worth adding an
612         extra check, and not worth the bugs. 
614         This decision wont be discussed until: a) a full List regression
615         test suite exists and  b) performance benchmarks are created.  (b)
616         depends on (a) or the argument wont even be heard. 
618 2005-05-13  Atsushi Enomoto  <atsushi@ximian.com>
620         * Queue.cs, Stack.cs: moved to System.dll
622 2005-05-06  Martin Baulig  <martin@ximian.com>
624         * *.cs: Add CLSCompliant(true) where missing.
626 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
628         * *.cs: Remove CLSCompliant(false) attributes.
630 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
632         * List.cs: Applied patch from Mart Roosmaa (roosmaa@gmail.com). 
633         Fix Insert method. Fixes #74824.
635 2005-04-29  Martin Baulig  <martin@ximian.com>
637         Reflect latest spec changes.
639         * IEnumerable.cs (IEnumerable<T>): Implement IEnumerable.
640         * IEnumerator.cs (IEnumerator<T>): Implement IEnumerator.
642 2005-04-29  Raja R Harinath  <rharinath@novell.com>
644         Remove FIXME.
645         * Dictionary.cs (Slot<K,V>): Move to ...
646         (Dictionary<K,V>.Slot): ... here.
648 2005-04-28  Martin Baulig  <martin@ximian.com>
650         * Dictionary.cs, Queue.cs, Stack.cs, List.cs, Comparer.cs: Don't
651         duplicate type parameters in the nested classes.
653 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
655         * List.cs: Fix ToArray () method. Fixes #74675.
657 2005-04-04  Raja R Harinath  <rharinath@novell.com>
659         * Dictionary.cs: Update to draft of Feb 27.  Add some argument checks.
660         (GetSlot): Don't throw KeyNotFoundException.  Unify all list
661         traversals in here.  Move found key to head of chain, and return
662         the index of the chain suitable for/containing the key.
663         (Item, Add, Remove): Simplify, and remove FIXMEs.
664         (Resize): Reuse linked list nodes from old table.
665         (Dictionary.CopyTo, HashKeyCollection.CopyTo, HashValueCollection.CopyTo):
666         Add some argument checks.
668 2005-04-02  Ben Maurer  <bmaurer@ximian.com>
670         * Dictionary.cs: Real impl.
672 2005-02-21  Martin Baulig  <martin@ximian.com>
674         * IComparer.cs: Reverted the last change here, Equals() and
675         GetHashCode() have been removed a long time ago.
677 2005-02-21  Kazuki Oikawa  <kazuki@panicode.com>
679         * IComparer.cs, IDictionary.cs: Corrected the wrong declaration.
681 2005-02-11  Carlos Alberto Cortez <calberto.cortez@gmail.com>
683         * List.cs: Added internal ReadOnlyCollection class,
684         which is a wrapper for a read only IList<T> version of the List<T>.
685         Used in AsReadOnly () method.
686         
687 2005-02-07  Ben Maurer  <bmaurer@ximian.com>
689         * List.cs (CheckRange): Comparison error. Duh!
690         (Shift): really deal with neg. delta. Also, adjust the `size'.
692         Based on a patch from Marc Denty (marc.denty@libertysurf.fr).
694         Fixes #72258.
696 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
698         * Queue.cs: `duh' bugs.
700 2004-12-27  Ben Maurer  <bmaurer@ximian.com>
702         * Stack.cs: Stupid bug fixes.
704         * List.cs: My new (mostly untested ;-) impl of List
705         <T>. Implements most of the API.
707 2004-12-26  Ben Maurer  <bmaurer@ximian.com>
709         * Queue.cs: New, non-linked-list based impl.
711 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
713         * Comparer.cs: Update this class.
715 2004-11-25  Carlos Alberto Cortez <calberto.cortez@gmail.com>
717         * List.cs: Enumerator changed to behave like the MS impl.
718         
719 2004-11-25  Ben Maurer  <bmaurer@ximian.com>
721         * Stack.cs: New, list based impl. Waiting for some gmcs fixes.
723 2004-11-10  Martin Baulig  <martin@ximian.com>
725         * IDictionary.cs (IDictionary): `IsReadOnly' and `Clear' are
726         inherited from ICollection.
728 2004-09-20  Gert Driesen <drieseng@users.sourceforge.net>
730         * ReadOnlyCollection.cs: Moved to System assembly
731         * Collection.cs: Moved to System assembly
733 2004-09-07  Carlos Alberto Cortez <carlos@unixmexico.org>
735         * ReadOnlyCollection.cs: New file and changes to 
736         Collection.cs tu support it.
738 2004-09-05  Marek Safar <marek.safar@seznam.cz>
740         * Dictionary.cs: Added new file (no implementation).
742 2004-09-03  Carlos Alberto Cortez <carlos@unixmexico.org>
744         * Collection.cs: Small improvements related to
745         style, resizing, and type checking.
747 2004-09-01  Carlos Alberto Cortez <carlos@unixmexico.org>
749         * Collection.cs: New file.
751 2004-08-04  Martin Baulig  <martin@ximian.com>
753         * List.cs (List<T>.Enumerator): Made this a struct.
754         (List<T>.GetEnumerator): The public method now returns the
755         `Enumerator' struct.
757 2004-08-02  Martin Baulig  <martin@ximian.com>
759         Started to do some API review.
761         * ICollection.cs (ICollection<T>): Added IsReadOnly, Add, Clear,
762         Contains and Remove.
764         * IList.cs (IList<T>): Removed Add, Clear, Constains, Remove,
765         IsReadOnly and IsFixedSize.
767 2004-08-02  Martin Baulig  <martin@ximian.com>
769         * IList.cs (IList.Add): Changed return type to void.
771         * List.cs (List.Add): Likewise.
773 2004-07-16  Martin Baulig  <martin@ximian.com>
775         * IComparable.cs: Removed, it's in System.
777 2004-07-12  Duncan Mak  <duncan@ximian.com>
779         * KeyNotFoundException.cs: Added.
781 2004-06-18  Ben Maurer  <bmaurer@ximian.com>
783         * Comparer.cs: v2 impl. Some workarounds for gmcs are enabled.
785 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
787         * Queue.cs: Fixed possible integer overflow in CopyTo methods.
788         * Stack.cs: Fixed possible integer overflow in CopyTo methods.
790 2004-03-13  Martin Baulig  <martin@ximian.com>
792         * Stack.cs, Queue.cs, List.cs: Implement the non-generic interfaces.
794 2004-03-11  Martin Baulig  <martin@ximian.com>
796         * List.cs: New file.
798 2004-03-11  Martin Baulig  <martin@ximian.com>
800         * Stack.cs, Queue.cs: Just use `Node' for the nested class, not
801         `Node<T>' (which would create another type parameter `T'
802         overriding `T' from the outer class).   
804 2004-02-23  Martin Baulig  <martin@ximian.com>
806         * Stack.cs, Queue.cs: New files.  Hmm, looks like I forgot to add
807         them to CVS; they're already on my hard disk since December or so.
809 2003-12-08  Martin Baulig  <martin@ximian.com>
811         * *.cs: require GENERICS.
813 2003-11-08 Ben Maurer  <bmaurer@users.sourceforge.net>
815         * *.cs: require NET_2_0 and GENERICS
817 2003-11-07 Ben Maurer  <bmaurer@users.sourceforge.net>
819         * IComparable.cs, IComparer.cs, IDictionary.cs, IKeyComparer.cs, KeyValuePair.cs
820         Added.
822 2003-11-06  Martin Baulig  <martin@ximian.com>
824         * ICollection.cs, IList.cs, IEnumerator.cs, IEnumerable.cs:
825         Started to implement the System.Collections.Generic classes.