[stdlib] remove unsafe escaping closure hack

This commit is contained in:
Alexis Beingessner
2016-12-07 15:43:18 -05:00
parent 360ba8a336
commit aba7ade5e9
2 changed files with 19 additions and 26 deletions

View File

@@ -447,24 +447,20 @@ ${orderingExplanation}
by areInIncreasingOrder:
(${IElement}, ${IElement}) -> Bool
) {
typealias EscapingBinaryPredicate =
(Iterator.Element, Iterator.Element) -> Bool
let escapableIsOrderedBefore =
unsafeBitCast(areInIncreasingOrder, to: EscapingBinaryPredicate.self)
let didSortUnsafeBuffer: Void? =
_withUnsafeMutableBufferPointerIfSupported {
(baseAddress, count) -> Void in
var bufferPointer =
UnsafeMutableBufferPointer(start: baseAddress, count: count)
bufferPointer.sort(by: escapableIsOrderedBefore)
bufferPointer.sort(by: areInIncreasingOrder)
return ()
}
if didSortUnsafeBuffer == nil {
_introSort(
&self,
subRange: startIndex..<endIndex,
by: escapableIsOrderedBefore)
by: areInIncreasingOrder)
}
}
}