On Mon, Jan 14, 2013 at 11:26 AM, Daniel Jasper <[email protected]> wrote:
> Do you think we need to? > No, but a comment telling me why not would have reduced the need for me to think through it :D > > > On Mon, Jan 14, 2013 at 11:25 AM, Manuel Klimek <[email protected]> wrote: > >> On Sun, Jan 13, 2013 at 5:10 PM, Daniel Jasper <[email protected]>wrote: >> >>> Author: djasper >>> Date: Sun Jan 13 10:10:20 2013 >>> New Revision: 172361 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=172361&view=rev >>> Log: >>> Stronger respect the input codes line breaks wrt. comments. >>> >>> clang-format should not change whether or not there is a line break >>> before a line comment as this strongly influences the percieved binding. >>> >>> User input: void f(int a, >>> // b is awesome >>> int b); >>> void g(int a, // a is awesome >>> int b); >>> Before: void f(int a, // b is awesome >>> int b); >>> void g(int a, // a is awesome >>> int b); >>> After: <unchanged from input> >>> >>> 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=172361&r1=172360&r2=172361&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/lib/Format/Format.cpp (original) >>> +++ cfe/trunk/lib/Format/Format.cpp Sun Jan 13 10:10:20 2013 >>> @@ -901,9 +901,12 @@ >>> if (Current.FormatTok.MustBreakBefore) { >>> Current.MustBreakBefore = true; >>> } else { >>> - if (Current.Type == TT_CtorInitializerColon || >>> Current.Parent->Type == >>> - TT_LineComment || (Current.is(tok::string_literal) && >>> - Current.Parent->is(tok::string_literal))) { >>> + if (Current.Type == TT_LineComment) { >>> + Current.MustBreakBefore = Current.FormatTok.NewlinesBefore > 0; >>> >> >> I assume we don't care about escaped newlines here? >> >> >>> + } else if (Current.Type == TT_CtorInitializerColon || >>> + Current.Parent->Type == TT_LineComment || >>> + (Current.is(tok::string_literal) && >>> + Current.Parent->is(tok::string_literal))) { >>> Current.MustBreakBefore = true; >>> } else { >>> Current.MustBreakBefore = false; >>> @@ -1219,7 +1222,10 @@ >>> return false; >>> >>> if (Right.is(tok::comment)) >>> - return !Right.Children.empty(); >>> + // We rely on MustBreakBefore being set correctly here as we >>> should not >>> + // change the "binding" behavior of a comment. >>> + return false; >>> + >>> if (Right.is(tok::r_paren) || Right.is(tok::l_brace) || >>> Right.is(tok::greater)) >>> return false; >>> >>> Modified: cfe/trunk/unittests/Format/FormatTest.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=172361&r1=172360&r2=172361&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/unittests/Format/FormatTest.cpp (original) >>> +++ cfe/trunk/unittests/Format/FormatTest.cpp Sun Jan 13 10:10:20 2013 >>> @@ -285,6 +285,14 @@ >>> verifyFormat("void f() {\n" >>> " // Doesn't do anything\n" >>> "}"); >>> + verifyFormat("void f(int i, // some comment (probably for i)\n" >>> + " int j, // some comment (probably for j)\n" >>> + " int k); // some comment (probably for k)"); >>> + verifyFormat("void f(int i,\n" >>> + " // some comment (probably for j)\n" >>> + " int j,\n" >>> + " // some comment (probably for k)\n" >>> + " int k);"); >>> >>> verifyFormat("int i // This is a fancy variable\n" >>> " = 5;"); >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> [email protected] >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>> >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
