File: DictBridging.test

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (111 lines) | stat: -rw-r--r-- 3,443 bytes parent folder | download
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
// -*- mode: swift; -*-
// Test formatters on bridged dictionaries in the REPL.
// REQUIRES: system-darwin
// REQUIRES: swift

// RUN: %lldb --repl < %s | FileCheck %s --check-prefix=DICT

import Foundation

// Baseline case: empty Dictionary
let d0: Dictionary<Int, Int> = [:]
// DICT-LABEL: d0: [Int : Int] = 0 key/value pairs

// All empty dictionaries use the same type-punned storage class.
let d0b = d0 as NSDictionary
// DICT-LABEL: d0b: {{(__RawNativeDictionaryStorage|__EmptyDictionarySingleton)}} = 0 key/value pairs

// Baseline case: native Dictionary of non-verbatim bridged elements
let d1: Dictionary<Int,Int> = [1:2]
// DICT-LABEL: d1: [Int : Int] = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = 1
// DICT-NEXT:      value = 2
// DICT-NEXT:    }
// DICT-NEXT:  }

// Non-verbatim bridging from Swift to Objective-C
let d1b = d1 as NSDictionary
// DICT-LABEL: d1b: _SwiftDeferredNSDictionary<Int, Int> = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = 1
// DICT-NEXT:      value = 2
// DICT-NEXT:    }
// DICT-NEXT:  }

// Baseline case: native Dictionary of verbatim bridged elements
let d2: Dictionary<NSObject,AnyObject> = [
  NSNumber(value: 1): NSNumber(value: 2),
]
// DICT-LABEL: d2: [NSObject : AnyObject] = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = Int64(1)
// DICT-NEXT:      value = Int64(2)
// DICT-NEXT:    }
// DICT-NEXT:  }

// Test formatters in Objective-C context.

// Empty singleton
let d_objc1 = NSArray(object: [:] as [NSNumber: NSNumber] as NSDictionary)
// DICT-LABEL: d_objc1: NSArray = 1 element {
// DICT-NEXT:    [0] = 0 key/value pairs
// DICT-NEXT:  }

// Verbatim bridging
let d_objc2 = NSArray(object: [1: 2] as [NSNumber: NSNumber] as NSDictionary)
// DICT-LABEL: d_objc2: NSArray = 1 element {
// DICT-NEXT:    [0] = 1 key/value pair {
// DICT-NEXT:      [0] = {
// DICT-NEXT:        key = Int64(1)
// DICT-NEXT:        value = Int64(2)
// DICT-NEXT:      }
// DICT-NEXT:    }
// DICT-NEXT:  }

// Non-verbatim bridging
let d_objc3 = NSArray(object: [1: 2] as [Int: Int] as NSDictionary)
// DICT-LABEL: d_objc3: NSArray = 1 element {
// DICT-NEXT:    [0] = 1 key/value pair {
// DICT-NEXT:      [0] = (key = 1, value = 2)
// DICT-NEXT:    }
// DICT-NEXT:  }

// Verbatim bridging from Swift to Objective-C
let d2b = d2 as NSDictionary
// DICT-LABEL: d2b: {{(_HashableTypedNativeDictionaryStorage|_DictionaryStorage)}}<NSObject, AnyObject> = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = Int64(1)
// DICT-NEXT:      value = Int64(2)
// DICT-NEXT:    }
// DICT-NEXT:  }

// Baseline case: NSDictionary
let d3 = NSDictionary(
  object: NSNumber(value: 2),
  forKey: NSNumber(value: 1)
)
// DICT-LABEL: d3: NSDictionary = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = Int64(1)
// DICT-NEXT:      value = Int64(2)
// DICT-NEXT:    }
// DICT-NEXT:  }

// Verbatim bridging from Objective-C to Swift
let d3b = d3 as! [NSObject: NSObject]
// DICT-LABEL: d3b: [NSObject : NSObject] = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = Int64(1)
// DICT-NEXT:      value = Int64(2)
// DICT-NEXT:    }
// DICT-NEXT:  }

// Non-verbatim bridging from Objective-C to Swift
let d3b2 = d3 as! [Int: Int]
// DICT-LABEL: d3b2: [Int : Int] = 1 key/value pair {
// DICT-NEXT:    [0] = {
// DICT-NEXT:      key = 1
// DICT-NEXT:      value = 2
// DICT-NEXT:    }
// DICT-NEXT:  }