r304956 - [ODRHash] Change the fall-back diagnostic error.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 7 18:05:11 PDT 2017


On 7 June 2017 at 17:56, Richard Trieu via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: rtrieu
> Date: Wed Jun  7 19:56:21 2017
> New Revision: 304956
>
> URL: http://llvm.org/viewvc/llvm-project?rev=304956&view=rev
> Log:
> [ODRHash] Change the fall-back diagnostic error.
>
> Provide a little more information when a ODR violation is detected, but the
> specific error could not be diagnosed.
>
> Modified:
>     cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td
>     cfe/trunk/lib/Serialization/ASTReader.cpp
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/
> DiagnosticSerializationKinds.td?rev=304956&r1=304955&r2=304956&view=diff
> ============================================================
> ==================
> --- cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td
> (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td Wed
> Jun  7 19:56:21 2017
> @@ -174,6 +174,13 @@ def note_module_odr_violation_mismatch_d
>    "method %2 with %ordinal3 parameter of type %4%select{| decayed from
> %6}5|"
>    "method %2 with %ordinal3 parameter named %4}1">;
>
> +def err_module_odr_violation_mismatch_decl_unknown : Error<
> +  "%q0 has different definitions in different modules; first difference
> is "
> +  "%select{definition in module '%2'|defined here}1 found different "
> +  "%select{||||static assert|field|method|other}3">;
> +def note_module_odr_violation_mismatch_decl_unknown : Note<
> +  "but in '%0' found different %select{||||static
> assert|field|method|other}1">;
>

This will produce messages like

"first difference is defined here found different static assert"
"first difference is definition in module 'X' found different other"

... which seem pretty confusing. Can this be rephrased so that it forms
easier-to-read sentences? (Also, can we get some test coverage for this
diagnostic?)


> +
>  def warn_duplicate_module_file_extension : Warning<
>    "duplicate module file extension block name '%0'">,
>    InGroup<ModuleFileExtension>;
>
> Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/
> Serialization/ASTReader.cpp?rev=304956&r1=304955&r2=304956&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTReader.cpp Wed Jun  7 19:56:21 2017
> @@ -9753,13 +9753,13 @@ void ASTReader::diagnoseOdrViolations()
>        if (Diagnosed == true)
>          continue;
>
> -      Diag(FirstRecord->getLocation(),
> -           diag::err_module_odr_violation_different_definitions)
> -          << FirstRecord << FirstModule.empty() << FirstModule;
> -
> -      Diag(SecondRecord->getLocation(),
> -           diag::note_module_odr_violation_different_definitions)
> -          << SecondModule;
> +      Diag(FirstDecl->getLocation(),
> +           diag::err_module_odr_violation_mismatch_decl_unknown)
> +          << FirstRecord << FirstModule.empty() << FirstModule <<
> FirstDiffType
> +          << FirstDecl->getSourceRange();
> +      Diag(SecondDecl->getLocation(),
> +           diag::note_module_odr_violation_mismatch_decl_unknown)
> +          << SecondModule << FirstDiffType <<
> SecondDecl->getSourceRange();
>        Diagnosed = true;
>      }
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170607/f7c34c65/attachment.html>


More information about the cfe-commits mailing list