Skip to content

[stdlib] Add @usableFromInline to internal typealiases that need it #17296

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 18, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions stdlib/public/core/Array.swift
Original file line number Diff line number Diff line change
Expand Up @@ -299,9 +299,11 @@
@_fixed_layout
public struct Array<Element>: _DestructorSafeContainer {
#if _runtime(_ObjC)
internal typealias _Buffer = _ArrayBuffer<Element>
@usableFromInline
internal typealias _Buffer = _ArrayBuffer<Element>
#else
internal typealias _Buffer = _ContiguousArrayBuffer<Element>
@usableFromInline
internal typealias _Buffer = _ContiguousArrayBuffer<Element>
#endif

@usableFromInline
Expand Down
2 changes: 2 additions & 0 deletions stdlib/public/core/ArrayBuffer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#if _runtime(_ObjC)
import SwiftShims

@usableFromInline
internal typealias _ArrayBridgeStorage
= _BridgeStorage<_ContiguousArrayStorageBase, _NSArrayCore>

Expand Down Expand Up @@ -520,6 +521,7 @@ extension _ArrayBuffer {

//===--- private --------------------------------------------------------===//
internal typealias Storage = _ContiguousArrayStorage<Element>
@usableFromInline
internal typealias NativeBuffer = _ContiguousArrayBuffer<Element>

@inlinable
Expand Down
3 changes: 2 additions & 1 deletion stdlib/public/core/ArraySlice.swift
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@

@_fixed_layout
public struct ArraySlice<Element>: _DestructorSafeContainer {
internal typealias _Buffer = _SliceBuffer<Element>
@usableFromInline
internal typealias _Buffer = _SliceBuffer<Element>

@usableFromInline
internal var _buffer: _Buffer
Expand Down
1 change: 1 addition & 0 deletions stdlib/public/core/Character.swift
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ extension Character : CustomDebugStringConvertible {
}

extension Character {
@usableFromInline
internal typealias _SmallUTF16 = _UIntBuffer<UInt64, Unicode.UTF16.CodeUnit>

@inlinable // FIXME(sil-serialize-all)
Expand Down
2 changes: 2 additions & 0 deletions stdlib/public/core/Codable.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -1490,6 +1490,7 @@ internal class _KeyedEncodingContainerBase<Key : CodingKey> {
internal final class _KeyedEncodingContainerBox<
Concrete : KeyedEncodingContainerProtocol
> : _KeyedEncodingContainerBase<Concrete.Key> {
@usableFromInline
typealias Key = Concrete.Key

@usableFromInline
Expand Down Expand Up @@ -1663,6 +1664,7 @@ internal class _KeyedDecodingContainerBase<Key : CodingKey> {
internal final class _KeyedDecodingContainerBox<
Concrete : KeyedDecodingContainerProtocol
> : _KeyedDecodingContainerBase<Concrete.Key> {
@usableFromInline
typealias Key = Concrete.Key

@usableFromInline
Expand Down
3 changes: 2 additions & 1 deletion stdlib/public/core/ContiguousArray.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
/// which `ContiguousArray` shares most properties and methods.
@_fixed_layout
public struct ContiguousArray<Element>: _DestructorSafeContainer {
internal typealias _Buffer = _ContiguousArrayBuffer<Element>
@usableFromInline
internal typealias _Buffer = _ContiguousArrayBuffer<Element>

@usableFromInline
internal var _buffer: _Buffer
Expand Down
48 changes: 44 additions & 4 deletions stdlib/public/core/Dictionary.swift
Original file line number Diff line number Diff line change
Expand Up @@ -382,8 +382,11 @@ import SwiftShims
@_fixed_layout
public struct Dictionary<Key: Hashable, Value> {

@usableFromInline
internal typealias _Self = Dictionary<Key, Value>
@usableFromInline
internal typealias _VariantBuffer = _VariantDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias _NativeBuffer = _NativeDictionaryBuffer<Key, Value>

/// The element type of a dictionary: a tuple containing an individual
Expand Down Expand Up @@ -1835,6 +1838,7 @@ public func _dictionaryBridgeFromObjectiveCConditional<
internal class _RawNativeDictionaryStorage
: _SwiftNativeNSDictionary, _NSDictionaryCore
{
@usableFromInline
internal typealias RawStorage = _RawNativeDictionaryStorage

@usableFromInline // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -2008,7 +2012,9 @@ internal class _TypedNativeDictionaryStorage<Key, Value>
final internal class _HashableTypedNativeDictionaryStorage<Key: Hashable, Value>
: _TypedNativeDictionaryStorage<Key, Value> {

@usableFromInline
internal typealias FullContainer = Dictionary<Key, Value>
@usableFromInline
internal typealias Buffer = _NativeDictionaryBuffer<Key, Value>

// This type is made with allocWithTailElems, so no init is ever called.
Expand Down Expand Up @@ -2157,11 +2163,16 @@ final internal class _HashableTypedNativeDictionaryStorage<Key: Hashable, Value>
@_fixed_layout
internal struct _NativeDictionaryBuffer<Key, Value> {

@usableFromInline // FIXME(sil-serialize-all)
internal typealias RawStorage = _RawNativeDictionaryStorage
@usableFromInline // FIXME(sil-serialize-all)
internal typealias TypedStorage = _TypedNativeDictionaryStorage<Key, Value>
@usableFromInline // FIXME(sil-serialize-all)
internal typealias Buffer = _NativeDictionaryBuffer<Key, Value>
@usableFromInline // FIXME(sil-serialize-all)
internal typealias Index = _NativeDictionaryIndex<Key, Value>

@usableFromInline
internal typealias SequenceElementWithoutLabels = (Key, Value)

/// See this comments on _RawNativeDictionaryStorage and its subclasses to
Expand Down Expand Up @@ -2406,8 +2417,10 @@ internal struct _NativeDictionaryBuffer<Key, Value> {

extension _NativeDictionaryBuffer where Key: Hashable
{
@usableFromInline
internal typealias HashTypedStorage =
_HashableTypedNativeDictionaryStorage<Key, Value>
@usableFromInline
internal typealias SequenceElement = (key: Key, value: Value)

@inlinable // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -2657,7 +2670,9 @@ extension _NativeDictionaryBuffer where Key: Hashable
final internal class _NativeDictionaryNSEnumerator<Key, Value>
: _SwiftNativeNSEnumerator, _NSEnumerator {

@usableFromInline
internal typealias Buffer = _NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias Index = _NativeDictionaryIndex<Key, Value>

@inlinable // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -2739,9 +2754,13 @@ final internal class _NativeDictionaryNSEnumerator<Key, Value>
final internal class _SwiftDeferredNSDictionary<Key: Hashable, Value>
: _SwiftNativeNSDictionary, _NSDictionaryCore {

@usableFromInline
internal typealias NativeBuffer = _NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias BridgedBuffer = _NativeDictionaryBuffer<AnyObject, AnyObject>
@usableFromInline
internal typealias NativeIndex = _NativeDictionaryIndex<Key, Value>
@usableFromInline
internal typealias BridgedIndex = _NativeDictionaryIndex<AnyObject, AnyObject>

@inlinable // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -3038,11 +3057,16 @@ internal struct _CocoaDictionaryBuffer: _HashBuffer {
self.cocoaDictionary = cocoaDictionary
}

@usableFromInline
internal typealias Index = _CocoaDictionaryIndex
@usableFromInline
internal typealias SequenceElement = (AnyObject, AnyObject)
@usableFromInline
internal typealias SequenceElementWithoutLabels = (AnyObject, AnyObject)

@usableFromInline
internal typealias Key = AnyObject
@usableFromInline
internal typealias Value = AnyObject

@inlinable // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -3161,13 +3185,19 @@ internal struct _CocoaDictionaryBuffer: _HashBuffer {
@_frozen
internal enum _VariantDictionaryBuffer<Key: Hashable, Value>: _HashBuffer {

@usableFromInline
internal typealias NativeBuffer = _NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias NativeIndex = _NativeDictionaryIndex<Key, Value>
#if _runtime(_ObjC)
@usableFromInline
internal typealias CocoaBuffer = _CocoaDictionaryBuffer
#endif
@usableFromInline
internal typealias SequenceElement = (key: Key, value: Value)
@usableFromInline
internal typealias SequenceElementWithoutLabels = (key: Key, value: Value)
@usableFromInline
internal typealias SelfType = _VariantDictionaryBuffer

case native(NativeBuffer)
Expand Down Expand Up @@ -3389,6 +3419,7 @@ internal enum _VariantDictionaryBuffer<Key: Hashable, Value>: _HashBuffer {
// _HashBuffer conformance
//

@usableFromInline
internal typealias Index = DictionaryIndex<Key, Value>

@inlinable // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -4259,9 +4290,12 @@ extension _CocoaDictionaryIndex {
@_frozen // FIXME(sil-serialize-all)
@usableFromInline // FIXME(sil-serialize-all)
internal enum DictionaryIndexRepresentation<Key: Hashable, Value> {
@usableFromInline
typealias _Index = DictionaryIndex<Key, Value>
@usableFromInline
typealias _NativeIndex = _Index._NativeIndex
#if _runtime(_ObjC)
@usableFromInline
typealias _CocoaIndex = _Index._CocoaIndex
#endif

Expand Down Expand Up @@ -4292,8 +4326,10 @@ extension Dictionary {
// safe to copy the state. So, we cannot implement Index that is a value
// type for bridged NSDictionary in terms of Cocoa enumeration facilities.

@usableFromInline
internal typealias _NativeIndex = _NativeDictionaryIndex<Key, Value>
#if _runtime(_ObjC)
@usableFromInline
internal typealias _CocoaIndex = _CocoaDictionaryIndex
#endif

Expand Down Expand Up @@ -4423,6 +4459,7 @@ extension Dictionary.Index {
@_fixed_layout // FIXME(sil-serialize-all)
@usableFromInline
final internal class _CocoaDictionaryIterator: IteratorProtocol {
@usableFromInline
internal typealias Element = (AnyObject, AnyObject)

// Cocoa Dictionary iterator has to be a class, otherwise we cannot
Expand Down Expand Up @@ -4509,9 +4546,11 @@ final internal class _CocoaDictionaryIterator: IteratorProtocol {
@usableFromInline
@_frozen // FIXME(sil-serialize-all)
internal enum DictionaryIteratorRepresentation<Key: Hashable, Value> {
@usableFromInline
internal typealias _Iterator = DictionaryIterator<Key, Value>
internal typealias _NativeBuffer =
_NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias _NativeBuffer = _NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias _NativeIndex = _Iterator._NativeIndex

// For native buffer, we keep two indices to keep track of the iteration
Expand Down Expand Up @@ -4540,8 +4579,9 @@ public struct DictionaryIterator<Key: Hashable, Value>: IteratorProtocol {
// Index, which is multi-pass, it is suitable for implementing a
// IteratorProtocol, which is being consumed as iteration proceeds.

internal typealias _NativeBuffer =
_NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias _NativeBuffer = _NativeDictionaryBuffer<Key, Value>
@usableFromInline
internal typealias _NativeIndex = _NativeDictionaryIndex<Key, Value>

@usableFromInline
Expand Down
1 change: 1 addition & 0 deletions stdlib/public/core/ExistentialCollection.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,7 @@ internal class _AnyRandomAccessCollectionBox<Element>
@usableFromInline
internal final class _${Kind}Box<S : ${Kind}> : _Any${Kind}Box<S.Iterator.Element>
{
@usableFromInline
internal typealias Element = S.Element

@inline(__always)
Expand Down
1 change: 1 addition & 0 deletions stdlib/public/core/FixedArray.swift.gyb
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ extension _FixedArray${N} {
}

extension _FixedArray${N} : RandomAccessCollection, MutableCollection {
@usableFromInline
internal typealias Index = Int

@inlinable // FIXME(sil-serialize-all)
Expand Down
7 changes: 6 additions & 1 deletion stdlib/public/core/HeapBuffer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
//===----------------------------------------------------------------------===//

import SwiftShims
typealias _HeapObject = SwiftShims.HeapObject

@usableFromInline // FIXME(sil-serialize-all)
internal typealias _HeapObject = SwiftShims.HeapObject

@usableFromInline
internal protocol _HeapBufferHeader_ {
Expand All @@ -30,13 +32,16 @@ internal struct _HeapBufferHeader<T> : _HeapBufferHeader_ {
internal var value: T
}

@usableFromInline
internal typealias _HeapBuffer<Value,Element>
= ManagedBufferPointer<_HeapBufferHeader<Value>, Element>

@usableFromInline
internal typealias _HeapBufferStorage<Value,Element>
= ManagedBuffer<_HeapBufferHeader<Value>, Element>

extension ManagedBufferPointer where Header : _HeapBufferHeader_ {
@usableFromInline // FIXME(sil-serialize-all)
internal typealias Value = Header.Value

@inlinable // FIXME(sil-serialize-all)
Expand Down
5 changes: 5 additions & 0 deletions stdlib/public/core/KeyPath.swift
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ public class KeyPath<Root, Value>: PartialKeyPath<Root> {
}

// MARK: Implementation
@usableFromInline // FIXME(sil-serialize-all)
internal typealias Kind = KeyPathKind
@inlinable // FIXME(sil-serialize-all)
internal class var kind: Kind { return .readOnly }
Expand Down Expand Up @@ -650,6 +651,7 @@ internal final class ClassHolder<ProjectionType> {

/// The type of the scratch record passed to the runtime to record
/// accesses to guarantee exlcusive access.
@usableFromInline // FIXME(sil-serialize-all)
internal typealias AccessRecord = Builtin.UnsafeValueBuffer

@usableFromInline // FIXME(sil-serialize-all)
Expand Down Expand Up @@ -1036,8 +1038,10 @@ internal struct RawKeyPathComponent {
as: UnsafeRawPointer.self)
}

@usableFromInline // FIXME(sil-serialize-all)
internal typealias ComputedArgumentLayoutFn = @convention(thin)
(_ patternArguments: UnsafeRawPointer) -> (size: Int, alignmentMask: Int)
@usableFromInline // FIXME(sil-serialize-all)
internal typealias ComputedArgumentInitializerFn = @convention(thin)
(_ patternArguments: UnsafeRawPointer,
_ instanceArguments: UnsafeMutableRawPointer) -> ()
Expand Down Expand Up @@ -2181,6 +2185,7 @@ internal func _getKeyPath_instantiateInline(
unsafeBitCast(keyPathClass, to: OpaquePointer.self))
}

@usableFromInline // FIXME(sil-serialize-all)
internal typealias MetadataAccessor =
@convention(c) (UnsafeRawPointer) -> UnsafeRawPointer

Expand Down
1 change: 1 addition & 0 deletions stdlib/public/core/ManagedBuffer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,7 @@ public struct ManagedBufferPointer<Header, Element> : Equatable {
_nativeBuffer = Builtin.unsafeCastToNativeObject(buffer)
}

@usableFromInline // FIXME(sil-serialize-all)
internal typealias _My = ManagedBufferPointer

@inlinable // FIXME(sil-serialize-all)
Expand Down
1 change: 1 addition & 0 deletions stdlib/public/core/ReflectionMirror.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ internal func _getNormalizedType<T>(_: T, type: Any.Type) -> Any.Type
@_silgen_name("swift_reflectionMirror_count")
internal func _getChildCount<T>(_: T, type: Any.Type) -> Int

@usableFromInline // FIXME(sil-serialize-all)
internal typealias NameFreeFunc = @convention(c) (UnsafePointer<CChar>?) -> Void

@usableFromInline // FIXME(sil-serialize-all)
Expand Down
3 changes: 2 additions & 1 deletion stdlib/public/core/Sequence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,8 @@ internal struct _PrefixSequence<Base : IteratorProtocol>
internal struct _DropWhileSequence<Base : IteratorProtocol>
: Sequence, IteratorProtocol {

typealias Element = Base.Element
@usableFromInline
typealias Element = Base.Element

@usableFromInline
internal var _iterator: Base
Expand Down
Loading