Steven Wu
34d52cfe1a
[DependencyScan] Propagate module library level through dependency scanner for CAS builds
...
Compute and propagate the library level (api/spi/ipi) of each module
dependency through the dependency scanner so that the compiler can
correctly enforce private module import diagnostics in CAS mode, where
path-based SPI detection fails because CAS abstracts file paths to
content IDs.
Swift modules:
- Detect library level from the module interface path using
libraryLevelFromPath() during scanning, for both textual (.swiftinterface)
and binary (.swiftmodule) Swift modules.
Clang modules:
- Expose ModuleMapIsPrivate from clang::Module in ModuleDeps via the
dependency scanning infrastructure.
- Set library level for clang modules in bridgeClangModuleDependency()
using ModuleMapIsPrivate (catches module.private.modulemap in any
SDK location) and libraryLevelFromPath() on the module map file
(catches modules under PrivateFrameworks directories).
The library level is:
- Stored in ModuleDependencyInfo and serialized in the module dependency
cache (format version bumped to v8).
- Exposed through the swiftscan C API via a new
swiftscan_module_info_get_library_level() function (API minor version
bumped to 3).
- Emitted in the dependency scanner JSON output as "libraryLevel" for
all module kinds (Swift textual, Swift binary, Clang, and main module).
- Parsed from the explicit module map JSON by ExplicitModuleMapParser
for both Swift (ExplicitSwiftModuleInputInfo) and Clang
(ExplicitClangModuleInputInfo) modules.
- Looked up in ModuleLibraryLevelRequest via
ASTContext::getExplicitModuleLibraryLevel(name, isClang), which
consults the appropriate map (Swift or Clang) based on module kind.
rdar://172693314
Assisted-By: Claude
2026-03-17 11:04:18 -07:00
..
2026-02-20 00:35:23 -08:00
2025-10-15 23:30:37 -07:00
2025-09-26 08:01:08 +02:00
2024-09-11 09:36:45 -07:00
2026-02-20 00:35:23 -08:00
2024-11-02 11:46:46 -07:00
2026-03-12 01:50:31 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2025-01-13 13:41:09 -08:00
2023-08-16 20:57:50 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-07-09 14:28:28 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-07-09 14:28:28 -07:00
2025-11-07 10:46:33 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2025-09-04 12:32:19 -07:00
2026-02-28 17:56:41 -08:00
2025-06-10 22:11:05 -07:00
2026-03-02 12:14:29 -08:00
2026-02-20 00:35:23 -08:00
2025-10-12 16:01:30 -07:00
2026-02-20 00:35:23 -08:00
2025-01-03 09:15:12 -08:00
2025-01-03 09:15:12 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2023-10-28 14:38:11 -07:00
2023-07-12 13:53:36 -07:00
2026-02-20 00:35:23 -08:00
2025-10-04 14:19:52 -07:00
2026-02-05 15:29:45 -08:00
2026-01-05 09:47:19 -08:00
2026-03-17 11:04:18 -07:00
2026-03-17 11:04:18 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-11-21 18:49:52 +01:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2023-09-21 00:55:17 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-09-03 22:14:24 -07:00
2026-02-20 00:35:23 -08:00
2025-10-17 16:14:58 -07:00
2023-12-13 10:53:42 +09:00
2025-09-23 15:56:05 +09:00
2026-03-12 01:50:31 -07:00
2023-09-19 10:38:42 -07:00
2026-02-20 00:35:23 -08:00
2023-09-15 13:16:46 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-09-22 21:15:45 +01:00
2024-11-18 18:09:19 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-03-28 14:48:15 -07:00
2023-10-02 10:42:00 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-03-17 11:04:18 -07:00
2024-11-02 11:46:46 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2025-03-31 20:41:24 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2025-02-24 16:22:20 -08:00
2025-10-04 14:19:52 -07:00
2025-09-18 11:31:36 -07:00
2024-09-05 10:40:14 -07:00
2025-02-19 12:42:48 -05:00
2024-04-05 07:52:14 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2025-09-24 10:02:32 -04:00
2024-05-08 10:49:12 -07:00
2025-07-31 10:21:55 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-25 12:42:02 -08:00
2025-07-10 11:25:28 -07:00
2024-07-23 10:32:50 -07:00
2023-11-03 09:37:24 -07:00
2025-10-04 14:19:52 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-11-05 14:37:56 -08:00
2024-02-19 02:48:36 -10:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2023-10-19 11:46:08 -07:00
2023-12-08 22:33:12 -08:00
2025-01-23 14:11:16 -08:00
2024-11-18 13:29:30 -08:00
2026-02-20 00:35:23 -08:00
2024-05-13 10:43:25 -07:00
2026-03-11 09:57:47 -07:00
2026-03-11 10:00:18 -07:00
2026-02-20 00:35:23 -08:00
2025-08-20 00:39:51 -07:00
2025-08-20 00:39:51 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-04-09 13:32:03 -07:00
2026-02-20 00:35:23 -08:00
2024-11-13 22:36:15 -08:00
2023-08-16 20:57:50 -07:00
2024-10-19 19:39:18 -07:00
2026-02-20 00:35:23 -08:00
2025-07-14 16:04:04 -07:00
2026-02-20 00:35:23 -08:00
2023-12-06 14:27:33 -08:00
2026-02-18 16:06:08 -05:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-01-28 15:48:21 -08:00
2025-03-19 14:15:34 -07:00
2024-01-03 15:33:33 -08:00
2026-02-20 00:35:23 -08:00
2025-05-04 03:28:56 +01:00
2026-02-20 00:35:23 -08:00
2024-07-03 09:10:48 -07:00
2026-03-12 01:50:31 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-06-11 02:22:31 +00:00
2024-11-20 11:36:13 -08:00
2024-11-20 11:36:13 -08:00
2024-12-04 08:14:59 -08:00
2024-10-10 14:36:39 -07:00
2024-09-27 14:28:06 -07:00
2026-02-20 00:35:23 -08:00
2025-04-01 07:12:50 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-25 11:36:32 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-11-06 17:20:31 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-10-31 12:46:05 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-11-02 11:46:46 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2025-01-14 23:07:24 -08:00
2024-11-02 11:46:46 -07:00
2024-11-27 14:25:17 -08:00
2025-05-29 15:09:36 +01:00
2026-03-10 14:27:11 -07:00
2024-07-18 12:43:34 -07:00
2024-05-22 18:05:49 -07:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2026-02-20 00:35:23 -08:00
2024-02-19 02:48:36 -10:00
2026-02-10 16:06:58 +00:00
2025-05-31 10:49:50 -07:00
2026-02-20 00:35:23 -08:00
2026-03-05 14:14:41 -08:00
2026-02-20 00:35:23 -08:00
2024-02-19 17:47:16 -08:00
2024-02-08 14:29:05 -07:00
2026-02-20 00:35:23 -08:00