r175500 - Fix bug in LineState comparison function.

David Blaikie dblaikie at gmail.com
Tue Feb 19 09:35:29 PST 2013


On Tue, Feb 19, 2013 at 1:28 AM, Daniel Jasper <djasper at google.com> wrote:

> Author: djasper
> Date: Tue Feb 19 03:28:55 2013
> New Revision: 175500
>
> URL: http://llvm.org/viewvc/llvm-project?rev=175500&view=rev
> Log:
> Fix bug in LineState comparison function.
>
> The key bug was
>
>   if (Other.StartOfLineLevel < StartOfLineLevel) ..
>
> instead of
>
>   if (Other.StartOfLineLevel != StartOfLineLevel) ..
>
> Also cleaned up the function to be more consistent in the comparisons.
>
> Modified:
>     cfe/trunk/lib/Format/Format.cpp
>
> Modified: cfe/trunk/lib/Format/Format.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=175500&r1=175499&r2=175500&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/Format.cpp (original)
> +++ cfe/trunk/lib/Format/Format.cpp Tue Feb 19 03:28:55 2013
> @@ -394,20 +394,20 @@ private:
>
>      /// \brief Comparison operator to be able to used \c LineState in \c
> map.
>      bool operator<(const LineState &Other) const {
>

I would've thought this whole thing would've been less error prone to write
as:

return a < x.a &&
   b < x.b &&
   ...

is that not the case?


> -      if (Other.NextToken != NextToken)
> -        return Other.NextToken > NextToken;
> -      if (Other.Column != Column)
> -        return Other.Column > Column;
> -      if (Other.VariablePos != VariablePos)
> -        return Other.VariablePos < VariablePos;
> -      if (Other.LineContainsContinuedForLoopSection !=
> -          LineContainsContinuedForLoopSection)
> +      if (NextToken != Other.NextToken)
> +        return NextToken < Other.NextToken;
> +      if (Column != Other.Column)
> +        return Column < Other.Column;
> +      if (VariablePos != Other.VariablePos)
> +        return VariablePos < Other.VariablePos;
> +      if (LineContainsContinuedForLoopSection !=
> +          Other.LineContainsContinuedForLoopSection)
>          return LineContainsContinuedForLoopSection;
> -      if (Other.ParenLevel != ParenLevel)
> -        return Other.ParenLevel < ParenLevel;
> -      if (Other.StartOfLineLevel < StartOfLineLevel)
> -        return Other.StartOfLineLevel < StartOfLineLevel;
> -      return Other.Stack < Stack;
> +      if (ParenLevel != Other.ParenLevel)
> +        return ParenLevel < Other.ParenLevel;
> +      if (StartOfLineLevel != Other.StartOfLineLevel)
> +        return StartOfLineLevel < Other.StartOfLineLevel;
> +      return Stack < Other.Stack;
>      }
>    };
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130219/e1cef73d/attachment.html>


More information about the cfe-commits mailing list