blocks
The "blocks" language feature is available.
-coroutines
- Support for the coroutines TS is available.
-
cplusplus
C++ support is available.
bool HasFeature = llvm::StringSwitch<bool>(Feature)
.Case("altivec", LangOpts.AltiVec)
.Case("blocks", LangOpts.Blocks)
- .Case("coroutines", LangOpts.CoroutinesTS)
.Case("cplusplus", LangOpts.CPlusPlus)
.Case("cplusplus11", LangOpts.CPlusPlus11)
.Case("freestanding", LangOpts.Freestanding)
+++ /dev/null
-#ifndef __cpp_coroutines
-#error coroutines must be enabled
-#endif
+++ /dev/null
-#ifdef __cpp_coroutines
-#error coroutines must NOT be enabled
-#endif
explicit module CustomReq2 {
requires custom_req2
}
- explicit module Coroutines {
- requires coroutines
- header "coroutines.h"
- }
- explicit module NotCoroutines {
- requires !coroutines
- header "not_coroutines.h"
- }
+
explicit framework module SubFramework {
umbrella header "SubFramework.h"
+++ /dev/null
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -F %S/Inputs %s -verify
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -F %S/Inputs %s -verify -fcoroutines-ts -DCOROUTINES
-
-
-#ifdef COROUTINES
-@import DependsOnModule.Coroutines;
-@import DependsOnModule.NotCoroutines; // expected-error {{module 'DependsOnModule.NotCoroutines' is incompatible with feature 'coroutines'}}
-#else
-@import DependsOnModule.NotCoroutines;
-@import DependsOnModule.Coroutines; // expected-error {{module 'DependsOnModule.Coroutines' requires feature 'coroutines'}}
-#endif