mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This patch fixes a handful of header references that moved, or were transitively included and aren't anymore.
65 lines
2.3 KiB
C++
65 lines
2.3 KiB
C++
//===--- ResilienceExpansion.h ----------------------------------*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2017 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_AST_RESILIENCE_EXPANSION_H
|
|
#define SWIFT_AST_RESILIENCE_EXPANSION_H
|
|
|
|
#include "llvm/Support/raw_ostream.h"
|
|
#include "llvm/Support/ErrorHandling.h"
|
|
|
|
namespace swift {
|
|
|
|
/// A specification for how much to expand resilient types.
|
|
///
|
|
/// Right now, this is just a placeholder; a proper expansion
|
|
/// specification will probably need to be able to express things like
|
|
/// 'expand any type that was fragile in at least such-and-such
|
|
/// version'.
|
|
enum class ResilienceExpansion : unsigned {
|
|
/// A minimal expansion does not expand types that do not have a
|
|
/// universally fragile representation. This provides a baseline
|
|
/// for what all components can possibly support.
|
|
/// - All exported functions must be compiled to at least provide
|
|
/// a minimally-expanded entrypoint, or else it will be
|
|
/// impossible for components that do not have that type
|
|
/// to call the function.
|
|
/// - Similarly, any sort of abstracted function call must go through
|
|
/// a minimally-expanded entrypoint.
|
|
///
|
|
/// Minimal expansion will generally pass all resilient types indirectly.
|
|
Minimal,
|
|
|
|
/// A maximal expansion expands all types with fragile
|
|
/// representation, even when they're not universally fragile. This
|
|
/// is better when internally manipulating values or when working
|
|
/// with specialized entry points for a function.
|
|
Maximal,
|
|
|
|
Last_ResilienceExpansion = Maximal
|
|
};
|
|
|
|
inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os,
|
|
ResilienceExpansion expansion) {
|
|
switch (expansion) {
|
|
case ResilienceExpansion::Minimal:
|
|
return os << "Minimal";
|
|
case ResilienceExpansion::Maximal:
|
|
return os << "Maximal";
|
|
}
|
|
llvm_unreachable("Unhandled ResilienceExpansion in switch");
|
|
}
|
|
|
|
} // namespace swift
|
|
|
|
#endif // LLVM_SWIFT_AST_CAPTURE_INFO_H
|
|
|