|
17 | 17 |
|
18 | 18 | #include "swift/Frontend/Frontend.h"
|
19 | 19 | #include "swift/AST/ASTContext.h"
|
| 20 | +#include "swift/AST/AvailabilityDomain.h" |
20 | 21 | #include "swift/AST/DiagnosticsFrontend.h"
|
21 | 22 | #include "swift/AST/DiagnosticsSema.h"
|
22 | 23 | #include "swift/AST/FileSystem.h"
|
|
29 | 30 | #include "swift/Basic/Platform.h"
|
30 | 31 | #include "swift/Basic/SourceManager.h"
|
31 | 32 | #include "swift/Basic/Statistic.h"
|
| 33 | +#include "swift/DependencyScan/ModuleDependencyScanner.h" |
32 | 34 | #include "swift/Frontend/CachingUtils.h"
|
33 | 35 | #include "swift/Frontend/CompileJobCacheKey.h"
|
34 | 36 | #include "swift/Frontend/ModuleInterfaceLoader.h"
|
35 | 37 | #include "swift/Parse/Lexer.h"
|
36 | 38 | #include "swift/SIL/SILModule.h"
|
37 | 39 | #include "swift/SILOptimizer/PassManager/Passes.h"
|
38 | 40 | #include "swift/SILOptimizer/Utils/Generics.h"
|
| 41 | +#include "swift/Serialization/ScanningLoaders.h" |
39 | 42 | #include "swift/Serialization/SerializationOptions.h"
|
40 | 43 | #include "swift/Serialization/SerializedModuleLoader.h"
|
41 |
| -#include "swift/Serialization/ScanningLoaders.h" |
42 |
| -#include "swift/DependencyScan/ModuleDependencyScanner.h" |
43 | 44 | #include "swift/Strings.h"
|
44 | 45 | #include "swift/Subsystems.h"
|
45 | 46 | #include "clang/AST/ASTContext.h"
|
46 | 47 | #include "llvm/ADT/Hashing.h"
|
47 | 48 | #include "llvm/ADT/IntrusiveRefCntPtr.h"
|
48 | 49 | #include "llvm/ADT/SmallVector.h"
|
49 |
| -#include "llvm/TargetParser/Triple.h" |
50 | 50 | #include "llvm/CAS/ActionCache.h"
|
51 | 51 | #include "llvm/CAS/BuiltinUnifiedCASDatabases.h"
|
52 | 52 | #include "llvm/CAS/CASFileSystem.h"
|
|
55 | 55 | #include "llvm/Support/MemoryBuffer.h"
|
56 | 56 | #include "llvm/Support/Path.h"
|
57 | 57 | #include "llvm/Support/Process.h"
|
58 |
| -#include "llvm/Support/VirtualOutputBackends.h" |
59 | 58 | #include "llvm/Support/ThreadPool.h"
|
| 59 | +#include "llvm/Support/VirtualOutputBackends.h" |
| 60 | +#include "llvm/TargetParser/Triple.h" |
60 | 61 | #include <llvm/ADT/StringExtras.h>
|
61 | 62 |
|
62 | 63 | using namespace swift;
|
@@ -1392,6 +1393,28 @@ bool CompilerInstance::createFilesForMainModule(
|
1392 | 1393 | return false;
|
1393 | 1394 | }
|
1394 | 1395 |
|
| 1396 | +static void configureAvailabilityDomains(const ASTContext &ctx, |
| 1397 | + const FrontendOptions &opts, |
| 1398 | + ModuleDecl *mainModule) { |
| 1399 | + llvm::SmallDenseMap<Identifier, CustomAvailabilityDomain *> domainMap; |
| 1400 | + auto createAndInsertDomain = [&](const std::string &name, |
| 1401 | + CustomAvailabilityDomain::Kind kind) { |
| 1402 | + auto *domain = CustomAvailabilityDomain::create( |
| 1403 | + ctx, name, mainModule, CustomAvailabilityDomain::Kind::Enabled); |
| 1404 | + bool inserted = domainMap.insert({domain->getName(), domain}).second; |
| 1405 | + ASSERT(inserted); // Domains must be unique. |
| 1406 | + }; |
| 1407 | + |
| 1408 | + for (auto enabled : opts.AvailabilityDomains.EnabledDomains) |
| 1409 | + createAndInsertDomain(enabled, CustomAvailabilityDomain::Kind::Enabled); |
| 1410 | + for (auto disabled : opts.AvailabilityDomains.DisabledDomains) |
| 1411 | + createAndInsertDomain(disabled, CustomAvailabilityDomain::Kind::Disabled); |
| 1412 | + for (auto dynamic : opts.AvailabilityDomains.DynamicDomains) |
| 1413 | + createAndInsertDomain(dynamic, CustomAvailabilityDomain::Kind::Dynamic); |
| 1414 | + |
| 1415 | + mainModule->setAvailabilityDomains(std::move(domainMap)); |
| 1416 | +} |
| 1417 | + |
1395 | 1418 | ModuleDecl *CompilerInstance::getMainModule() const {
|
1396 | 1419 | if (MainModule)
|
1397 | 1420 | return MainModule;
|
@@ -1441,6 +1464,9 @@ ModuleDecl *CompilerInstance::getMainModule() const {
|
1441 | 1464 | if (Invocation.getLangOptions().hasFeature(Feature::WarnUnsafe))
|
1442 | 1465 | MainModule->setStrictMemorySafety(true);
|
1443 | 1466 |
|
| 1467 | + configureAvailabilityDomains(getASTContext(), |
| 1468 | + Invocation.getFrontendOptions(), MainModule); |
| 1469 | + |
1444 | 1470 | if (!Invocation.getFrontendOptions()
|
1445 | 1471 | .SwiftInterfaceCompilerVersion.empty()) {
|
1446 | 1472 | auto compilerVersion =
|
|
0 commit comments