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
|
// -*- mode: swift; -*-
// Test formatters on bridged sets in the REPL.
// REQUIRES: system-darwin
// REQUIRES: swift
// RUN: %lldb --repl < %s | FileCheck %s --check-prefix=SET
import Foundation
// Baseline case: empty Set
let s0: Set<Int> = []
// DICT-LABEL: s0: Set<Int> = 0 values
// All empty sets use the same type-punned storage class.
let s0b = s0 as NSSet
// DICT-LABEL: s0b: {{(__RawNativeSetStorage|__EmptySetSingleton)}} = 0 values
// Baseline case: native Set of non-verbatim bridged elements
let s1: Set<Int> = [1]
// SET-LABEL: s1: Set<Int> = 1 value {
// SET-NEXT: [0] = 1
// SET-NEXT: }
// Non-verbatim bridging from Swift to Objective-C
let s1b = s1 as NSSet
// SET-LABEL: s1b: _SwiftDeferredNSSet<Int> = 1 value {
// SET-NEXT: [0] = 1
// SET-NEXT: }
// Baseline case: native Set of verbatim bridged elements
let s2: Set<NSObject> = [NSNumber(value: 1)]
// SET-LABEL: s2: Set<NSObject> = 1 value {
// SET-NEXT: [0] = Int64(1)
// SET-NEXT: }
// Test formatters in Objective-C context.
// Empty singleton
let s_objc1 = NSArray(object: [] as Set<NSNumber> as NSSet)
// SET-LABEL: s_objc1: NSArray = 1 element {
// SET-NEXT: [0] = 0 values
// SET-NEXT: }
// Verbatim bridging
let s_objc2 = NSArray(object: [1] as Set<NSNumber> as NSSet)
// SET-LABEL: s_objc2: NSArray = 1 element {
// SET-NEXT: [0] = 1 value {
// SET-NEXT: [0] = Int64(1)
// SET-NEXT: }
// SET-NEXT: }
// Non-verbatim bridging
let s_objc3 = NSArray(object: [1] as Set<Int> as NSSet)
// SET-LABEL: s_objc3: NSArray = 1 element {
// SET-NEXT: [0] = 1 value {
// SET-NEXT: [0] = 1
// SET-NEXT: }
// SET-NEXT: }
// Verbatim bridging from Swift to Objective-C
let s2b = s2 as NSSet
// SET-LABEL: s2b: {{(_HashableTypedNativeSetStorage|_SetStorage)}}<NSObject> = 1 value {
// SET-NEXT: [0] = Int64(1)
// SET-NEXT: }
// Baseline case: NSSet
let s3 = NSSet(array: [NSNumber(value: 1), NSNumber(value: 2)])
// FIXME: NSSet's synthetic children formatters are currently broken.
// DISABLED-SET-LABEL: s3: NSSet = 2 elements {
// DISABLED-SET-NEXT: [0] = Int64({{[12]}})
// DISABLED-SET-NEXT: [1] = Int64({{[12]}})
// DISABLED-SET-NEXT: }
// Verbatim bridging from Objective-C to Swift
let s3b = s3 as! Set<NSObject>
// SET-LABEL: s3b: Set<NSObject> = 2 values {
// SET-NEXT: [0] = Int64({{[12]}})
// SET-NEXT: [1] = Int64({{[12]}})
// SET-NEXT: }
// Non-verbatim bridging from Objective-C to Swift
let s3b2 = s3 as! Set<Int>
// SET-LABEL: s3b2: Set<Int> = 2 values {
// SET-NEXT: [0] = {{[12]}}
// SET-NEXT: [1] = {{[12]}}
// SET-NEXT: }
|