Skip to content

Commit 7049c5b

Browse files
committed
[Dependency Scanning] Introduce a new constructor for dummy source modules
Instead of passing in a bunch of dummy/empty data.
1 parent 5961b9a commit 7049c5b

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

include/swift-c/DependencyScan/DependencyScan.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,17 @@ swiftscan_source_location_get_line_number(swiftscan_source_location_t source_loc
475475
SWIFTSCAN_PUBLIC int64_t
476476
swiftscan_source_location_get_column_number(swiftscan_source_location_t source_location);
477477

478+
//=== Scanner Cache Operations --------------------------------------------===//
479+
// The following operations expose an implementation detail of the dependency
480+
// scanner: its module dependencies cache. This is done in order
481+
// to allow clients to perform incremental dependency scans by having the
482+
// scanner's state be serializable and re-usable.
483+
484+
/// For the specified \c scanner instance, reset its internal state, ensuring subsequent
485+
/// scanning queries are done "from-scratch".
486+
SWIFTSCAN_PUBLIC void
487+
swiftscan_scanner_cache_reset(swiftscan_scanner_t scanner);
488+
478489
/// An entry point to invoke the compiler via a library call.
479490
SWIFTSCAN_PUBLIC int invoke_swift_compiler(int argc, const char **argv);
480491

include/swift/AST/ModuleDependencies.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,17 @@ class ModuleDependencyInfo {
633633
extraPCMArgs));
634634
}
635635

636+
static ModuleDependencyInfo
637+
forSwiftSourceModule() {
638+
return ModuleDependencyInfo(
639+
std::make_unique<SwiftSourceModuleDependenciesStorage>(
640+
StringRef(), ArrayRef<StringRef>(),
641+
ArrayRef<ScannerImportStatementInfo>(),
642+
ArrayRef<ScannerImportStatementInfo>(),
643+
ArrayRef<StringRef>(),
644+
ArrayRef<StringRef>()));
645+
}
646+
636647
/// Describe the module dependencies for a Clang module that can be
637648
/// built from a module map and headers.
638649
static ModuleDependencyInfo forClangModule(

lib/AST/ModuleDependencies.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ ModuleDependenciesCache::findDependency(
784784
auto dep = optionalDep.value();
785785
if (dep->getAsSwiftSourceModule() &&
786786
moduleName != mainScanModuleName &&
787-
moduleName != "DummyMainModuleForResolvingCrossImportOverlays") {
787+
moduleName != "MainModuleCrossImportOverlays") {
788788
return std::nullopt;
789789
}
790790
}

lib/DependencyScan/ModuleDependencyScanner.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,13 +1161,13 @@ void ModuleDependencyScanner::discoverCrossImportOverlayDependencies(
11611161

11621162
// Construct a dummy main to resolve the newly discovered cross import
11631163
// overlays.
1164-
StringRef dummyMainName = "DummyMainModuleForResolvingCrossImportOverlays";
1164+
StringRef dummyMainName = "MainModuleCrossImportOverlays";
11651165
auto dummyMainID = ModuleDependencyID{dummyMainName.str(),
11661166
ModuleDependencyKind::SwiftSource};
11671167
auto actualMainID = ModuleDependencyID{mainModuleName.str(),
11681168
ModuleDependencyKind::SwiftSource};
11691169
auto dummyMainDependencies =
1170-
ModuleDependencyInfo::forSwiftSourceModule({}, {}, {}, {}, {}, {});
1170+
ModuleDependencyInfo::forSwiftSourceModule();
11711171
std::for_each(newOverlays.begin(), newOverlays.end(),
11721172
[&](Identifier modName) {
11731173
dummyMainDependencies.addModuleImport(modName.str());

0 commit comments

Comments
 (0)