mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Make named opaque types an experimental feature
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user