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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
// REQUIRES: objc_interop
// RUN: %empty-directory(%t.mod)
// RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -I %t.mod -api-diff-data-file %S/Inputs/string-representable.json -emit-migrated-file-path %t/string-representable.swift.result -disable-migrator-fixits -o /dev/null -F %S/mock-sdk
// RUN: diff -u %S/string-representable.swift.expected %t/string-representable.swift.result
import Cities
import Bar
func foo(_ c: Container) -> String {
c.Value = convertToNewAttribute("")
c.addingAttributes(convertToCitiesContainerAttributeDictionary(["a": "b", "a": "b", "a": "b"]))
c.addingAttributes(convertToCitiesContainerAttributeDictionary(["a": "b", "a": "b", "a": "b"]))
c.adding(attributes: convertToSimpleAttributeDictionary(["a": 1, "a": 2, "a": 3]))
c.adding(optionalAttributes: convertToOptionalSimpleAttributeDictionary(["a": 1, "a": 2, "a": 3]))
_ = Container(optionalAttributes: convertToOptionalSimpleAttributeDictionary([:]))
_ = Container(optionalAttrArray: convertToOptionalSimpleAttributeArray([]))
_ = Container(optionalAttributes: nil)
_ = Container(optionalAttrArray: nil)
c.adding(attrArray: convertToSimpleAttributeArray(["key1", "key2"]))
c.add(single: convertToSimpleAttribute(""))
c.add(singleOptional: convertToOptionalSimpleAttribute(""))
c.add(singleOptional: nil)
_ = convertFromSimpleAttributeDictionary(c.getAttrDictionary())
_ = convertFromOptionalSimpleAttributeDictionary(c.getOptionalAttrDictionary())
_ = convertFromSimpleAttribute(c.getSingleAttr())
_ = convertFromOptionalSimpleAttribute(c.getOptionalSingleAttr())
_ = convertFromSimpleAttributeArray(c.getAttrArray())
_ = convertFromOptionalSimpleAttributeArray(c.getOptionalAttrArray())
c.addingAttributes(c.getAttrDictionary())
c.adding(optionalAttributes: c.getAttrDictionary())
c.attrDict = convertToSimpleAttributeDictionary(["a": "b", "a": "b", "a": "b"])
c.attrArr = convertToSimpleAttributeArray(["key1", "key2"])
_ = convertFromSimpleAttributeArray(c.attrArr)
_ = convertFromSimpleAttributeDictionary(c.attrDict)
c.adding(attributes: c.attrDict)
_ = Container(optionalAttrArray: c.attrArr)
c.adding(optionalAttributes: c.optionalAttrDict)
_ = convertFromNewAttribute(AttributeWrapper.NewAttribute)
c.Value = AttributeWrapper.NewAttribute
c.optionalAttrDict = nil
return convertFromNewAttribute(c.Value)
}
class C: BarForwardDeclaredClass {}
func revert(_ a: AwesomeCityAttribute, b: Wrapper.Attribute) {
_ = "somevalue"
_ = "somevalue"
_ = "somevalue"
_ = "somevalue"
_ = a
_ = "somevalue"
_ = "somevalue"
_ = b
_ = NewAttributeWrapper.NewKnownAttr
_ = "somevalue"
_ = "somevalue"
}
func bar(_ c: Container) {
let attr: AliasAttribute = ""
c.add(single: attr)
}
public class SubContainer: Container {
public override func adding(optionalAttributes subname: [String: Any]?) {
// Local variable inserted by Swift 4.2 migrator.
let subname = convertFromOptionalSimpleAttributeDictionary(subname)
}
public override func adding(attributes myname: [String: Any]) {
// Local variable inserted by Swift 4.2 migrator.
let myname = convertFromSimpleAttributeDictionary(myname)
}
public override func adding(attrArray: [String]) {
// Local variable inserted by Swift 4.2 migrator.
let attrArray = convertFromSimpleAttributeArray(attrArray)
}
public override func add(single: String) {
// Local variable inserted by Swift 4.2 migrator.
let single = convertFromSimpleAttribute(single)
}
public override func add(singleOptional: String?) {
// Local variable inserted by Swift 4.2 migrator.
let singleOptional = convertFromOptionalSimpleAttribute(singleOptional)
}
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromOptionalSimpleAttributeDictionary(_ input: [SimpleAttribute: Any]?) -> [String: Any]? {
guard let input = input else { return nil }
return Dictionary(uniqueKeysWithValues: input.map {key, value in (key.rawValue, value)})
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromSimpleAttributeDictionary(_ input: [SimpleAttribute: Any]) -> [String: Any] {
return Dictionary(uniqueKeysWithValues: input.map {key, value in (key.rawValue, value)})
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromSimpleAttributeArray(_ input: [SimpleAttribute]) -> [String] {
return input.map { key in key.rawValue }
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromSimpleAttribute(_ input: SimpleAttribute) -> String {
return input.rawValue
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromOptionalSimpleAttribute(_ input: SimpleAttribute?) -> String? {
guard let input = input else { return nil }
return input.rawValue
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToNewAttribute(_ input: String) -> NewAttribute {
return NewAttribute(rawValue: input)
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToCitiesContainerAttributeDictionary(_ input: [String: Any]) -> [Cities.Container.Attribute: Any] {
return Dictionary(uniqueKeysWithValues: input.map { key, value in (Cities.Container.Attribute(rawValue: key), value)})
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToSimpleAttributeDictionary(_ input: [String: Any]) -> [SimpleAttribute: Any] {
return Dictionary(uniqueKeysWithValues: input.map { key, value in (SimpleAttribute(rawValue: key), value)})
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToOptionalSimpleAttributeDictionary(_ input: [String: Any]?) -> [SimpleAttribute: Any]? {
guard let input = input else { return nil }
return Dictionary(uniqueKeysWithValues: input.map { key, value in (SimpleAttribute(rawValue: key), value)})
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToOptionalSimpleAttributeArray(_ input: [String]?) -> [SimpleAttribute]? {
guard let input = input else { return nil }
return input.map { key in SimpleAttribute(key) }
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToSimpleAttributeArray(_ input: [String]) -> [SimpleAttribute] {
return input.map { key in SimpleAttribute(key) }
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToSimpleAttribute(_ input: String) -> SimpleAttribute {
return SimpleAttribute(rawValue: input)
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToOptionalSimpleAttribute(_ input: String?) -> SimpleAttribute? {
guard let input = input else { return nil }
return SimpleAttribute(rawValue: input)
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromOptionalSimpleAttributeArray(_ input: [SimpleAttribute]?) -> [String]? {
guard let input = input else { return nil }
return input.map { key in key.rawValue }
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromNewAttribute(_ input: NewAttribute) -> String {
return input.rawValue
}
|