use new noncopyable types infrastructure

The infrastructure underpinning the new feature NoncopyableGenerics is
mature enough to be used.
This commit is contained in:
Kavon Farvardin
2024-03-12 17:50:38 -07:00
parent af933c6723
commit 149c052ec5
44 changed files with 150 additions and 610 deletions

View File

@@ -486,19 +486,6 @@ struct RequireOSSAModules_t {
explicit operator bool() const { return bool(value); }
};
/// Help prevent confusion between different bools being passed around.
struct RequireNoncopyableGenerics_t {
private:
bool value;
public:
RequireNoncopyableGenerics_t(const ASTContext &ctx)
: RequireNoncopyableGenerics_t(ctx.LangOpts) {}
RequireNoncopyableGenerics_t(const LangOptions &opts)
: value(opts.hasFeature(Feature::NoncopyableGenerics)) {}
explicit operator bool() const { return value; }
};
class ModuleInterfaceCheckerImpl: public ModuleInterfaceChecker {
friend class ModuleInterfaceLoader;
ASTContext &Ctx;
@@ -507,26 +494,22 @@ class ModuleInterfaceCheckerImpl: public ModuleInterfaceChecker {
std::string BackupInterfaceDir;
ModuleInterfaceLoaderOptions Opts;
RequireOSSAModules_t RequiresOSSAModules;
RequireNoncopyableGenerics_t RequireNCGenerics;
public:
explicit ModuleInterfaceCheckerImpl(ASTContext &Ctx, StringRef cacheDir,
StringRef prebuiltCacheDir,
StringRef BackupInterfaceDir,
ModuleInterfaceLoaderOptions opts,
RequireOSSAModules_t requiresOSSAModules,
RequireNoncopyableGenerics_t requireNCGenerics)
RequireOSSAModules_t requiresOSSAModules)
: Ctx(Ctx), CacheDir(cacheDir), PrebuiltCacheDir(prebuiltCacheDir),
BackupInterfaceDir(BackupInterfaceDir),
Opts(opts), RequiresOSSAModules(requiresOSSAModules),
RequireNCGenerics(requireNCGenerics) {}
Opts(opts), RequiresOSSAModules(requiresOSSAModules) {}
explicit ModuleInterfaceCheckerImpl(ASTContext &Ctx, StringRef cacheDir,
StringRef prebuiltCacheDir,
ModuleInterfaceLoaderOptions opts,
RequireOSSAModules_t requiresOSSAModules,
RequireNoncopyableGenerics_t requireNCGenerics):
RequireOSSAModules_t requiresOSSAModules):
ModuleInterfaceCheckerImpl(Ctx, cacheDir, prebuiltCacheDir, StringRef(),
opts, requiresOSSAModules, requireNCGenerics) {}
opts, requiresOSSAModules) {}
std::vector<std::string>
getCompiledModuleCandidatesForInterface(StringRef moduleName,
StringRef interfacePath) override;
@@ -602,7 +585,6 @@ public:
bool SerializeDependencyHashes, bool TrackSystemDependencies,
ModuleInterfaceLoaderOptions Opts,
RequireOSSAModules_t RequireOSSAModules,
RequireNoncopyableGenerics_t RequireNCGenerics,
bool silenceInterfaceDiagnostics);
/// Unconditionally build \p InPath (a swiftinterface file) to \p OutPath (as
@@ -657,8 +639,7 @@ private:
const ClangImporterOptions &clangImporterOpts,
const CASOptions &casOpts,
bool suppressRemarks,
RequireOSSAModules_t requireOSSAModules,
RequireNoncopyableGenerics_t requireNCGenerics);
RequireOSSAModules_t requireOSSAModules);
bool extractSwiftInterfaceVersionAndArgs(CompilerInvocation &subInvocation,
SwiftInterfaceInfo &interfaceInfo,
StringRef interfacePath,
@@ -671,8 +652,7 @@ public:
ModuleInterfaceLoaderOptions LoaderOpts, bool buildModuleCacheDirIfAbsent,
StringRef moduleCachePath, StringRef prebuiltCachePath,
StringRef backupModuleInterfaceDir, bool serializeDependencyHashes,
bool trackSystemDependencies, RequireOSSAModules_t requireOSSAModules,
RequireNoncopyableGenerics_t requireNCGenerics);
bool trackSystemDependencies, RequireOSSAModules_t requireOSSAModules);
template<typename ...ArgTypes>
static InFlightDiagnostic diagnose(StringRef interfacePath,