Skip to content

Commit 503c326

Browse files
committed
[Sema] Track references to imports with ModuleDecls
1 parent 2752414 commit 503c326

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

include/swift/AST/SourceFile.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ class SourceFile final : public FileUnit {
149149
PreconcurrencyImportsUsed;
150150

151151
/// The highest access level of declarations referencing each import.
152-
llvm::DenseMap<AttributedImport<ImportedModule>, AccessLevel>
153-
ImportsUseAccessLevel;
152+
llvm::DenseMap<const ModuleDecl *, AccessLevel> ImportsUseAccessLevel;
154153

155154
/// A unique identifier representing this file; used to mark private decls
156155
/// within the file to keep them from conflicting with other files in the
@@ -418,7 +417,7 @@ class SourceFile final : public FileUnit {
418417
/// Return the highest access level of the declarations referencing
419418
/// this import in signature or inlinable code.
420419
AccessLevel
421-
getMaxAccessLevelUsingImport(AttributedImport<ImportedModule> import) const;
420+
getMaxAccessLevelUsingImport(const ModuleDecl *import) const;
422421

423422
/// Register the use of \p import from an API with \p accessLevel.
424423
void registerAccessLevelUsingImport(AttributedImport<ImportedModule> import,

lib/AST/Module.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3192,8 +3192,8 @@ void SourceFile::setImportUsedPreconcurrency(
31923192

31933193
AccessLevel
31943194
SourceFile::getMaxAccessLevelUsingImport(
3195-
AttributedImport<ImportedModule> import) const {
3196-
auto known = ImportsUseAccessLevel.find(import);
3195+
const ModuleDecl *mod) const {
3196+
auto known = ImportsUseAccessLevel.find(mod);
31973197
if (known == ImportsUseAccessLevel.end())
31983198
return AccessLevel::Internal;
31993199
return known->second;
@@ -3202,11 +3202,12 @@ SourceFile::getMaxAccessLevelUsingImport(
32023202
void SourceFile::registerAccessLevelUsingImport(
32033203
AttributedImport<ImportedModule> import,
32043204
AccessLevel accessLevel) {
3205-
auto known = ImportsUseAccessLevel.find(import);
3205+
auto mod = import.module.importedModule;
3206+
auto known = ImportsUseAccessLevel.find(mod);
32063207
if (known == ImportsUseAccessLevel.end())
3207-
ImportsUseAccessLevel[import] = accessLevel;
3208+
ImportsUseAccessLevel[mod] = accessLevel;
32083209
else
3209-
ImportsUseAccessLevel[import] = std::max(accessLevel, known->second);
3210+
ImportsUseAccessLevel[mod] = std::max(accessLevel, known->second);
32103211
}
32113212

32123213
bool HasImportsMatchingFlagRequest::evaluate(Evaluator &evaluator,

lib/Sema/TypeCheckAccess.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2440,7 +2440,7 @@ void swift::diagnoseUnnecessaryPublicImports(SourceFile &SF) {
24402440
import.accessLevel <= AccessLevel::Internal)
24412441
continue;
24422442

2443-
AccessLevel levelUsed = SF.getMaxAccessLevelUsingImport(import);
2443+
AccessLevel levelUsed = SF.getMaxAccessLevelUsingImport(import.module.importedModule);
24442444
if (import.accessLevel > levelUsed) {
24452445
auto diagId = import.accessLevel == AccessLevel::Public ?
24462446
diag::remove_public_import :

0 commit comments

Comments
 (0)