stdlib: Address a couple of ABI FIXMEs by deleting code

We have an implicit conversion to AnyHashable, so there's no
need to have the special subscript on Dictionary at all.
This commit is contained in:
Slava Pestov
2017-02-21 17:11:13 -08:00
parent 781820b470
commit 66bcf5b756
6 changed files with 6 additions and 48 deletions

View File

@@ -0,0 +1,43 @@
//===----------------------------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
// Convenience APIs for Set<AnyHashable>
//===----------------------------------------------------------------------===//
extension Set where Element == AnyHashable {
public mutating func insert<ConcreteElement : Hashable>(
_ newMember: ConcreteElement
) -> (inserted: Bool, memberAfterInsert: ConcreteElement) {
let (inserted, memberAfterInsert) =
insert(AnyHashable(newMember))
return (
inserted: inserted,
memberAfterInsert: memberAfterInsert.base as! ConcreteElement)
}
@discardableResult
public mutating func update<ConcreteElement : Hashable>(
with newMember: ConcreteElement
) -> ConcreteElement? {
return update(with: AnyHashable(newMember))
.map { $0.base as! ConcreteElement }
}
@discardableResult
public mutating func remove<ConcreteElement : Hashable>(
_ member: ConcreteElement
) -> ConcreteElement? {
return remove(AnyHashable(member))
.map { $0.base as! ConcreteElement }
}
}