1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift Collections open source project
//
// Copyright (c) 2023 - 2024 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
//
//===----------------------------------------------------------------------===//
// #############################################################################
// # #
// # DO NOT EDIT THIS FILE; IT IS AUTOGENERATED. #
// # #
// #############################################################################
// In single module mode, we need these declarations to be internal,
// but in regular builds we want them to be public. Unfortunately
// the current best way to do this is to duplicate all definitions.
#if COLLECTIONS_SINGLE_MODULE
/// Returns `x` as its concrete type `U`, or `nil` if `x` has a different
/// concrete type.
///
/// This cast can be useful for dispatching to specializations of generic
/// functions.
@_transparent
@inlinable
internal func _specialize<T, U>(_ x: T, for: U.Type) -> U? {
// Note: this was ported from recent versions of the Swift stdlib.
guard T.self == U.self else {
return nil
}
return _identityCast(x, to: U.self)
}
#else // !COLLECTIONS_SINGLE_MODULE
/// Returns `x` as its concrete type `U`, or `nil` if `x` has a different
/// concrete type.
///
/// This cast can be useful for dispatching to specializations of generic
/// functions.
@_transparent
@inlinable
public func _specialize<T, U>(_ x: T, for: U.Type) -> U? {
// Note: this was ported from recent versions of the Swift stdlib.
guard T.self == U.self else {
return nil
}
return _identityCast(x, to: U.self)
}
#endif // COLLECTIONS_SINGLE_MODULE
|