mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
67 lines
1.7 KiB
Swift
67 lines
1.7 KiB
Swift
// RUN: %target-run-simple-swift | %FileCheck %s
|
||
// REQUIRES: executable_test
|
||
|
||
// REQUIRES: objc_interop
|
||
|
||
import Foundation
|
||
|
||
// Add a method to String to make sure a value is really a String and not
|
||
// implicitly converted from an NSString, since method lookup doesn't see through
|
||
// implicit conversions.
|
||
extension String {
|
||
func reallyAString() -> String { return self }
|
||
}
|
||
|
||
func printString(_ x: String) {
|
||
print(x)
|
||
}
|
||
|
||
func printDescription(_ o: AnyObject) {
|
||
print(o.description!.reallyAString())
|
||
}
|
||
|
||
class Pootie : NSObject {
|
||
override var description : String {
|
||
return "cole me down on the panny sty"
|
||
}
|
||
|
||
func sinePittyOnRunnyKine(_ x: String) -> String {
|
||
return "\(x). sa-da-tay"
|
||
}
|
||
}
|
||
|
||
var a:NSNumber = 2001
|
||
printDescription(a) // CHECK: 2001
|
||
|
||
var p = Pootie()
|
||
printDescription(p) // CHECK: cole me down on the panny sty
|
||
|
||
var s1:String = "wa-da-ta"
|
||
// We don't say 'var s2:NSString = "..."' in order to keep this test independent of the
|
||
// ABI of NSString.convertFromStringLiteral.
|
||
var s2s:String = "kappa-chow"
|
||
var s2 = s2s as NSString
|
||
printDescription(s2) // CHECK: kappa-chow
|
||
printDescription(p.sinePittyOnRunnyKine(s2 as String) as NSString) // CHECK: kappa-chow. sa-da-tay
|
||
|
||
var s3:String = s2.appendingPathComponent(s1).reallyAString()
|
||
printDescription(s3 as NSString) // CHECK: kappa-chow/wa-da-ta
|
||
|
||
// Unicode conversion
|
||
var s4 = NSString(string: "\u{f8ff}\u{fffd}") as String
|
||
printDescription(s4 as NSString) // CHECK: <EFBFBD>
|
||
|
||
// NSCFConstantString conversion
|
||
var s5 : String = NSExceptionName.rangeException.rawValue as String
|
||
printDescription(s5 as NSString) // CHECK: NSRangeException
|
||
|
||
// Check conversions to AnyObject
|
||
var s6: NSString = "foo"
|
||
var ao: Any = s6.copy()
|
||
var s7 = ao as! NSString
|
||
var s8 = ao as? String
|
||
|
||
|
||
// CHECK-NEXT: done
|
||
print("done")
|