* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System / System.Text.RegularExpressions / ChangeLog
index 181406cfcdeffe1217cd7aec4538f6173b129cf2..7793b894d6da09562e673dad9048c5a03e58446f 100644 (file)
@@ -1,3 +1,315 @@
+2006-05-30  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * CaptureCollection.cs: Removed virtual keyword to fix API mismatches.
+       * MatchCollection.cs: Removed virtual keyword to fix API mismatches.
+       * GroupCollection.cs: Removed virtual keyword to fix API mismatches.
+
+2006-05-08  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78278
+       Remove 65535-limit on number of repetitions matched by a pattern.
+       We still have a 65535 limit on the length of a pattern and the
+       number of groups in a pattern.
+       * compiler.cs (PatternCompiler.EmitCount): New.  Emits an int as
+       two ushorts into the program stream.
+       (EmitInfo, EmitRepeat, EmitFastRepeat): Use it to emit integers
+       rather than shorts.
+       * interpreter.cs (Intepreter.ReadProgramCount): Read an int
+       emitted into the program stream.
+       (Interpreter): Use it.  Update counts.
+       (Interpreter.Eval) [OpCode.Repeat, OpCode.FastRepeat]: Likewise.
+       * parser.cs (ParseGroup): Pass 0x7ffffff as the max value for '*'
+       and '+' repetition patterns.
+       * arch.cs (Info, Repeat, FastRepeat): Update description.
+
+2006-04-18  Raja R Harinath  <rharinath@novell.com>
+
+       Treat fixed repetitions of simple regexes as simple too.
+       * syntax.cs (Expression.IsComplex): Make abstract.
+       (Group.IsComplex, Alternation.IsComplex): Move ...
+       (CompositeExpression.IsComplex): ... here.
+       (Group.GetAnchorInfo): Reduce allocations.  Avoid creating another
+       ArrayList, and use a StringBuilder to build up the string.
+       (Repetition.GetAnchorInfo): Use a StringBuilder to build up the string.
+       (ExpressionAssertion.IsComplex): Override.
+
+2006-04-17  Florian Gross  <flgr@ccan.de>
+           Raja R Harinath  <rharinath@novell.com>
+
+       * syntax.cs (CharacterClass.Compile): Emit categories after the
+       character intervals so that the evaluator can pick up the
+       'IgnoreCase' flag.
+
+2006-04-07  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78007
+       * interpreter.cs (Interpreter.Eval) [Anchor, Position.StartOfString]:
+       Don't reset 'ptr' to 0 during forward scan.
+
+       Fix #76345
+       * interpreter.cs (Interpreter.FastEval) [FastRepeat]: If the first
+       tail operation has a 'negate' flag, avoid the "match next char"
+       optimization.
+
+       Fix #69269
+       * arch.cs (OpCode.NotCategory): New.  Stands for matching a
+       character _not_ from the given category.
+       * debug.cs (DisassembleBlock): Handle it.
+       * compiler.cs (ICompiler.EmitNotCategory): New.
+       (Compiler.EmitNotCategory): New.  Emit OpCode.NotCategory.
+       * syntax.cs (CharacterClass.Compile): Don't conflate negation of
+       the character class and negation of the category.  Use
+       EmitNotCategory.
+       * interpreter.cs (Interpreter.Eval): Pass OpCode.NotCategory to
+       EvalChar.
+       (Interpreter.EvalChar): Handle it.
+
+2006-04-06  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77487
+       * interpreter.cs (Eval) [Until, FastUntil]: Set 'deep' to null
+       when evaluating the tail.  Ensure that backtracks don't confuse
+       the recursion vs. iteration detector.
+
+2006-04-03  Raja R Harinath  <rharinath@novell.com>
+
+       * interpreter.cs (Eval) [Until, lazy]: Avoid extra evaluation on a
+       degenerate match.
+
+2006-03-30  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #77626
+       * parser.cs (Parser.ParseCharacterClass): Don't automatically
+       assume there's a range when we see '-'.  Ensure that we have seen
+       at least one other character, and that we aren't already parsing a
+       range.  Handle some more errors.
+
+2005-12-19  Kornél Pál  <kornelpal@hotmail.com>
+
+       * Regex.cs: Added support for regular expressions compiled to
+         assemblies by compiling the pattern. This solution ignores existing
+         CIL code but provides full support for regular expression classes
+         compiled by MS.NET.
+
+2005-11-21  Sebastien Pouliot  <sebastien@ximian.com> 
+
+       * CaptureCollection.cs: Fixed length check.
+       * Group.cs: Added missing validation for Synchronized method.
+       * Match.cs: Added missing validation for Synchronized and Result 
+       methods.
+       * MatchEvaluator.cs: Added [Serializable] for 2.0 profile.
+       * RegexCompilationInfo.cs: Added missing property validation.
+       * Regex.cs: Implemented UseOptionC and UseOptionR protected methods
+       (now documented). Fixed API for 2.0 profile.
+       * RegexRunner.cs: Stubbed CharInClass for 2.0 profile.
+
+2005-11-17  Sebastien Pouliot  <sebastien@ximian.com> 
+       * Match.cs: Removed the ": base ()" on the private ctor as it is
+       unrequired and cause an extra public ctor to added (bug #76736).
+       * MatchCollection.cs: Add missing virtual to indexer property.
+
+2005-09-23  Raja R Harinath  <rharinath@novell.com>
+
+       * interpreter.cs (Interpreter.Eval) [OpCode.Until]: Invert the
+       sense of a test to reflect the code re-organization.
+
+2005-09-22  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #72152, #72989.
+       * interpreter.cs (Interpreter.Eval) [OpCode.Until]: Avoid some
+       cases of recursion when dealing with eager quantifiers too.  We
+       now avoid recursion when handling the innermost quantifier.
+       (Interpreter.IntStack, Interpreter.stack): New.  Stack to help
+       implement backtracking in eager quantifiers.
+
+2005-09-21  Raja R Harinath  <rharinath@novell.com>
+
+       * interpreter.cs (Interpreter.Eval) [OpCode.Until]: Avoid some
+       cases of recursion when dealing with the minimum count and lazy
+       quantifiers.
+
+2005-08-23  Raja R Harinath  <rharinath@novell.com>
+
+       * regex.cs: Remove.  Split into ...
+       * MatchEvaluator.cs, Regex.cs, RegexCompilationInfo.cs, 
+       RegexOptions.cs: ... these.  Now every publicly exposed type in
+       this namespace has its own file.
+
+2005-07-21  Florian Gross  <flgr@ccan.de>
+
+       * Fixed a bug in category.cs that caused ECMAScript \d to fail.
+
+2005-07-13  Raja R Harinath  <rharinath@novell.com>
+
+       Make even more lazier.
+       * MatchCollection.cs (TryToGet): Don't generate match i+1 when
+       we're looking for match i.  Change post-conditions.
+       (FullList): New helper property.  Ensures the list is fully populated.
+       (Count, CopyTo): Use it.
+       (Enumerator.Current): Update to new post-conditions of TryToGet.
+       (Enumerator.MoveNext): Likewise.  Don't modify index if we're
+       beyond the end.
+
+2005-07-08  Raja R Harinath  <rharinath@novell.com>
+
+       * MatchCollection.cs: Convert to incremental mode.
+       * regex.cs (Regex.Matches): Update.  Pass responsibility of
+       generating all matches to MatchCollection.
+
+2005-06-14  Raja R Harinath  <harinath@gmail.com>
+
+       * parser.cs (Parser.ConsumeWhitespace): Add bounds check.
+
+       Fix #74753.
+       * Match.cs (Match) [zero-argument variant]: Make private.
+       * GroupCollection (Item) [string variant]: Don't look for the
+       group number in an empty match.
+
+2005-06-10  Raja R Harinath  <rharinath@novell.com>
+
+       * interpreter.cs (Interpreter.GenerateMatch): Avoid allocating two
+       intermediate arrays to build the final result.
+       (Interpreter.GetGroupInfo, Interpreter.PopulateGroup): New helper
+       functions.
+       * CaptureCollection.cs (list): Change from ArrayList to list.
+       (SetValue): New internal helper, used by Interpreter.PopulateGroup.
+       (Enumerator): Remove helper class.
+       (IEnumerator.GetEnumerator): Just use list.GetEnumerator.
+       * GroupCollection.cs: Likewise.
+       * Group.cs (Group): Move responsibility of populating 'Captures'
+       to Interpreter.PopulateGroup.
+       * Match.cs (Match): Move responsibility of populating 'Groups' to
+       Interpreter.GenerateMatch.
+
+2005-05-25  Raja R Harinath  <rharinath@novell.com>
+
+       * replace.cs (ReplacementEvaluator.Compile): Rewrite to avoid
+       creating several intermediate strings.  Simplify internal
+       intermediate representation.
+       (ReplacementEvaluator.EvaluateAppend): New.  Version of Evaluate
+       that builds the result directly on a passed-in StringBuilder.
+       (ReplacementEvaluator.Evaluate): Just a wrapper around
+       EvaluateAppend.
+       * regex.cs (MatchAppendEvaluator): New internal delegate.
+       (Regex.Replace): Use MatchAppendEvaluator.
+       (Regex.Adapter): New class used to adapt a MatchEvaluator to a
+       MatchAppendEvaluator.
+
+2005-05-24  Raja R Harinath  <rharinath@novell.com>
+
+       * replace.cs (ReplacementEvaluator.CompileTerm): Fix group
+       returned by $+.
+
+2005-05-20  Ben Maurer  <bmaurer@ximian.com>
+
+       * regex.cs: Some memory allocation optimizations.
+
+2005-05-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #74735.
+       * replace.cs (ReplacementEvaluator.Compile): Allow CompileTerm to
+       fail and yet have advanced the pointer.  Append the scanned-over
+       portion to the "literal" being built.
+       (ReplacementEvaluator.CompileTerm): Don't throw any exceptions.
+       If a term cannot be recognized, just return null.
+
+       * compiler.cs (InterpreterFactory.GroupCount): Fix.  The 0'th
+       index corresponds to Opcode.Info.
+
+       * parser.cs (Parser.Unescape): If the string doesn't contain any
+       '\' character, don't allocate a new string.
+
+       * replace.cs (ReplacementEvalutator.Term.AppendResult): Rename
+       from GetResult.  Append to a passed-in StringBuilder rather than
+       return a string.
+       (ReplacementEvaluator.Evaluate): Update.
+       
+       * Capture.cs, Group.cs, Match.cs: New files split out of ...
+       * match.cs: ... this.  Remove.
+
+2005-02-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * parser.cs: stuff inside {} might not be a quantifier. Fixes
+       bug #69193.
+
+2005-01-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * quicksearch.cs: handle IgnoreCase when getting the shift distance.
+       Fixes bug #69065. Patch by mei@work.email.ne.jp.
+
+2005-01-08  Miguel de Icaza  <miguel@ximian.com>
+
+       * syntax.cs: Applied patch from mei@work.email.ne.jp to fix bug
+       #71077.
+
+       * parser.cs: Turns out that \digit sequences are octal sequences
+       (no leading zero is needed);  And the three octal digit rule
+       applies to the leading zero as well.
+
+       This fixes the Unescape method.
+
+2004-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * regex.cs: use NextMatch to move on to the next match. Fixes bug
+       #57274.
+
+2004-11-09  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * parser.cs : cast.
+
+2004-11-08  Ben Maurer  <bmaurer@ximian.com>
+
+       * replace.cs, parser.cs: Use stringbuilder for allocation sanity.
+
+2004-10-21  Joerg Rosenkranz  <joergr@voelcker.com>
+
+       * regex.cs: Fixed a bug introduced with the last patch which
+       prevented any replacements when a postive count is given.
+       This also happens in all overloads without count parameter.
+
+2004-10-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * regex.cs: in Replace, when count is negative, replacement continues
+       to the end of the string.
+
+       Fixes bug #68398. Patch by Jon Larimer.
+
+2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>
+
+       * RegexRunner.cs: fixed case mismatch of methods
+
+2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>
+
+       * RegexRunner.cs: marked TODO, added missing protected internal
+       fields, throw NotImplementedException in all methods
+
+2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>
+
+       * RegexRunnerFactory.cs: removed comment, no longer throw exception
+       from ctor
+       * regex.cs: fixed public API signature by renaming protected 
+       internal fields and adding destructor, added MonoTODO attribute to
+       fields and method that are not yet implemented, changed not 
+       implemented methods to throw NotImplementedException instead of
+       Exception, fixed names of field that are serialized
+
+2004-06-06  Jambunathan K <kjambunathan@novell.com>
+       
+       * parser.cs: Fixed issues with Regex.Unescape() identified as part of
+       debugging bug #58256. The original problem reported was about
+       inconsistency between the way we treat replacement patterns and the 
+       way microsoft treats the replacement patterns in Regex.Replace(). MS
+       implementation is buggy and doesn't honour escape sequences in the
+       replacement patterns, even though the SDK claims otherwise.
+
+       
+2004-06-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+       * syntax.cs: re-applied my patch from 2004-05-27 plus a fix which is
+       emitting a Category.All if both a category and its negated value are
+       present.
+
 2004-06-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * syntax.cs: reverting my previous patch. It causes bigger problems.