Make named opaque types an experimental feature

This commit is contained in:
Doug Gregor
2022-05-26 13:44:08 -07:00
parent a523473315
commit 0de5d7818d
6 changed files with 9 additions and 9 deletions

View File

@@ -85,6 +85,7 @@ SUPPRESSIBLE_LANGUAGE_FEATURE(NoAsyncAvailability, 340, "@available(*, noasync)"
EXPERIMENTAL_FEATURE(StaticAssert)
EXPERIMENTAL_FEATURE(VariadicGenerics)
EXPERIMENTAL_FEATURE(NamedOpaqueTypes)
#undef EXPERIMENTAL_FEATURE
#undef SUPPRESSIBLE_LANGUAGE_FEATURE

View File

@@ -317,10 +317,6 @@ namespace swift {
/// Enable experimental concurrency model.
bool EnableExperimentalConcurrency = false;
/// Enable experimental support for named opaque result types, e.g.
/// `func f() -> <T> T`.
bool EnableExperimentalNamedOpaqueTypes = false;
/// Enable support for implicitly opening existential argument types
/// in calls to generic functions.
bool EnableOpenedExistentialTypes = false;

View File

@@ -3003,6 +3003,10 @@ static bool usesFeatureVariadicGenerics(Decl *decl) {
return false;
}
static bool usesFeatureNamedOpaqueTypes(Decl *decl) {
return false;
}
static void
suppressingFeatureNoAsyncAvailability(PrintOptions &options,
llvm::function_ref<void()> action) {

View File

@@ -450,9 +450,6 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
Opts.EnableExperimentalConcurrency |=
Args.hasArg(OPT_enable_experimental_concurrency);
Opts.EnableExperimentalNamedOpaqueTypes |=
Args.hasArg(OPT_enable_experimental_named_opaque_types);
Opts.EnableOpenedExistentialTypes =
Args.hasFlag(OPT_enable_experimental_opened_existential_types,
OPT_disable_experimental_opened_existential_types,
@@ -663,6 +660,8 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
Opts.Features.insert(Feature::VariadicGenerics);
if (Args.hasArg(OPT_enable_experimental_static_assert))
Opts.Features.insert(Feature::StaticAssert);
if (Args.hasArg(OPT_enable_experimental_associated_type_inference))
Opts.Features.insert(Feature::NamedOpaqueTypes);
Opts.EnableAppExtensionRestrictions |= Args.hasArg(OPT_enable_app_extension);

View File

@@ -564,7 +564,7 @@ ParserResult<TypeRepr> Parser::parseType(
ParserResult<TypeRepr> Parser::parseTypeWithOpaqueParams(Diag<> MessageID) {
GenericParamList *genericParams = nullptr;
if (Context.LangOpts.EnableExperimentalNamedOpaqueTypes) {
if (Context.LangOpts.hasFeature(Feature::NamedOpaqueTypes)) {
auto result = maybeParseGenericParams();
genericParams = result.getPtrOrNull();
if (result.hasCodeCompletion())

View File

@@ -4299,7 +4299,7 @@ int main(int argc, char *argv[]) {
InitInvok.getLangOptions().DisableImplicitStringProcessingModuleImport = true;
}
if (options::EnableExperimentalNamedOpaqueTypes) {
InitInvok.getLangOptions().EnableExperimentalNamedOpaqueTypes = true;
InitInvok.getLangOptions().Features.insert(Feature::NamedOpaqueTypes);
}
if (options::EnableExperimentalStringProcessing) {
InitInvok.getLangOptions().EnableExperimentalStringProcessing = true;