[clang-tools-extra] r174382 - Adds JSON output for replacements, to simplify tools integration.
Daniel Jasper
djasper at google.com
Tue Feb 5 08:08:10 PST 2013
So far, it is not as we are only inserting spaces and newlines.
On Tue, Feb 5, 2013 at 4:56 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:
> Hi Manuel,
>
> On Tue, Feb 5, 2013 at 5:52 PM, Manuel Klimek <klimek at google.com> wrote:
> > Author: klimek
> > Date: Tue Feb 5 09:52:21 2013
> > New Revision: 174382
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=174382&view=rev
> > Log:
> > Adds JSON output for replacements, to simplify tools integration.
> >
> > Using -output-replacements will now output the replacements instead
> > of the changed code. This allows easier integration with tools that
> > need full control over what changed.
> >
> > The format is an array of objects with the members "offset" (number),
> > "length" (number) and "replacement_text" (string), for example:
> >
> > [
> > {
> > "offset": 42,
> > "length": 5,
> > "replacement_text": " "
> > },
> > {
> > "offset": 105,
> > "length": 4,
> > "replacement_text": ""
> > }
> > ]
> >
> > Modified:
> > clang-tools-extra/trunk/clang-format/ClangFormat.cpp
> >
> > Modified: clang-tools-extra/trunk/clang-format/ClangFormat.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-format/ClangFormat.cpp?rev=174382&r1=174381&r2=174382&view=diff
> >
> ==============================================================================
> > --- clang-tools-extra/trunk/clang-format/ClangFormat.cpp (original)
> > +++ clang-tools-extra/trunk/clang-format/ClangFormat.cpp Tue Feb 5
> 09:52:21 2013
> > @@ -38,6 +38,9 @@ static cl::opt<std::string> Style(
> > static cl::opt<bool> Inplace("i",
> > cl::desc("Inplace edit <file>, if
> specified."));
> >
> > +static cl::opt<bool> OutputReplacements(
> > + "output-replacements", cl::desc("Output replacements as JSON."));
> > +
> > // FIXME: Remove this when styles are configurable through files.
> > static cl::opt<bool> InvertPointerBinding(
> > "invert-pointer-binding", cl::desc("Inverts the side to which */&
> bind"),
> > @@ -104,23 +107,41 @@ static void format() {
> > Ranges.push_back(CharSourceRange::getCharRange(Start, End));
> > }
> > tooling::Replacements Replaces = reformat(getStyle(), Lex, Sources,
> Ranges);
> > - Rewriter Rewrite(Sources, LangOptions());
> > - tooling::applyAllReplacements(Replaces, Rewrite);
> > - if (Inplace) {
> > - if (Replaces.size() == 0)
> > - return; // Nothing changed, don't touch the file.
> > -
> > - std::string ErrorInfo;
> > - llvm::raw_fd_ostream FileStream(FileName.c_str(), ErrorInfo,
> > - llvm::raw_fd_ostream::F_Binary);
> > - if (!ErrorInfo.empty()) {
> > - llvm::errs() << "Error while writing file: " << ErrorInfo << "\n";
> > - return;
> > + if (OutputReplacements) {
> > + llvm::outs() << "[\n";
> > + for (tooling::Replacements::const_iterator I = Replaces.begin(),
> > + E = Replaces.end();
> > + I != E; ++I) {
> > + if (I != Replaces.begin()) {
> > + llvm::outs() << ",\n";
> > + }
> > + llvm::outs() << " {\n"
> > + << " \"offset\": " << I->getOffset() << ",\n"
> > + << " \"length\": " << I->getLength() << ",\n"
> > + << " \"replacement_text\": \"" <<
> I->getReplacementText()
>
> Isn't there some escaping required?
>
> Dmitri
>
> --
> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
> _______________________________________________
> 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/20130205/cf206dc7/attachment.html>
More information about the cfe-commits
mailing list