[cfe-commits] r172071 - in /cfe/trunk/lib/Format: Format.cpp UnwrappedLineParser.cpp UnwrappedLineParser.h

Alexander Kornienko alexfh at google.com
Thu Jan 10 10:36:26 PST 2013


Makes sense, will do. Though it was more a proof of concept rather than the
final version.


On Thu, Jan 10, 2013 at 7:32 PM, Nico Weber <thakis at chromium.org> wrote:

> On Thu, Jan 10, 2013 at 7:05 AM, Alexander Kornienko <alexfh at google.com>
> wrote:
> > Author: alexfh
> > Date: Thu Jan 10 09:05:09 2013
> > New Revision: 172071
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=172071&view=rev
> > Log:
> > Basic support for diagnostics.
> >
> > Summary: Uses DiagnosticsEngine to output diagnostics.
> >
> > Reviewers: djasper, klimek
> >
> > Reviewed By: djasper
> >
> > CC: cfe-commits
> >
> > Differential Revision: http://llvm-reviews.chandlerc.com/D278
> >
> > Modified:
> >     cfe/trunk/lib/Format/Format.cpp
> >     cfe/trunk/lib/Format/UnwrappedLineParser.cpp
> >     cfe/trunk/lib/Format/UnwrappedLineParser.h
> >
> > Modified: cfe/trunk/lib/Format/Format.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=172071&r1=172070&r2=172071&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Format/Format.cpp (original)
> > +++ cfe/trunk/lib/Format/Format.cpp Thu Jan 10 09:05:09 2013
> > @@ -18,8 +18,10 @@
> >
> >  #include "clang/Format/Format.h"
> >  #include "UnwrappedLineParser.h"
> > +#include "clang/Basic/Diagnostic.h"
> >  #include "clang/Basic/OperatorPrecedence.h"
> >  #include "clang/Basic/SourceManager.h"
> > +#include "clang/Frontend/TextDiagnosticPrinter.h"
> >  #include "clang/Lex/Lexer.h"
> >  #include <string>
> >
> > @@ -1222,10 +1224,11 @@
> >
> >  class Formatter : public UnwrappedLineConsumer {
> >  public:
> > -  Formatter(const FormatStyle &Style, Lexer &Lex, SourceManager
> &SourceMgr,
> > +  Formatter(clang::DiagnosticsEngine &Diag, const FormatStyle &Style,
> > +            Lexer &Lex, SourceManager &SourceMgr,
> >              const std::vector<CharSourceRange> &Ranges)
> > -      : Style(Style), Lex(Lex), SourceMgr(SourceMgr), Ranges(Ranges),
> > -        StructuralError(false) {
> > +      : Diag(Diag), Style(Style), Lex(Lex), SourceMgr(SourceMgr),
> > +        Ranges(Ranges), StructuralError(false) {
> >    }
> >
> >    virtual ~Formatter() {
> > @@ -1233,7 +1236,7 @@
> >
> >    tooling::Replacements format() {
> >      LexerBasedFormatTokenSource Tokens(Lex, SourceMgr);
> > -    UnwrappedLineParser Parser(Style, Tokens, *this);
> > +    UnwrappedLineParser Parser(Diag, Style, Tokens, *this);
> >      StructuralError = Parser.parse();
> >      unsigned PreviousEndOfLineColumn = 0;
> >      for (std::vector<UnwrappedLine>::iterator I =
> UnwrappedLines.begin(),
> > @@ -1284,6 +1287,7 @@
> >             1;
> >    }
> >
> > +  clang::DiagnosticsEngine &Diag;
> >    FormatStyle Style;
> >    Lexer &Lex;
> >    SourceManager &SourceMgr;
> > @@ -1296,7 +1300,14 @@
> >  tooling::Replacements reformat(const FormatStyle &Style, Lexer &Lex,
> >                                 SourceManager &SourceMgr,
> >                                 std::vector<CharSourceRange> Ranges) {
> > -  Formatter formatter(Style, Lex, SourceMgr, Ranges);
> > +  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new
> DiagnosticOptions();
> > +  TextDiagnosticPrinter DiagnosticPrinter(llvm::errs(), &*DiagOpts);
> > +  DiagnosticPrinter.BeginSourceFile(Lex.getLangOpts(), Lex.getPP());
> > +  DiagnosticsEngine Diagnostics(
> > +      llvm::IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()),
> &*DiagOpts,
> > +      &DiagnosticPrinter, false);
> > +  Diagnostics.setSourceManager(&SourceMgr);
> > +  Formatter formatter(Diagnostics, Style, Lex, SourceMgr, Ranges);
> >    return formatter.format();
> >  }
> >
> >
> > Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=172071&r1=172070&r2=172071&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
> > +++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Thu Jan 10 09:05:09 2013
> > @@ -17,6 +17,7 @@
> >
>  //===----------------------------------------------------------------------===//
> >
> >  #include "UnwrappedLineParser.h"
> > +#include "clang/Basic/Diagnostic.h"
> >  #include "llvm/Support/raw_ostream.h"
> >
> >  // Uncomment to get debug output from the UnwrappedLineParser.
> > @@ -110,12 +111,12 @@
> >    bool PreBlockRootTokenInitialized;
> >  };
> >
> > -UnwrappedLineParser::UnwrappedLineParser(const FormatStyle &Style,
> > -                                         FormatTokenSource &Tokens,
> > -                                         UnwrappedLineConsumer
> &Callback)
> > +UnwrappedLineParser::UnwrappedLineParser(
> > +    clang::DiagnosticsEngine &Diag, const FormatStyle &Style,
> > +    FormatTokenSource &Tokens, UnwrappedLineConsumer &Callback)
> >      : Line(new UnwrappedLine), RootTokenInitialized(false),
> > -      LastInCurrentLine(NULL), MustBreakBeforeNextToken(false),
> Style(Style),
> > -      Tokens(&Tokens), Callback(Callback) {
> > +      LastInCurrentLine(NULL), MustBreakBeforeNextToken(false),
> Diag(Diag),
> > +      Style(Style), Tokens(&Tokens), Callback(Callback) {
> >  }
> >
> >  bool UnwrappedLineParser::parse() {
> > @@ -149,7 +150,9 @@
> >        if (HasOpeningBrace) {
> >          return false;
> >        } else {
> > -        // Stray '}' is an error.
> > +        Diag.Report(FormatTok.Tok.getLocation(),
> > +
>  Diag.getCustomDiagID(clang::DiagnosticsEngine::Error,
> > +                                         "Stray '}' found"));
>
> "unexpected '}'" would be more in line with other diagnostics:
>
> $ grep -i unexpected include/clang/Basic/Diagnostic*.td | wc -l
>       26
> $ grep -i stray include/clang/Basic/Diagnostic*.td | wc -l
>        1
>
> >          Error = true;
> >          nextToken();
> >          addUnwrappedLine();
> >
> > Modified: cfe/trunk/lib/Format/UnwrappedLineParser.h
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.h?rev=172071&r1=172070&r2=172071&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Format/UnwrappedLineParser.h (original)
> > +++ cfe/trunk/lib/Format/UnwrappedLineParser.h Thu Jan 10 09:05:09 2013
> > @@ -27,6 +27,9 @@
> >  #include <vector>
> >
> >  namespace clang {
> > +
> > +class DiagnosticsEngine;
> > +
> >  namespace format {
> >
> >  /// \brief A wrapper around a \c Token storing information about the
> > @@ -116,7 +119,8 @@
> >
> >  class UnwrappedLineParser {
> >  public:
> > -  UnwrappedLineParser(const FormatStyle &Style, FormatTokenSource
> &Tokens,
> > +  UnwrappedLineParser(clang::DiagnosticsEngine &Diag, const FormatStyle
> &Style,
> > +                      FormatTokenSource &Tokens,
> >                        UnwrappedLineConsumer &Callback);
> >
> >    /// Returns true in case of a structural error.
> > @@ -161,6 +165,7 @@
> >    FormatToken FormatTok;
> >    bool MustBreakBeforeNextToken;
> >
> > +  clang::DiagnosticsEngine &Diag;
> >    const FormatStyle &Style;
> >    FormatTokenSource *Tokens;
> >    UnwrappedLineConsumer &Callback;
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>



-- 
Alexander Kornienko | Software Engineer | alexfh at google.com | +49 151 221
77 957
Google Germany GmbH | Dienerstr. 12 | 80331 München
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130110/3d2a8fdf/attachment.html>


More information about the cfe-commits mailing list