Thank you! > (I did not receive any email about this from the buildbots. Is that expected?) No, looks wrong. I will keep an eye on this.
Thanks Galina On Tue, May 30, 2017 at 1:14 PM, Richard Smith <rich...@metafoo.co.uk> wrote: > 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/p >>> reprocess-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