<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Mar 6, 2014 at 6:14 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Thu, Mar 6, 2014 at 5:23 AM, Alexander Kornienko <<a href="mailto:alexfh@google.com">alexfh@google.com</a>> wrote:<br>

> Author: alexfh<br>
> Date: Thu Mar  6 07:23:30 2014<br>
> New Revision: 203117<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=203117&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=203117&view=rev</a><br>
> Log:<br>
> Added an inserter for ArrayRef<SourceRange>.<br>
><br>
> Summary:<br>
> Added an inserter for ArrayRef<SourceRange>, as it is already needed in at least<br>
> two places (static analyzer and clang-tidy).<br>
<br>
</div>You may be able to remove the single-argument (SourceRange) version of<br>
this, since ArrayRef<T> is implicitly constructible from T (to create<br>
a single-element ArrayRef<T>). Though the extra user defined<br>
conversion might cause some hiccups.<br></blockquote><div><br></div><div>Thanks for the idea, but this doesn't seem like the right trade-off here.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<span class="HOEnZb"><font color="#888888"><br>
- David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> Reviewers: jordan_rose<br>
><br>
> CC: cfe-commits, gribozavr<br>
><br>
> Differential Revision: <a href="http://llvm-reviews.chandlerc.com/D2984" target="_blank">http://llvm-reviews.chandlerc.com/D2984</a><br>
><br>
> Modified:<br>
>     cfe/trunk/include/clang/Basic/Diagnostic.h<br>
>     cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp<br>
><br>
> Modified: cfe/trunk/include/clang/Basic/Diagnostic.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=203117&r1=203116&r2=203117&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=203117&r1=203116&r2=203117&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/include/clang/Basic/Diagnostic.h (original)<br>
> +++ cfe/trunk/include/clang/Basic/Diagnostic.h Thu Mar  6 07:23:30 2014<br>
> @@ -1015,7 +1015,8 @@ inline const DiagnosticBuilder &operator<br>
>    return DB;<br>
>  }<br>
><br>
> -inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,bool I) {<br>
> +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,<br>
> +                                           bool I) {<br>
>    DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint);<br>
>    return DB;<br>
>  }<br>
> @@ -1052,7 +1053,7 @@ operator<<(const DiagnosticBuilder &DB,<br>
>                    DiagnosticsEngine::ak_declcontext);<br>
>    return DB;<br>
>  }<br>
> -<br>
> +<br>
>  inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,<br>
>                                             const SourceRange &R) {<br>
>    DB.AddSourceRange(CharSourceRange::getTokenRange(R));<br>
> @@ -1060,11 +1061,18 @@ inline const DiagnosticBuilder &operator<br>
>  }<br>
><br>
>  inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,<br>
> +                                           ArrayRef<SourceRange> Ranges) {<br>
> +  for (const SourceRange &R: Ranges)<br>
> +    DB.AddSourceRange(CharSourceRange::getTokenRange(R));<br>
> +  return DB;<br>
> +}<br>
> +<br>
> +inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,<br>
>                                             const CharSourceRange &R) {<br>
>    DB.AddSourceRange(R);<br>
>    return DB;<br>
>  }<br>
> -<br>
> +<br>
>  inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,<br>
>                                             const FixItHint &Hint) {<br>
>    if (!Hint.isNull())<br>
> @@ -1073,7 +1081,7 @@ inline const DiagnosticBuilder &operator<br>
>  }<br>
><br>
>  inline DiagnosticBuilder DiagnosticsEngine::Report(SourceLocation Loc,<br>
> -                                            unsigned DiagID){<br>
> +                                                   unsigned DiagID) {<br>
>    assert(CurDiagID == ~0U && "Multiple diagnostics in flight at once!");<br>
>    CurDiagLoc = Loc;<br>
>    CurDiagID = DiagID;<br>
><br>
> Modified: cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp?rev=203117&r1=203116&r2=203117&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp?rev=203117&r1=203116&r2=203117&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp (original)<br>
> +++ cfe/trunk/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp Thu Mar  6 07:23:30 2014<br>
> @@ -103,14 +103,6 @@ public:<br>
>      IncludePath = true;<br>
>    }<br>
><br>
> -  const DiagnosticBuilder &addRanges(const DiagnosticBuilder &DB,<br>
> -                                     ArrayRef<SourceRange> Ranges) {<br>
> -    for (ArrayRef<SourceRange>::iterator I = Ranges.begin(), E = Ranges.end();<br>
> -         I != E; ++I)<br>
> -      DB << *I;<br>
> -    return DB;<br>
> -  }<br>
> -<br>
>    void FlushDiagnosticsImpl(std::vector<const PathDiagnostic *> &Diags,<br>
>                              FilesMade *filesMade) {<br>
>      unsigned WarnID = Diag.getCustomDiagID(DiagnosticsEngine::Warning, "%0");<br>
> @@ -120,8 +112,8 @@ public:<br>
>           E = Diags.end(); I != E; ++I) {<br>
>        const PathDiagnostic *PD = *I;<br>
>        SourceLocation WarnLoc = PD->getLocation().asLocation();<br>
> -      addRanges(Diag.Report(WarnLoc, WarnID) << PD->getShortDescription(),<br>
> -                PD->path.back()->getRanges());<br>
> +      Diag.Report(WarnLoc, WarnID) << PD->getShortDescription()<br>
> +                                   << PD->path.back()->getRanges();<br>
><br>
>        if (!IncludePath)<br>
>          continue;<br>
> @@ -131,8 +123,8 @@ public:<br>
>                                        PE = FlatPath.end();<br>
>             PI != PE; ++PI) {<br>
>          SourceLocation NoteLoc = (*PI)->getLocation().asLocation();<br>
> -        addRanges(Diag.Report(NoteLoc, NoteID) << (*PI)->getString(),<br>
> -                  (*PI)->getRanges());<br>
> +        Diag.Report(NoteLoc, NoteID) << (*PI)->getString()<br>
> +                                     << (*PI)->getRanges();<br>
>        }<br>
>      }<br>
>    }<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><div><br></div>
</div></div>