mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
40 lines
1.4 KiB
Swift
40 lines
1.4 KiB
Swift
// RUN: %target-typecheck-verify-swift
|
|
|
|
// REQUIRES: rdar112865148
|
|
|
|
// REQUIRES: libdispatch
|
|
// UNSUPPORTED: OS=linux-gnu
|
|
// UNSUPPORTED: OS=linux-android
|
|
// UNSUPPORTED: OS=openbsd
|
|
|
|
import Dispatch
|
|
|
|
func test1(_ queue: dispatch_queue_t) {} // expected-error {{'dispatch_queue_t' is unavailable}}
|
|
func test2(_ queue: DispatchQueue) {
|
|
let base: NSObjectProtocol = queue
|
|
let _: DispatchObject = queue
|
|
|
|
let _ = base as? DispatchQueue
|
|
|
|
// Make sure the dispatch types are actually distinct types!
|
|
let _ = queue as DispatchSource // expected-error {{cannot convert value of type 'DispatchQueue' to type 'DispatchSource' in coercion}}
|
|
let _ = base as DispatchSource // expected-error {{'any NSObjectProtocol' is not convertible to 'DispatchSource'}}
|
|
// expected-note@-1 {{did you mean to use 'as!' to force downcast?}} {{16-18=as!}}
|
|
}
|
|
|
|
extension dispatch_queue_t {} // expected-error {{'dispatch_queue_t' is unavailable}}
|
|
|
|
// Make sure you can extend a dispatch type via its common name.
|
|
extension DispatchQueue {
|
|
func myAsync(_ block: @escaping () -> Void) {
|
|
async(execute: block)
|
|
}
|
|
}
|
|
|
|
func test_dispatch1(_ object: dispatch_object_t) {} // expected-error {{'dispatch_object_t' is unavailable}}
|
|
func test_dispatch2(_ object: DispatchObject) {
|
|
dispatch_retain(object) // expected-error {{'dispatch_retain' is unavailable in Swift}}
|
|
dispatch_release(object) // expected-error {{'dispatch_release' is unavailable in Swift}}
|
|
}
|
|
|