Author: bruno Date: Wed Feb 14 11:01:03 2018 New Revision: 325154 URL: http://llvm.org/viewvc/llvm-project?rev=325154&view=rev Log: [Modules] Add more language features to be used with requires-declaration
Features added: c99, c11, c17, cplusplus14 and cplusplus17. rdar://problem/36328787 rdar://problem/36668431 Modified: cfe/trunk/docs/Modules.rst cfe/trunk/lib/Basic/Module.cpp cfe/trunk/test/Modules/Inputs/DependsOnModule.framework/module.map cfe/trunk/test/Modules/requires.m Modified: cfe/trunk/docs/Modules.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/Modules.rst?rev=325154&r1=325153&r2=325154&view=diff ============================================================================== --- cfe/trunk/docs/Modules.rst (original) +++ cfe/trunk/docs/Modules.rst Wed Feb 14 11:01:03 2018 @@ -430,6 +430,21 @@ cplusplus cplusplus11 C++11 support is available. +cplusplus14 + C++14 support is available. + +cplusplus17 + C++17 support is available. + +c99 + C99 support is available. + +c11 + C11 support is available. + +c17 + C17 support is available. + freestanding A freestanding environment is available. Modified: cfe/trunk/lib/Basic/Module.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Module.cpp?rev=325154&r1=325153&r2=325154&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Module.cpp (original) +++ cfe/trunk/lib/Basic/Module.cpp Wed Feb 14 11:01:03 2018 @@ -78,6 +78,11 @@ static bool hasFeature(StringRef Feature .Case("coroutines", LangOpts.CoroutinesTS) .Case("cplusplus", LangOpts.CPlusPlus) .Case("cplusplus11", LangOpts.CPlusPlus11) + .Case("cplusplus14", LangOpts.CPlusPlus14) + .Case("cplusplus17", LangOpts.CPlusPlus17) + .Case("c99", LangOpts.C99) + .Case("c11", LangOpts.C11) + .Case("c17", LangOpts.C17) .Case("freestanding", LangOpts.Freestanding) .Case("gnuinlineasm", LangOpts.GNUAsm) .Case("objc", LangOpts.ObjC1) Modified: cfe/trunk/test/Modules/Inputs/DependsOnModule.framework/module.map URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/DependsOnModule.framework/module.map?rev=325154&r1=325153&r2=325154&view=diff ============================================================================== --- cfe/trunk/test/Modules/Inputs/DependsOnModule.framework/module.map (original) +++ cfe/trunk/test/Modules/Inputs/DependsOnModule.framework/module.map Wed Feb 14 11:01:03 2018 @@ -37,4 +37,22 @@ framework module DependsOnModule { export * } } + explicit module CXX11 { + requires cplusplus11 + } + explicit module CXX14 { + requires cplusplus14 + } + explicit module CXX17 { + requires cplusplus17 + } + explicit module C99 { + requires c99 + } + explicit module C11 { + requires c11 + } + explicit module C17 { + requires c17 + } } Modified: cfe/trunk/test/Modules/requires.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/requires.m?rev=325154&r1=325153&r2=325154&view=diff ============================================================================== --- cfe/trunk/test/Modules/requires.m (original) +++ cfe/trunk/test/Modules/requires.m Wed Feb 14 11:01:03 2018 @@ -1,6 +1,7 @@ // RUN: rm -rf %t // RUN: %clang_cc1 -Wauto-import -Wno-private-module -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -F %S/Inputs -I %S/Inputs %s -verify -fmodule-feature custom_req1 - +// RUN: %clang_cc1 -Wauto-import -Wno-private-module -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -F %S/Inputs -I %S/Inputs %s -verify -std=c89 -DTEST_C_FEATURES +#ifndef TEST_C_FEATURES // expected-error@DependsOnModule.framework/module.map:7 {{module 'DependsOnModule.CXX' requires feature 'cplusplus'}} @import DependsOnModule.CXX; // expected-note {{module imported here}} @import DependsOnModule.NotCXX; @@ -15,3 +16,17 @@ @import RequiresWithMissingHeader.HeaderBefore; // expected-note {{module imported here}} // expected-er...@module.map:* {{module 'RequiresWithMissingHeader.HeaderAfter' requires feature 'missing'}} @import RequiresWithMissingHeader.HeaderAfter; // expected-note {{module imported here}} +// expected-error@DependsOnModule.framework/module.map:40 {{module 'DependsOnModule.CXX11' requires feature 'cplusplus11'}} +@import DependsOnModule.CXX11; // expected-note {{module imported here}} +// expected-error@DependsOnModule.framework/module.map:43 {{module 'DependsOnModule.CXX14' requires feature 'cplusplus14'}} +@import DependsOnModule.CXX14; // expected-note {{module imported here}} +// expected-error@DependsOnModule.framework/module.map:46 {{module 'DependsOnModule.CXX17' requires feature 'cplusplus17'}} +@import DependsOnModule.CXX17; // expected-note {{module imported here}} +#else +// expected-error@DependsOnModule.framework/module.map:49 {{module 'DependsOnModule.C99' requires feature 'c99'}} +@import DependsOnModule.C99; // expected-note {{module imported here}} +// expected-error@DependsOnModule.framework/module.map:52 {{module 'DependsOnModule.C11' requires feature 'c11'}} +@import DependsOnModule.C11; // expected-note {{module imported here}} +// expected-error@DependsOnModule.framework/module.map:55 {{module 'DependsOnModule.C17' requires feature 'c17'}} +@import DependsOnModule.C17; // expected-note {{module imported here}} +#endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits