File: Dispatch_test.swift

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 (39 lines) | stat: -rw-r--r-- 1,445 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
// 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}}
}