[cfe-commits] r172601 - in /cfe/trunk: lib/Format/Format.cpp unittests/Format/FormatTest.cpp

Daniel Jasper djasper at google.com
Wed Jan 16 01:46:15 PST 2013


We currently have a specific formatting option for Type<Type<int>> .. But
yeah, instead having compatibility options seems like a good idea.


On Wed, Jan 16, 2013 at 10:42 AM, Chandler Carruth <chandlerc at google.com>wrote:

>
> On Tue, Jan 15, 2013 at 11:30 PM, David Blaikie <dblaikie at gmail.com>wrote:
>
>>
>> On Jan 15, 2013 11:21 PM, "Daniel Jasper" <djasper at google.com> wrote:
>> >
>> > Author: djasper
>> > Date: Wed Jan 16 01:19:28 2013
>> > New Revision: 172601
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=172601&view=rev
>> > Log:
>> > Never merge < and ::, as it produces different tokens.
>>
>> Shouldn't this be std-specific, since this works in C++11? Speaking of
>> which - what does clang-format do with the >> in nested template types?
>>
> Agreed on both fronts -- this needs to be conditioned on the standard
> version, and >> in nested templates should be handled similarly....
>
> That said, the problem is more tricky than it might seem -- we also need
> to support compilers which are missing support for this feature (most
> versions of GCC) and warnings which programmers use to notify them of this
> deviation between C++11 and C++98...
>
> I think essentially there are 4 buckets:
>
> C++98 features which need formatting (export maybe)
> C++11 features which need formatting (range-based for loops)
> C++98 compatibility formatting concerns (<:: and >> in templates)
> C++11 compatibility formatting concerns (I can't think of any, but they
> maybe exist)
>
> It seems like we should always support formatting all of the features, but
> allow selection of the compatibility target....
>
>>  >
>> > Before: vector<::Type> t;
>> > After:  vector< ::Type> t;
>> >
>> > Modified:
>> >     cfe/trunk/lib/Format/Format.cpp
>> >     cfe/trunk/unittests/Format/FormatTest.cpp
>> >
>> > Modified: cfe/trunk/lib/Format/Format.cpp
>> > URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=172601&r1=172600&r2=172601&view=diff
>> >
>> ==============================================================================
>> > --- cfe/trunk/lib/Format/Format.cpp (original)
>> > +++ cfe/trunk/lib/Format/Format.cpp Wed Jan 16 01:19:28 2013
>> > @@ -1176,6 +1176,10 @@
>> >           Right.is(tok::l_paren) || Right.is(tok::l_brace) ||
>> >           Right.is(tok::kw_true) || Right.is(tok::kw_false)))
>> >        return false;
>> > +    if (Left.is(tok::coloncolon))
>> > +      return false;
>> > +    if (Right.is(tok::coloncolon))
>> > +      return Left.isNot(tok::identifier) && Left.isNot(tok::greater);
>> >      if (Left.is(tok::less) || Right.is(tok::greater) ||
>> Right.is(tok::less))
>> >        return false;
>> >      if (Right.is(tok::amp) || Right.is(tok::star))
>> > @@ -1191,10 +1195,6 @@
>> >        return false;
>> >      if (Right.is(tok::l_square) && Right.Type != TT_ObjCMethodExpr)
>> >        return false;
>> > -    if (Left.is(tok::coloncolon) ||
>> > -        (Right.is(tok::coloncolon) &&
>> > -         (Left.is(tok::identifier) || Left.is(tok::greater))))
>> > -      return false;
>> >      if (Left.is(tok::period) || Right.is(tok::period))
>> >        return false;
>> >      if (Left.is(tok::colon))
>> >
>> > Modified: cfe/trunk/unittests/Format/FormatTest.cpp
>> > URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=172601&r1=172600&r2=172601&view=diff
>> >
>> ==============================================================================
>> > --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
>> > +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Jan 16 01:19:28 2013
>> > @@ -131,6 +131,10 @@
>> >    verifyFormat("Method(f1(f2, (f3())));");
>> >  }
>> >
>> > +TEST_F(FormatTest, ImportantSpaces) {
>> > +  verifyFormat("vector< ::Type> v;");
>> > +}
>> > +
>> >
>>  //===----------------------------------------------------------------------===//
>> >  // Tests for control statements.
>> >
>>  //===----------------------------------------------------------------------===//
>> >
>> >
>> > _______________________________________________
>> > cfe-commits mailing list
>> > cfe-commits at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>> _______________________________________________
>> 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/20130116/47b8bd99/attachment.html>


More information about the cfe-commits mailing list