File: objc_nsstring_bridge.swift

package info (click to toggle)
swiftlang 6.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,791,532 kB
  • sloc: cpp: 9,901,743; ansic: 2,201,431; asm: 1,091,827; python: 308,252; objc: 82,166; f90: 80,126; lisp: 38,358; pascal: 25,559; sh: 20,429; ml: 5,058; perl: 4,745; makefile: 4,484; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (66 lines) | stat: -rw-r--r-- 1,784 bytes parent folder | download | duplicates (2)
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
// 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: �

// 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")