r208088 - clang-format: [JS] Don't indent in goog.scope blocks.

Daniel Jasper djasper at google.com
Tue May 6 07:59:58 PDT 2014


On Tue, May 6, 2014 at 4:47 PM, Nico Weber <thakis at chromium.org> wrote:

> Having libFormat know about "goog.scope" seems pretty icky. Maybe this
> should be handled like the for loop macros instead?
>

I don't disagree, we should eventually move this out again.

On Tue, May 6, 2014 at 6:54 AM, Daniel Jasper <djasper at google.com> wrote:
> > Author: djasper
> > Date: Tue May  6 08:54:10 2014
> > New Revision: 208088
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=208088&view=rev
> > Log:
> > clang-format: [JS] Don't indent in goog.scope blocks.
> >
> > Before:
> >   goog.scope(function() {
> >     var x = a.b;
> >     var y = c.d;
> >   });  // goog.scope
> >
> > After:
> >   goog.scope(function() {
> >   var x = a.b;
> >   var y = c.d;
> >   });  // goog.scope
> >
> > Modified:
> >     cfe/trunk/lib/Format/UnwrappedLineParser.cpp
> >     cfe/trunk/unittests/Format/FormatTestJS.cpp
> >
> > Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=208088&r1=208087&r2=208088&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
> > +++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Tue May  6 08:54:10 2014
> > @@ -415,16 +415,34 @@ void UnwrappedLineParser::parseBlock(boo
> >    Line->Level = InitialLevel;
> >  }
> >
> > +static bool IsGoogScope(const UnwrappedLine &Line) {
> > +  if (Line.Tokens.size() < 4)
> > +    return false;
> > +  auto I = Line.Tokens.begin();
> > +  if (I->Tok->TokenText != "goog")
> > +    return false;
> > +  ++I;
> > +  if (I->Tok->isNot(tok::period))
> > +    return false;
> > +  ++I;
> > +  if (I->Tok->TokenText != "scope")
> > +    return false;
> > +  ++I;
> > +  return I->Tok->is(tok::l_paren);
> > +}
> > +
> >  void UnwrappedLineParser::parseChildBlock() {
> >    FormatTok->BlockKind = BK_Block;
> >    nextToken();
> >    {
> > +    bool GoogScope =
> > +        Style.Language == FormatStyle::LK_JavaScript &&
> IsGoogScope(*Line);
> >      ScopedLineState LineState(*this);
> >      ScopedDeclarationState DeclarationState(*Line,
> DeclarationScopeStack,
> >
>  /*MustBeDeclaration=*/false);
> > -    Line->Level += 1;
> > +    Line->Level += GoogScope ? 0 : 1;
> >      parseLevel(/*HasOpeningBrace=*/true);
> > -    Line->Level -= 1;
> > +    Line->Level -= GoogScope ? 0 : 1;
> >    }
> >    nextToken();
> >  }
> >
> > Modified: cfe/trunk/unittests/Format/FormatTestJS.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestJS.cpp?rev=208088&r1=208087&r2=208088&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/unittests/Format/FormatTestJS.cpp (original)
> > +++ cfe/trunk/unittests/Format/FormatTestJS.cpp Tue May  6 08:54:10 2014
> > @@ -91,5 +91,12 @@ TEST_F(FormatTestJS, SingleQuoteStrings)
> >    verifyFormat("this.function('', true);");
> >  }
> >
> > +TEST_F(FormatTestJS, GoogScopes) {
> > +  verifyFormat("goog.scope(function() {\n"
> > +               "var x = a.b;\n"
> > +               "var y = c.d;\n"
> > +               "});  // goog.scope");
> > +}
> > +
> >  } // end namespace tooling
> >  } // end namespace clang
> >
> >
> > _______________________________________________
> > 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/20140506/62c43f43/attachment.html>


More information about the cfe-commits mailing list