r212191 - ARCMigrate: simplify diagnostic handling

David Blaikie dblaikie at gmail.com
Wed Jul 2 10:25:02 PDT 2014


On Wed, Jul 2, 2014 at 10:08 AM, Alp Toker <alp at nuanti.com> wrote:
> Author: alp
> Date: Wed Jul  2 12:08:00 2014
> New Revision: 212191
>
> URL: http://llvm.org/viewvc/llvm-project?rev=212191&view=rev
> Log:
> ARCMigrate: simplify diagnostic handling
>
> Recent enhancements in the diagnostics engine mean that
> TransformActions::report() no longer needs to duplicate this suppression logic.
>
> That's great because the old code was flawed and would have attached notes to
> the wrong primary diagnostic in non-trivial use.

Any value in adding a test for this? (probably not, now that the
codepaths are shared and presumably the surviving/existing codepath
was already well/better tested - but just checking)

>
> With these changes it becomes safe to use reportNote() freely in the migration
> tool.
>
> Modified:
>     cfe/trunk/include/clang/Basic/Diagnostic.td
>     cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td
>     cfe/trunk/lib/ARCMigrate/Internals.h
>     cfe/trunk/lib/ARCMigrate/TransformActions.cpp
>
> Modified: cfe/trunk/include/clang/Basic/Diagnostic.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.td?rev=212191&r1=212190&r2=212191&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/Diagnostic.td (original)
> +++ cfe/trunk/include/clang/Basic/Diagnostic.td Wed Jul  2 12:08:00 2014
> @@ -89,6 +89,10 @@ class ShowInSystemHeader {
>    bit ShowInSystemHeader = 1;
>  }
>
> +class SuppressInSystemHeader {
> +  bit ShowInSystemHeader = 0;
> +}
> +
>  // FIXME: ExtWarn and Extension should also be SFINAEFailure by default.
>  class Error<string str>     : Diagnostic<str, CLASS_ERROR, SEV_Error>, SFINAEFailure {
>    bit ShowInSystemHeader = 1;
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td?rev=212191&r1=212190&r2=212191&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td Wed Jul  2 12:08:00 2014
> @@ -138,7 +138,7 @@ def err_module_file_conflict : Error<"mo
>
>  // TransformActions
>  // TODO: Use a custom category name to distinguish rewriter errors.
> -def err_mt_message : Error<"[rewriter] %0">;
> +def err_mt_message : Error<"[rewriter] %0">, SuppressInSystemHeader;
>  def warn_mt_message : Warning<"[rewriter] %0">;
>  def note_mt_message : Note<"[rewriter] %0">;
>
>
> Modified: cfe/trunk/lib/ARCMigrate/Internals.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/Internals.h?rev=212191&r1=212190&r2=212191&view=diff
> ==============================================================================
> --- cfe/trunk/lib/ARCMigrate/Internals.h (original)
> +++ cfe/trunk/lib/ARCMigrate/Internals.h Wed Jul  2 12:08:00 2014
> @@ -48,7 +48,6 @@ void writeARCDiagsToPlist(const std::str
>  class TransformActions {
>    DiagnosticsEngine &Diags;
>    CapturedDiagList &CapturedDiags;
> -  bool ReportedErrors;
>    void *Impl; // TransformActionsImpl.
>
>  public:
> @@ -104,7 +103,9 @@ public:
>    void reportNote(StringRef note, SourceLocation loc,
>                    SourceRange range = SourceRange());
>
> -  bool hasReportedErrors() const { return ReportedErrors; }
> +  bool hasReportedErrors() const {
> +    return Diags.hasUnrecoverableErrorOccurred();
> +  }
>
>    class RewriteReceiver {
>    public:
>
> Modified: cfe/trunk/lib/ARCMigrate/TransformActions.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/TransformActions.cpp?rev=212191&r1=212190&r2=212191&view=diff
> ==============================================================================
> --- cfe/trunk/lib/ARCMigrate/TransformActions.cpp (original)
> +++ cfe/trunk/lib/ARCMigrate/TransformActions.cpp Wed Jul  2 12:08:00 2014
> @@ -601,7 +601,7 @@ TransformActions::RewriteReceiver::~Rewr
>  TransformActions::TransformActions(DiagnosticsEngine &diag,
>                                     CapturedDiagList &capturedDiags,
>                                     ASTContext &ctx, Preprocessor &PP)
> -  : Diags(diag), CapturedDiags(capturedDiags), ReportedErrors(false) {
> +    : Diags(diag), CapturedDiags(capturedDiags) {
>    Impl = new TransformActionsImpl(capturedDiags, ctx, PP);
>  }
>
> @@ -677,17 +677,6 @@ DiagnosticBuilder TransformActions::repo
>                                             SourceRange range) {
>    assert(!static_cast<TransformActionsImpl *>(Impl)->isInTransaction() &&
>           "Errors should be emitted out of a transaction");
> -
> -  SourceManager &SM = static_cast<TransformActionsImpl *>(Impl)
> -                          ->getASTContext()
> -                          .getSourceManager();
> -  DiagnosticsEngine::Level L = Diags.getDiagnosticLevel(diagId, loc);
> -  // TODO: Move this check to the caller to ensure consistent note attachments.
> -  if (L == DiagnosticsEngine::Ignored ||
> -      SM.isInSystemHeader(SM.getExpansionLoc(loc)))
> -    return DiagnosticBuilder::getEmpty();
> -  if (L >= DiagnosticsEngine::Error)
> -    ReportedErrors = true;
>    return Diags.Report(loc, diagId) << range;
>  }
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list