Skip to content

Commit 8b4740f

Browse files
authored
Merge pull request swiftlang#81797 from ktoso/wip-handle-public-import-distributed-awareness
[Distributed] account Distributed module use from DA declarations
2 parents 7ac5516 + 3b94f00 commit 8b4740f

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

lib/Sema/TypeCheckDistributed.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,18 @@ void TypeChecker::checkDistributedActor(SourceFile *SF, NominalTypeDecl *nominal
709709
if (!swift::ensureDistributedModuleLoaded(nominal))
710710
return;
711711

712+
auto &C = nominal->getASTContext();
713+
auto loc = nominal->getLoc();
714+
recordRequiredImportAccessLevelForDecl(
715+
C.getDistributedActorDecl(), nominal, nominal->getEffectiveAccess(),
716+
[&](AttributedImport<ImportedModule> attributedImport) {
717+
ModuleDecl *importedVia = attributedImport.module.importedModule,
718+
*sourceModule = nominal->getModuleContext();
719+
C.Diags.diagnose(loc, diag::module_api_import, nominal, importedVia,
720+
sourceModule, importedVia == sourceModule,
721+
/*isImplicit*/ false);
722+
});
723+
712724
// ==== Constructors
713725
// --- Get the default initializer
714726
// If applicable, this will create the default 'init(transport:)' initializer
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %target-swift-frontend-emit-module -emit-module-path %t/FakeDistributedActorSystems.swiftmodule -module-name FakeDistributedActorSystems -target %target-swift-5.7-abi-triple %S/Inputs/FakeDistributedActorSystems.swift
3+
// RUN: %target-swift-frontend -typecheck -verify -target %target-swift-5.7-abi-triple -I %t 2>&1 %s
4+
// REQUIRES: concurrency
5+
// REQUIRES: distributed
6+
7+
// Should NOT produce a warning, we do use the module in a public declaration, see MyPublicDistributedActor
8+
public import Distributed
9+
import FakeDistributedActorSystems
10+
11+
12+
public distributed actor MyPublicDistributedActor {
13+
public typealias ActorSystem = FakeActorSystem
14+
}

0 commit comments

Comments
 (0)