On 30 May 2017 at 13:08, Galina Kistanova <gkistan...@gmail.com> wrote:
> Hello Richard, > > This commit broke a test on few of our builders: > > Failing Tests (1): > Clang :: Modules/preprocess-unavailable.cpp > > http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_ > 64-scei-ps4-ubuntu-fast/builds/11935 > http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_ > 64-scei-ps4-windows10pro-fast/builds/10137 > > Please have a look at this? > Should be fixed by r304237, thanks for letting me know. (I did not receive any email about this from the buildbots. Is that expected?) > Thanks > > Galina > > > > On Mon, May 29, 2017 at 10:22 PM, Richard Smith via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: rsmith >> Date: Tue May 30 00:22:59 2017 >> New Revision: 304190 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=304190&view=rev >> Log: >> Diagnose attempts to build a preprocessed module that defines an >> unavailable submodule. >> >> The errors we would otherwise get are incomprehensible, as we would enter >> the >> module but not make its contents visible to itself. >> >> Added: >> cfe/trunk/test/Modules/preprocess-unavailable.cpp >> Modified: >> cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td >> cfe/trunk/lib/Lex/Pragma.cpp >> >> Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ >> Basic/DiagnosticLexKinds.td?rev=304190&r1=304189&r2=304190&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original) >> +++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Tue May 30 >> 00:22:59 2017 >> @@ -525,6 +525,8 @@ def err_pp_module_begin_without_module_e >> def err_pp_module_end_without_module_begin : Error< >> "no matching '#pragma clang module begin' for this " >> "'#pragma clang module end'">; >> +def note_pp_module_begin_here : Note< >> + "entering module '%0' due to this pragma">; >> >> def err_defined_macro_name : Error<"'defined' cannot be used as a macro >> name">; >> def err_paste_at_start : Error< >> >> Modified: cfe/trunk/lib/Lex/Pragma.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Pragma >> .cpp?rev=304190&r1=304189&r2=304190&view=diff >> ============================================================ >> ================== >> --- cfe/trunk/lib/Lex/Pragma.cpp (original) >> +++ cfe/trunk/lib/Lex/Pragma.cpp Tue May 30 00:22:59 2017 >> @@ -1407,6 +1407,24 @@ struct PragmaModuleBeginHandler : public >> M = NewM; >> } >> >> + // If the module isn't available, it doesn't make sense to enter it. >> + if (!M->isAvailable()) { >> + Module::Requirement Requirement; >> + Module::UnresolvedHeaderDirective MissingHeader; >> + (void)M->isAvailable(PP.getLangOpts(), PP.getTargetInfo(), >> + Requirement, MissingHeader); >> + if (MissingHeader.FileNameLoc.isValid()) { >> + PP.Diag(MissingHeader.FileNameLoc, >> diag::err_module_header_missing) >> + << MissingHeader.IsUmbrella << MissingHeader.FileName; >> + } else { >> + PP.Diag(M->DefinitionLoc, diag::err_module_unavailable) >> + << M->getFullModuleName() << Requirement.second << >> Requirement.first; >> + } >> + PP.Diag(BeginLoc, diag::note_pp_module_begin_here) >> + << M->getTopLevelModuleName(); >> + return; >> + } >> + >> // Enter the scope of the submodule. >> PP.EnterSubmodule(M, BeginLoc, /*ForPragma*/true); >> PP.EnterAnnotationToken(SourceRange(BeginLoc, >> ModuleName.back().second), >> >> Added: cfe/trunk/test/Modules/preprocess-unavailable.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ >> preprocess-unavailable.cpp?rev=304190&view=auto >> ============================================================ >> ================== >> --- cfe/trunk/test/Modules/preprocess-unavailable.cpp (added) >> +++ cfe/trunk/test/Modules/preprocess-unavailable.cpp Tue May 30 >> 00:22:59 2017 >> @@ -0,0 +1,12 @@ >> +// RUN: %clang_cc1 -x c++-module-map %s -fmodule-name=a -verify >> +module a { >> + module b { >> + requires cplusplus11 >> + } >> +} >> +#pragma clang module contents >> +// expected-error@3 {{module 'a.b' requires feature 'cplusplus11'}} >> +#pragma clang module begin a.b // expected-note {{entering module 'a' >> due to this pragma}} >> +int f(); >> +int g() { f(); } >> +#pragma clang module end // expected-error {{no matching '#pragma clang >> module begin'}} >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits