Files
swift-mirror/test/Interpreter/SDK/objc_nsstring_bridge.swift
Jordan Rose bfa7566aec [ClangImporter] Put implicit properties into the list of all class members.
This allows "obj.description!" to work on iOS when 'obj' is an AnyObject,
even though 'description' is an implicit property created by the importer.

Swift SVN r18149
2014-05-16 00:30:55 +00:00

60 lines
1.6 KiB
Swift
Raw Blame History

// RUN: %target-run-simple-swift | FileCheck %s
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) {
println(x)
}
func printDescription(o: AnyObject) {
println(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:NSString = s2s
printDescription(s2) // CHECK: kappa-chow
printDescription(p.sinePittyOnRunnyKine(s2)) // CHECK: kappa-chow. sa-da-tay
var s3:String = s2.stringByAppendingPathComponent(s1).reallyAString()
printDescription(s3) // CHECK: kappa-chow/wa-da-ta
// Unicode conversion
var s4 : String = NSString(string: "\uf8ff\ufffd")
printDescription(s4) // CHECK: <EFBFBD>
// NSCFConstantString conversion
var s5 : String = NSRangeException
printDescription(s5) // CHECK: NSRangeException
// Check conversions to AnyObject
var s6: NSString = "foo"
var ao: AnyObject = s6.copy()
var s7 = (ao as NSString)!
var s8 = ao as String