Files
swift-mirror/include/swift/Basic/CASOptions.h
Steven Wu 431f097e7c [Caching] Mark -typecheck action as caching supported
This is a regression causing lots of cached diagnostics tests not
functioning since the cached diagnostics processors are not initialized
for those tests which are supposed to test diagnostics caching.

The regression is caused by the fix that the typecheck module interface
job need to run a typecheck job in the sub-invocation. Now the typecheck
module interface job is correctly setup to avoid diagnostics about
unsupported file system error.
2024-05-13 09:36:12 -07:00

85 lines
2.5 KiB
C++

//===--- CASOptions.h - CAS & caching options -------------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file defines the CASOptions class, which provides various
// CAS and caching flags.
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_BASIC_CASOPTIONS_H
#define SWIFT_BASIC_CASOPTIONS_H
#include "clang/CAS/CASOptions.h"
#include "llvm/ADT/Hashing.h"
namespace swift {
class CASOptions final {
public:
/// Enable compiler caching.
bool EnableCaching = false;
/// Enable compiler caching remarks.
bool EnableCachingRemarks = false;
/// Skip replaying outputs from cache.
bool CacheSkipReplay = false;
/// CASOptions
clang::CASOptions CASOpts;
/// CASFS Root.
std::vector<std::string> CASFSRootIDs;
/// Clang Include Trees.
std::vector<std::string> ClangIncludeTrees;
/// CacheKey for input file.
std::string InputFileKey;
/// Cache key for imported bridging header.
std::string BridgingHeaderPCHCacheKey;
/// Has immutable file system input.
bool HasImmutableFileSystem = false;
/// Get the CAS configuration flags.
void enumerateCASConfigurationFlags(
llvm::function_ref<void(llvm::StringRef)> Callback) const;
/// Check to see if a CASFileSystem is required.
bool requireCASFS() const {
return EnableCaching &&
(!CASFSRootIDs.empty() || !ClangIncludeTrees.empty() ||
!InputFileKey.empty() || !BridgingHeaderPCHCacheKey.empty());
}
/// Return a hash code of any components from these options that should
/// contribute to a Swift Bridging PCH hash.
llvm::hash_code getPCHHashComponents() const {
// The CASIDs are generated from scanner, thus not part of the hash since
// they will always be empty when requested.
// TODO: Add frozen clang::CASOptions to the hash.
return llvm::hash_combine(EnableCaching);
}
/// Return a hash code of any components from these options that should
/// contribute to a Swift Dependency Scanning hash.
llvm::hash_code getModuleScanningHashComponents() const {
return getPCHHashComponents();
}
};
} // namespace swift
#endif // SWIFT_BASIC_CASOPTIONS_H