Merge pull request #40832 from etcwilde/ewilde/async-top-level

A first pass at concurrency in top-level code
This commit is contained in:
Evan Wilde
2022-01-21 13:24:51 -08:00
committed by GitHub
11 changed files with 130 additions and 40 deletions

View File

@@ -1221,14 +1221,15 @@ bool DeclContext::isClassConstrainedProtocolExtension() const {
bool DeclContext::isAsyncContext() const {
switch (getContextKind()) {
case DeclContextKind::Initializer:
case DeclContextKind::TopLevelCodeDecl:
case DeclContextKind::EnumElementDecl:
case DeclContextKind::ExtensionDecl:
case DeclContextKind::SerializedLocal:
case DeclContextKind::Module:
case DeclContextKind::FileUnit:
case DeclContextKind::GenericTypeDecl:
return false;
case DeclContextKind::FileUnit:
case DeclContextKind::TopLevelCodeDecl:
return getASTContext().LangOpts.EnableExperimentalAsyncTopLevel;
case DeclContextKind::AbstractClosureExpr:
return cast<AbstractClosureExpr>(this)->isBodyAsync();
case DeclContextKind::AbstractFunctionDecl: {