Clang Importer: Enable OptionSetType import.

Update the tests to match.

Swift SVN r28906
This commit is contained in:
Joe Groff
2015-05-22 05:47:37 +00:00
parent d1b6fa32c4
commit 32fb006386
22 changed files with 70 additions and 150 deletions

View File

@@ -137,7 +137,7 @@ namespace swift {
bool EnableInterfaceTypeMangling = true; bool EnableInterfaceTypeMangling = true;
/// Import NS_OPTIONS types using the new OptionSetType interface. /// Import NS_OPTIONS types using the new OptionSetType interface.
bool ImportNSOptionsAsOptionSetType = false; bool ImportNSOptionsAsOptionSetType = true;
/// The target we are building for. /// The target we are building for.
/// ///

View File

@@ -23,35 +23,32 @@
// CMTimeConvertScale // CMTimeConvertScale
extension CMTime { extension CMTime {
public var isValid: Bool { public var isValid: Bool {
return (self.flags & CMTimeFlags.Valid) == CMTimeFlags.Valid return self.flags.contains(.Valid)
} }
public var isPositiveInfinity: Bool { public var isPositiveInfinity: Bool {
return self.isValid && return self.isValid &&
((self.flags & CMTimeFlags.PositiveInfinity) == self.flags.contains(.PositiveInfinity)
CMTimeFlags.PositiveInfinity)
} }
public var isNegativeInfinity: Bool { public var isNegativeInfinity: Bool {
return self.isValid && return self.isValid &&
((self.flags & CMTimeFlags.NegativeInfinity) == self.flags.contains(.NegativeInfinity)
CMTimeFlags.NegativeInfinity)
} }
public var isIndefinite: Bool { public var isIndefinite: Bool {
return self.isValid && return self.isValid &&
((self.flags & CMTimeFlags.Indefinite) == CMTimeFlags.Indefinite) self.flags.contains(.Indefinite)
} }
public var isNumeric: Bool { public var isNumeric: Bool {
return return
(self.flags & (CMTimeFlags.Valid | CMTimeFlags.ImpliedValueFlagsMask)) == self.flags.intersect([.Valid, .ImpliedValueFlagsMask]) == .Valid
CMTimeFlags.Valid
} }
public var hasBeenRounded: Bool { public var hasBeenRounded: Bool {
return self.isNumeric && return self.isNumeric &&
((self.flags & CMTimeFlags.HasBeenRounded) == CMTimeFlags.HasBeenRounded) self.flags.contains(.HasBeenRounded)
} }
public var seconds: Double { public var seconds: Double {

View File

@@ -361,7 +361,7 @@ extension String {
/// returns the lexical ordering for the range. /// returns the lexical ordering for the range.
public func compare( public func compare(
aString: String, aString: String,
options mask: NSStringCompareOptions = nil, options mask: NSStringCompareOptions = [],
range: Range<Index>? = nil, range: Range<Index>? = nil,
locale: NSLocale? = nil locale: NSLocale? = nil
) -> NSComparisonResult { ) -> NSComparisonResult {
@@ -378,7 +378,7 @@ extension String {
options: mask, options: mask,
range: _toNSRange(range ?? self.characters.indices)) range: _toNSRange(range ?? self.characters.indices))
: mask != nil ? _ns.compare(aString, options: mask) : !mask.isEmpty ? _ns.compare(aString, options: mask)
: _ns.compare(aString) : _ns.compare(aString)
} }
@@ -953,7 +953,7 @@ extension String {
public func linguisticTagsInRange( public func linguisticTagsInRange(
range: Range<Index>, range: Range<Index>,
scheme tagScheme: String, scheme tagScheme: String,
options opts: NSLinguisticTaggerOptions = nil, options opts: NSLinguisticTaggerOptions = [],
orthography: NSOrthography? = nil, orthography: NSOrthography? = nil,
tokenRanges: UnsafeMutablePointer<[Range<Index>]> = nil // FIXME:Can this be nil? tokenRanges: UnsafeMutablePointer<[Range<Index>]> = nil // FIXME:Can this be nil?
) -> [String] { ) -> [String] {
@@ -1092,7 +1092,7 @@ extension String {
/// given options. /// given options.
public func rangeOfCharacterFromSet( public func rangeOfCharacterFromSet(
aSet: NSCharacterSet, aSet: NSCharacterSet,
options mask:NSStringCompareOptions = nil, options mask:NSStringCompareOptions = [],
range aRange: Range<Index>? = nil range aRange: Range<Index>? = nil
)-> Range<Index>? { )-> Range<Index>? {
return _optionalRange( return _optionalRange(
@@ -1146,7 +1146,7 @@ extension String {
/// given options, using the specified locale, if any. /// given options, using the specified locale, if any.
public func rangeOfString( public func rangeOfString(
aString: String, aString: String,
options mask: NSStringCompareOptions = nil, options mask: NSStringCompareOptions = [],
range searchRange: Range<Index>? = nil, range searchRange: Range<Index>? = nil,
locale: NSLocale? = nil locale: NSLocale? = nil
) -> Range<Index>? { ) -> Range<Index>? {
@@ -1159,7 +1159,7 @@ extension String {
: searchRange != nil ? _ns.rangeOfString( : searchRange != nil ? _ns.rangeOfString(
aString, options: mask, range: _toNSRange(searchRange!) aString, options: mask, range: _toNSRange(searchRange!)
) )
: mask != nil ? _ns.rangeOfString(aString, options: mask) : !mask.isEmpty ? _ns.rangeOfString(aString, options: mask)
: _ns.rangeOfString(aString) : _ns.rangeOfString(aString)
) )
} }
@@ -1347,10 +1347,10 @@ extension String {
public func stringByReplacingOccurrencesOfString( public func stringByReplacingOccurrencesOfString(
target: String, target: String,
withString replacement: String, withString replacement: String,
options: NSStringCompareOptions = nil, options: NSStringCompareOptions = [],
range searchRange: Range<Index>? = nil range searchRange: Range<Index>? = nil
) -> String { ) -> String {
return (searchRange != nil) || (options != nil) return (searchRange != nil) || (!options.isEmpty)
? _ns.stringByReplacingOccurrencesOfString( ? _ns.stringByReplacingOccurrencesOfString(
target, target,
withString: replacement, options: options, withString: replacement, options: options,

View File

@@ -45,7 +45,7 @@ class Observer : NSObject {
func observeTarget(t: Target) { func observeTarget(t: Target) {
target = t target = t
target!.addObserver(self, forKeyPath:"objcValue", target!.addObserver(self, forKeyPath:"objcValue",
options:NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old, options: [.New, .Old],
context: nil) context: nil)
} }
@@ -89,7 +89,7 @@ class ObserverKVO : NSObject {
self.target = target self.target = target
self.target!.addObserver(self, self.target!.addObserver(self,
forKeyPath: "objcValue", forKeyPath: "objcValue",
options:NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old, options: [.New, .Old],
context: &kvoContext) context: &kvoContext)
} }

View File

@@ -248,12 +248,12 @@ NSStringAPIs.test("caseInsensitiveCompare(_:)") {
NSStringAPIs.test("commonPrefixWithString(_:options:)") { NSStringAPIs.test("commonPrefixWithString(_:options:)") {
expectEqual("ab", expectEqual("ab",
"abcd".commonPrefixWithString("abdc", options: NSStringCompareOptions(0))) "abcd".commonPrefixWithString("abdc", options: []))
expectEqual("abC", expectEqual("abC",
"abCd".commonPrefixWithString("abce", options: .CaseInsensitiveSearch)) "abCd".commonPrefixWithString("abce", options: .CaseInsensitiveSearch))
expectEqual("аб", expectEqual("аб",
"абвг".commonPrefixWithString("абгв", options: NSStringCompareOptions(0))) "абвг".commonPrefixWithString("абгв", options: []))
expectEqual("абВ", expectEqual("абВ",
"абВг".commonPrefixWithString("абвд", options: .CaseInsensitiveSearch)) "абВг".commonPrefixWithString("абвд", options: .CaseInsensitiveSearch))
} }
@@ -442,7 +442,7 @@ NSStringAPIs.test("enumerateLinguisticTagsInRange(_:scheme:options:orthography:_
var sentences: [String] = [] var sentences: [String] = []
s.enumerateLinguisticTagsInRange(startIndex..<endIndex, s.enumerateLinguisticTagsInRange(startIndex..<endIndex,
scheme: NSLinguisticTagSchemeTokenType, scheme: NSLinguisticTagSchemeTokenType,
options: NSLinguisticTaggerOptions(0), options: [],
orthography: nil) { orthography: nil) {
(tag: String, tokenRange: Range<String.Index>, sentenceRange: Range<String.Index>, inout stop: Bool) (tag: String, tokenRange: Range<String.Index>, sentenceRange: Range<String.Index>, inout stop: Bool)
in in
@@ -482,8 +482,7 @@ NSStringAPIs.test("enumerateSubstringsInRange(_:options:_:)") {
if true { if true {
var substrings: [String] = [] var substrings: [String] = []
s.enumerateSubstringsInRange(startIndex..<endIndex, s.enumerateSubstringsInRange(startIndex..<endIndex,
options: NSStringEnumerationOptions.ByComposedCharacterSequences options: [.ByComposedCharacterSequences, .SubstringNotRequired]) {
| NSStringEnumerationOptions.SubstringNotRequired) {
(substring_: String?, substringRange: Range<String.Index>, (substring_: String?, substringRange: Range<String.Index>,
enclosingRange: Range<String.Index>, inout stop: Bool) enclosingRange: Range<String.Index>, inout stop: Bool)
in in
@@ -531,7 +530,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
var remainingRange = startIndex..<endIndex var remainingRange = startIndex..<endIndex
var result = s.getBytes(&buffer, maxLength: 11, usedLength: &usedLength, var result = s.getBytes(&buffer, maxLength: 11, usedLength: &usedLength,
encoding: NSUTF8StringEncoding, encoding: NSUTF8StringEncoding,
options: NSStringEncodingConversionOptions(0), options: [],
range: startIndex..<endIndex, remainingRange: &remainingRange) range: startIndex..<endIndex, remainingRange: &remainingRange)
expectTrue(result) expectTrue(result)
expectEqualSequence(expectedStr, buffer) expectEqualSequence(expectedStr, buffer)
@@ -552,7 +551,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
var remainingRange = startIndex..<endIndex var remainingRange = startIndex..<endIndex
var result = s.getBytes(&buffer, maxLength: 11, usedLength: &usedLength, var result = s.getBytes(&buffer, maxLength: 11, usedLength: &usedLength,
encoding: NSUTF8StringEncoding, encoding: NSUTF8StringEncoding,
options: NSStringEncodingConversionOptions(0), options: [],
range: startIndex..<endIndex, remainingRange: &remainingRange) range: startIndex..<endIndex, remainingRange: &remainingRange)
expectTrue(result) expectTrue(result)
expectEqualSequence(expectedStr, buffer) expectEqualSequence(expectedStr, buffer)
@@ -572,7 +571,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
var remainingRange = startIndex..<endIndex var remainingRange = startIndex..<endIndex
var result = s.getBytes(&buffer, maxLength: bufferLength, var result = s.getBytes(&buffer, maxLength: bufferLength,
usedLength: &usedLength, encoding: NSUTF8StringEncoding, usedLength: &usedLength, encoding: NSUTF8StringEncoding,
options: NSStringEncodingConversionOptions(0), options: [],
range: startIndex..<endIndex, remainingRange: &remainingRange) range: startIndex..<endIndex, remainingRange: &remainingRange)
expectTrue(result) expectTrue(result)
expectEqualSequence(expectedStr, buffer) expectEqualSequence(expectedStr, buffer)
@@ -592,7 +591,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
var remainingRange = startIndex..<endIndex var remainingRange = startIndex..<endIndex
var result = s.getBytes(&buffer, maxLength: bufferLength, var result = s.getBytes(&buffer, maxLength: bufferLength,
usedLength: &usedLength, encoding: NSASCIIStringEncoding, usedLength: &usedLength, encoding: NSASCIIStringEncoding,
options: NSStringEncodingConversionOptions(0), options: [],
range: startIndex..<endIndex, remainingRange: &remainingRange) range: startIndex..<endIndex, remainingRange: &remainingRange)
expectTrue(result) expectTrue(result)
expectEqualSequence(expectedStr, buffer) expectEqualSequence(expectedStr, buffer)
@@ -857,7 +856,7 @@ NSStringAPIs.test("linguisticTagsInRange(_:scheme:options:orthography:tokenRange
var tokenRanges: [Range<String.Index>] = [] var tokenRanges: [Range<String.Index>] = []
var tags = s.linguisticTagsInRange(startIndex..<endIndex, var tags = s.linguisticTagsInRange(startIndex..<endIndex,
scheme: NSLinguisticTagSchemeTokenType, scheme: NSLinguisticTagSchemeTokenType,
options: NSLinguisticTaggerOptions(0), options: [],
orthography: nil, tokenRanges: &tokenRanges) orthography: nil, tokenRanges: &tokenRanges)
expectEqual( expectEqual(
[ NSLinguisticTagWord, NSLinguisticTagWhitespace, [ NSLinguisticTagWord, NSLinguisticTagWhitespace,

View File

@@ -5,7 +5,7 @@
import Foundation import Foundation
// Ignore deprecated constants in prefix stripping, even if they aren't deprecated /yet/. // Ignore deprecated constants in prefix stripping, even if they aren't deprecated /yet/.
let calendarUnits: NSCalendarUnit = .Era | .Year | .Calendar let calendarUnits: NSCalendarUnit = [.Era, .Year, .Calendar]
let calendarUnits2: NSCalendarUnit = .NSMonthCalendarUnit | .NSYearCalendarUnit // expected-error 2 {{unavailable}} let calendarUnits2: NSCalendarUnit = [.NSMonthCalendarUnit, .NSYearCalendarUnit] // expected-error 2 {{unavailable}}
// ...unless they're all deprecated. // ...unless they're all deprecated.
let calendarUnitsDep: NSCalendarUnitDeprecated = .EraCalendarUnitDeprecated | .YearCalendarUnitDeprecated // expected-error 2 {{unavailable}} let calendarUnitsDep: NSCalendarUnitDeprecated = [.EraCalendarUnitDeprecated, .YearCalendarUnitDeprecated] // expected-error 2 {{unavailable}}

View File

@@ -121,38 +121,32 @@ var withQuince: NSRuncingOptions = .EnableQuince
var singleValue: NSSingleOptions = .Value var singleValue: NSSingleOptions = .Value
// Check RawOptionSetType conformance. // Check RawOptionSetType conformance.
var minceAndQuince: NSRuncingOptions = .EnableMince & .EnableQuince var minceAndQuince: NSRuncingOptions = NSRuncingOptions.EnableMince.intersect(NSRuncingOptions.EnableQuince)
var minceOrQuince: NSRuncingOptions = .EnableMince | .EnableQuince var minceOrQuince: NSRuncingOptions = [.EnableMince, .EnableQuince]
var noMince: NSRuncingOptions = ~NSRuncingOptions.EnableMince minceOrQuince.intersectInPlace(minceAndQuince)
minceOrQuince &= noMince minceOrQuince.unionInPlace(minceAndQuince)
minceOrQuince |= minceAndQuince
minceOrQuince ^= .EnableMince
var minceValue: UInt = minceAndQuince.rawValue var minceValue: UInt = minceAndQuince.rawValue
var minceFromMask: NSRuncingOptions = NSRuncingOptions(0) var minceFromMask: NSRuncingOptions = []
var nothing: NSRuncingOptions = NSRuncingOptions()
var nothing2: NSRuncingOptions = nil
let nothing3: NSRuncingOptions = .allZeros
// Strip leading 'k' in "kConstant". // Strip leading 'k' in "kConstant".
let calendarUnit: CFCalendarUnit = .Year | .Weekday let calendarUnit: CFCalendarUnit = [.Year, .Weekday]
// Match various plurals. // Match various plurals.
let observingOpts: NSKeyValueObservingOptions = .New | .Old let observingOpts: NSKeyValueObservingOptions = [.New, .Old]
let bluetoothProps: CBCharacteristicProperties = .Write | .WriteWithoutResponse let bluetoothProps: CBCharacteristicProperties = [.Write, .WriteWithoutResponse]
let buzzFilter: AlertBuzzes = .Funk | .Sosumi let buzzFilter: AlertBuzzes = [.Funk, .Sosumi]
// Match multi-capital acronym. // Match multi-capital acronym.
let bitmapFormat: NSBitmapFormat = .NSAlphaFirstBitmapFormat | .NS32BitBigEndianBitmapFormat; let bitmapFormat: NSBitmapFormat = [.NSAlphaFirstBitmapFormat, .NS32BitBigEndianBitmapFormat];
let bitmapFormatR: NSBitmapFormatReversed = .NSAlphaFirstBitmapFormatR | .NS32BitBigEndianBitmapFormatR; let bitmapFormatR: NSBitmapFormatReversed = [.NSAlphaFirstBitmapFormatR, .NS32BitBigEndianBitmapFormatR];
let bitmapFormat2: NSBitmapFormat2 = .NSU16a | .NSU32a; let bitmapFormat2: NSBitmapFormat2 = [.NSU16a , .NSU32a]
let bitmapFormat3: NSBitmapFormat3 = .NSU16b | .NSS32b; let bitmapFormat3: NSBitmapFormat3 = [.NSU16b , .NSS32b]
let bitmapFormat4: NSUBitmapFormat4 = .NSU16c | .NSU32c; let bitmapFormat4: NSUBitmapFormat4 = [.NSU16c , .NSU32c]
let bitmapFormat5: NSABitmapFormat5 = .NSAA16d | .NSAB32d; let bitmapFormat5: NSABitmapFormat5 = [.NSAA16d , .NSAB32d]
// Drop trailing underscores when possible. // Drop trailing underscores when possible.
let timeFlags: CMTimeFlags = .Valid | .HasBeenRounded let timeFlags: CMTimeFlags = [.Valid , .HasBeenRounded]
let timeFlags2: CMTimeFlagsWithNumber = ._Valid | ._888 let timeFlags2: CMTimeFlagsWithNumber = [._Valid, ._888]
let objcFlags: objc_flags = .taggedPointer | .swiftRefcount let objcFlags: objc_flags = [.taggedPointer, .swiftRefcount]

View File

@@ -1,36 +0,0 @@
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -import-ns-options-as-option-set-type -parse %s -verify
// -- Check that we can successfully round-trip.
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -import-ns-options-as-option-set-type -D IRGEN -emit-ir %s >/dev/null
// REQUIRES: objc_interop
import Foundation
import user_objc
var withMince: NSRuncingOptions = .EnableMince
var withQuince: NSRuncingOptions = .EnableQuince
// When there is a single enum constant, compare it against the type name to
// derive the namespaced name.
var singleValue: NSSingleOptions = .Value
// Check OptionSetType conformance.
func useOptionSet<T: _OptionSetType>(x: T) {}
useOptionSet(singleValue)
useOptionSet(withMince)
useOptionSet(withQuince)
var minceFromMask: NSRuncingOptions = NSRuncingOptions(rawValue: 0)
var minceValue: UInt = minceFromMask.rawValue
/* TODO: OptionSet operations
var minceAndQuince: NSRuncingOptions = .EnableMince.intersect(.EnableQuince)
var minceOrQuince: NSRuncingOptions = .EnableMince.union(.EnableQuince)
var noMince: NSRuncingOptions = NSRuncingOptions.EnableMince.inverse
minceOrQuince.intersectInPlace(noMince)
minceOrQuince.unionInPlace(minceAndQuince)
var nothing: NSRuncingOptions = NSRuncingOptions()
var nothing2: NSRuncingOptions = nil
let nothing3: NSRuncingOptions = .allZeros
*/

View File

@@ -99,7 +99,7 @@ public func date() {
// Make sure we build some witness tables for enums. // Make sure we build some witness tables for enums.
func useOptions(var opt: NSURLBookmarkCreationOptions) func useOptions(var opt: NSURLBookmarkCreationOptions)
-> NSURLBookmarkCreationOptions { -> NSURLBookmarkCreationOptions {
return opt | opt return [opt, opt]
} }
// LOC-CHECK: ![[THUNK:.*]] = !DISubprogram({{.*}}linkageName: "_TToFC4main8MyObjectg5MyArrCSo7NSArray" // LOC-CHECK: ![[THUNK:.*]] = !DISubprogram({{.*}}linkageName: "_TToFC4main8MyObjectg5MyArrCSo7NSArray"

View File

@@ -36,15 +36,11 @@ enum <loc>FooComparisonResult</loc> : <ref:Struct>Int</ref> {
}</decl> }</decl>
<decl:Struct>/// Aaa. FooRuncingOptions. Bbb. <decl:Struct>/// Aaa. FooRuncingOptions. Bbb.
struct <loc>FooRuncingOptions</loc> : <ref:Protocol>RawOptionSetType</ref> { struct <loc>FooRuncingOptions</loc> : <ref:Protocol>OptionSetType</ref> {
<decl:Constructor><loc>init()</loc></decl>
<decl:Constructor><loc>init(_ rawValue: <ref:Struct>Int</ref>)</loc></decl>
<decl:Constructor><loc>init(rawValue: <ref:Struct>Int</ref>)</loc></decl> <decl:Constructor><loc>init(rawValue: <ref:Struct>Int</ref>)</loc></decl>
<decl:Var>let <loc>rawValue</loc>: <ref:Struct>Int</ref></decl> <decl:Var>let <loc>rawValue</loc>: <ref:Struct>Int</ref></decl>
<decl:Var>static var <loc>EnableMince</loc>: <ref:Struct>FooRuncingOptions</ref> { get }</decl> <decl:Var>static var <loc>EnableMince</loc>: <ref:Struct>FooRuncingOptions</ref> { get }</decl>
<decl:Var>static var <loc>EnableQuince</loc>: <ref:Struct>FooRuncingOptions</ref> { get }</decl> <decl:Var>static var <loc>EnableQuince</loc>: <ref:Struct>FooRuncingOptions</ref> { get }</decl>
<decl:Var>static var <loc>allZeros</loc>: <ref:Struct>FooRuncingOptions</ref> { get }</decl>
<decl:Constructor><loc>init(nilLiteral _: ())</loc></decl>
}</decl> }</decl>
<decl:Struct>struct <loc>FooStruct1</loc> { <decl:Struct>struct <loc>FooStruct1</loc> {
<decl:Var>var <loc>x</loc>: <ref:Struct>Int32</ref></decl> <decl:Var>var <loc>x</loc>: <ref:Struct>Int32</ref></decl>

View File

@@ -36,15 +36,11 @@ enum FooComparisonResult : Int {
} }
/// Aaa. FooRuncingOptions. Bbb. /// Aaa. FooRuncingOptions. Bbb.
struct FooRuncingOptions : RawOptionSetType { struct FooRuncingOptions : OptionSetType {
init()
init(_ rawValue: Int)
init(rawValue: Int) init(rawValue: Int)
let rawValue: Int let rawValue: Int
static var EnableMince: FooRuncingOptions { get } static var EnableMince: FooRuncingOptions { get }
static var EnableQuince: FooRuncingOptions { get } static var EnableQuince: FooRuncingOptions { get }
static var allZeros: FooRuncingOptions { get }
init(nilLiteral _: ())
} }
struct FooStruct1 { struct FooStruct1 {
var x: Int32 var x: Int32

View File

@@ -47,17 +47,13 @@ enum FooComparisonResult : Int {
} }
/// Aaa. FooRuncingOptions. Bbb. /// Aaa. FooRuncingOptions. Bbb.
struct FooRuncingOptions : RawOptionSetType { struct FooRuncingOptions : OptionSetType {
init()
init(_ rawValue: Int)
init(rawValue: Int) init(rawValue: Int)
let rawValue: Int let rawValue: Int
// This is mince. // This is mince.
static var EnableMince: FooRuncingOptions { get } static var EnableMince: FooRuncingOptions { get }
static var EnableQuince: FooRuncingOptions { get } /* But this is quince */ static var EnableQuince: FooRuncingOptions { get } /* But this is quince */
static var allZeros: FooRuncingOptions { get }
init(nilLiteral _: ())
} }
struct FooStruct1 { struct FooStruct1 {

View File

@@ -1041,8 +1041,8 @@ enum d2300_EnumDeclWithValues1 : Int {
// PASS_COMMON: {{^}}enum d2300_EnumDeclWithValues1 : Int {{{$}} // PASS_COMMON: {{^}}enum d2300_EnumDeclWithValues1 : Int {{{$}}
// PASS_COMMON-NEXT: {{^}} case EDV2_First{{$}} // PASS_COMMON-NEXT: {{^}} case EDV2_First{{$}}
// PASS_COMMON-NEXT: {{^}} case EDV2_Second{{$}} // PASS_COMMON-NEXT: {{^}} case EDV2_Second{{$}}
// PASS_COMMON-NEXT: {{^}} var hashValue: Int { get }{{$}}
// PASS_COMMON-NEXT: {{^}} typealias RawValue = Int // PASS_COMMON-NEXT: {{^}} typealias RawValue = Int
// PASS_COMMON-NEXT: {{^}} var hashValue: Int { get }{{$}}
// PASS_COMMON-NEXT: {{^}} init?(rawValue: Int){{$}} // PASS_COMMON-NEXT: {{^}} init?(rawValue: Int){{$}}
// PASS_COMMON-NEXT: {{^}} var rawValue: Int { get }{{$}} // PASS_COMMON-NEXT: {{^}} var rawValue: Int { get }{{$}}
// PASS_COMMON-NEXT: {{^}}}{{$}} // PASS_COMMON-NEXT: {{^}}}{{$}}
@@ -1054,8 +1054,8 @@ enum d2400_EnumDeclWithValues2 : Double {
// PASS_COMMON: {{^}}enum d2400_EnumDeclWithValues2 : Double {{{$}} // PASS_COMMON: {{^}}enum d2400_EnumDeclWithValues2 : Double {{{$}}
// PASS_COMMON-NEXT: {{^}} case EDV3_First{{$}} // PASS_COMMON-NEXT: {{^}} case EDV3_First{{$}}
// PASS_COMMON-NEXT: {{^}} case EDV3_Second{{$}} // PASS_COMMON-NEXT: {{^}} case EDV3_Second{{$}}
// PASS_COMMON-NEXT: {{^}} var hashValue: Int { get }{{$}}
// PASS_COMMON-NEXT: {{^}} typealias RawValue = Double // PASS_COMMON-NEXT: {{^}} typealias RawValue = Double
// PASS_COMMON-NEXT: {{^}} var hashValue: Int { get }{{$}}
// PASS_COMMON-NEXT: {{^}} init?(rawValue: Double){{$}} // PASS_COMMON-NEXT: {{^}} init?(rawValue: Double){{$}}
// PASS_COMMON-NEXT: {{^}} var rawValue: Double { get }{{$}} // PASS_COMMON-NEXT: {{^}} var rawValue: Double { get }{{$}}
// PASS_COMMON-NEXT: {{^}}}{{$}} // PASS_COMMON-NEXT: {{^}}}{{$}}

View File

@@ -89,15 +89,11 @@
// FOUNDATION-NEXT: {{^}}}{{$}} // FOUNDATION-NEXT: {{^}}}{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. NSRuncingOptions. Bbb.{{$}} // FOUNDATION-LABEL: {{^}}/// Aaa. NSRuncingOptions. Bbb.{{$}}
// FOUNDATION-NEXT: {{^}}struct NSRuncingOptions : RawOptionSetType {{{$}} // FOUNDATION-NEXT: {{^}}struct NSRuncingOptions : OptionSetType {{{$}}
// FOUNDATION-NEXT: {{^}} init(){{$}}
// FOUNDATION-NEXT: {{^}} init(_ rawValue: UInt){{$}}
// FOUNDATION-NEXT: {{^}} init(rawValue: UInt){{$}} // FOUNDATION-NEXT: {{^}} init(rawValue: UInt){{$}}
// FOUNDATION-NEXT: {{^}} let rawValue: UInt{{$}} // FOUNDATION-NEXT: {{^}} let rawValue: UInt{{$}}
// FOUNDATION-NEXT: {{^}} static var EnableMince: NSRuncingOptions { get }{{$}} // FOUNDATION-NEXT: {{^}} static var EnableMince: NSRuncingOptions { get }{{$}}
// FOUNDATION-NEXT: {{^}} static var EnableQuince: NSRuncingOptions { get }{{$}} // FOUNDATION-NEXT: {{^}} static var EnableQuince: NSRuncingOptions { get }{{$}}
// FOUNDATION-NEXT: {{^}} static var allZeros: NSRuncingOptions { get }{{$}}
// FOUNDATION-NEXT: {{^}} init(nilLiteral _: ()){{$}}
// FOUNDATION-NEXT: {{^}}}{{$}} // FOUNDATION-NEXT: {{^}}}{{$}}
// FOUNDATION-LABEL: {{^}}/// Unavailable Global Functions{{$}} // FOUNDATION-LABEL: {{^}}/// Unavailable Global Functions{{$}}

View File

@@ -39,12 +39,10 @@
// FOUNDATION-LABEL: {{^}}/// Aaa. NSPotentiallyUnavailableOptions. Bbb. // FOUNDATION-LABEL: {{^}}/// Aaa. NSPotentiallyUnavailableOptions. Bbb.
// FOUNDATION-NEXT: {{^}}@available(OSX 10.10, *){{$}} // FOUNDATION-NEXT: {{^}}@available(OSX 10.10, *){{$}}
// FOUNDATION-NEXT: {{^}}struct NSPotentiallyUnavailableOptions : RawOptionSetType {{{$}} // FOUNDATION-NEXT: {{^}}struct NSPotentiallyUnavailableOptions : OptionSetType {{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. NSOptionsWithUnavailableElement. Bbb. // FOUNDATION-LABEL: {{^}}/// Aaa. NSOptionsWithUnavailableElement. Bbb.
// FOUNDATION-NEXT: {{^}}struct NSOptionsWithUnavailableElement : RawOptionSetType {{{$}} // FOUNDATION-NEXT: {{^}}struct NSOptionsWithUnavailableElement : OptionSetType {{{$}}
// FOUNDATION-NEXT: {{^}} init(){{$}}
// FOUNDATION-NEXT: {{^}} init(_ rawValue: UInt){{$}}
// FOUNDATION-NEXT: {{^}} init(rawValue: UInt){{$}} // FOUNDATION-NEXT: {{^}} init(rawValue: UInt){{$}}
// FOUNDATION-NEXT: {{^}} let rawValue: UInt{{$}} // FOUNDATION-NEXT: {{^}} let rawValue: UInt{{$}}
// FOUNDATION-NEXT: {{^}} static var First: NSOptionsWithUnavailableElement { get }{{$}} // FOUNDATION-NEXT: {{^}} static var First: NSOptionsWithUnavailableElement { get }{{$}}

View File

@@ -4,12 +4,12 @@
import Foundation import Foundation
let opts: NSBinarySearchingOptions = .FirstEqual | .InsertionIndex let opts: NSBinarySearchingOptions = [.FirstEqual, .InsertionIndex]
// CHECK: true // CHECK: true
print(opts & (.LastEqual | .InsertionIndex) == .InsertionIndex) print(opts.intersect([.LastEqual, .InsertionIndex]) == .InsertionIndex)
// CHECK: false // CHECK: false
print((opts & .LastEqual) != nil) print(!opts.intersect(.LastEqual).isEmpty)
// CHECK: {{^}}0 0 0{{$}} // CHECK: {{^}}0 0{{$}}
print("\((nil as NSBinarySearchingOptions).rawValue) \(NSBinarySearchingOptions.allZeros.rawValue) \(NSBinarySearchingOptions(0).rawValue)") print("\(([] as NSBinarySearchingOptions).rawValue) \(NSBinarySearchingOptions(rawValue: 0).rawValue)")

View File

@@ -16,8 +16,8 @@ class Observer : NSObject {
override init() { override init() {
super.init() super.init()
model.addObserver(self, forKeyPath: "name", options: nil, context: &kvoContext) model.addObserver(self, forKeyPath: "name", options: [], context: &kvoContext)
self.addObserver(self, forKeyPath: "model.number", options: nil, context: &kvoContext) self.addObserver(self, forKeyPath: "model.number", options: [], context: &kvoContext)
} }
deinit { deinit {
@@ -50,7 +50,7 @@ class Foo: NSObject {
} }
let foo = Foo() let foo = Foo()
foo.addObserver(foo, forKeyPath: "foo", options: nil, context: &kvoContext) foo.addObserver(foo, forKeyPath: "foo", options: [], context: &kvoContext)
let bar = foo.foo let bar = foo.foo
// CHECK-NEXT: 0 // CHECK-NEXT: 0
print(bar) print(bar)

View File

@@ -106,7 +106,7 @@ testB()
class MyNSData : NSData { class MyNSData : NSData {
init?(base64EncodedString str: String) { init?(base64EncodedString str: String) {
super.init(base64EncodedString:str, super.init(base64EncodedString:str,
options:NSDataBase64DecodingOptions(0)) options:[])
print("MyNSData code should not be executed") print("MyNSData code should not be executed")
} }
@@ -127,7 +127,7 @@ if let myNSData = MyNSData(base64EncodedString:"\n\n\n") {
extension NSData { extension NSData {
convenience init?(myString str: String) { convenience init?(myString str: String) {
self.init(base64EncodedString:str, self.init(base64EncodedString:str,
options:NSDataBase64DecodingOptions(0)) options:[])
print("NSData code should not be executed") print("NSData code should not be executed")
} }
} }

View File

@@ -9,8 +9,6 @@ import gizmo
// CHECK-DAG: sil shared @_TFOSC16NSRuncingOptionsg8rawValueSi // CHECK-DAG: sil shared @_TFOSC16NSRuncingOptionsg8rawValueSi
// CHECK-DAG: sil shared @_TFOSC16NSRuncingOptionsg9hashValueSi // CHECK-DAG: sil shared @_TFOSC16NSRuncingOptionsg9hashValueSi
// CHECK-DAG: sil shared @_TZF5gizmooi2eeFTOSC16NSRuncingOptionsS0__Sb
// CHECK-DAG: sil shared [transparent] @_TFOSC16NSRuncingOptions5MinceFMS_S_ // CHECK-DAG: sil shared [transparent] @_TFOSC16NSRuncingOptions5MinceFMS_S_
// CHECK-DAG: sil shared [transparent] @_TFOSC16NSRuncingOptions12QuinceSlicedFMS_S_ // CHECK-DAG: sil shared [transparent] @_TFOSC16NSRuncingOptions12QuinceSlicedFMS_S_
// CHECK-DAG: sil shared [transparent] @_TFOSC16NSRuncingOptions15QuinceJuliennedFMS_S_ // CHECK-DAG: sil shared [transparent] @_TFOSC16NSRuncingOptions15QuinceJuliennedFMS_S_

View File

@@ -1,14 +0,0 @@
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-silgen %s | FileCheck %s
// REQUIRES: objc_interop
import Foundation
func foo(a: NSKeyValueObservingOptions) -> Bool {
return (a ^ a) == nil
}
// Note: nothing needs the BitwiseOperationsType conformance, so don't emit it
// CHECK-NOT: sil_witness_table shared NSKeyValueObservingOptions: BitwiseOperationsType module Foundation
// CHECK: sil_witness_table shared NSKeyValueObservingOptions: _RawOptionSetType module Foundation
// CHECK-NOT: sil_witness_table shared NSKeyValueObservingOptions: BitwiseOperationsType module Foundation

View File

@@ -77,7 +77,7 @@ if .A == getFromOtherFile() {}
// FIXME: This should work. // FIXME: This should work.
func overloadFromOtherFile() -> YetAnotherFromOtherFile { return .A } func overloadFromOtherFile() -> YetAnotherFromOtherFile { return .A }
func overloadFromOtherFile() -> Bool { return false } func overloadFromOtherFile() -> Bool { return false }
if .A == overloadFromOtherFile() {} // expected-error {{could not find member 'A'}} if .A == overloadFromOtherFile() {}
// Complex enums are not implicitly Equatable or Hashable. // Complex enums are not implicitly Equatable or Hashable.

View File

@@ -84,7 +84,7 @@ func nsEncode<CodeUnit>(
maxLength: buffer.count, maxLength: buffer.count,
usedLength: &used, usedLength: &used,
encoding: encoding, encoding: encoding,
options: NSStringEncodingConversionOptions(0), options: [],
range: NSRange(location: 0, length: s.length), range: NSRange(location: 0, length: s.length),
remainingRange: nil) remainingRange: nil)
} }