blob: a01be614c01622b1543e74a355f40a25cd0b6b8e [file] [log] [blame]
// 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
}