File: 0015-rdar16803384.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 (47 lines) | stat: -rw-r--r-- 651 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
// RUN: not %target-swift-frontend %s -typecheck

protocol P {
  func doSomething()

  typealias Y
  func doSomething2(Y)
}

protocol P2 : P {
  func doSomething3()
}

struct X {}

class B<T> : P2 {
  func doSomething() { }

  typealias Y = T

  func doSomething2<T2>(t : T) { }

  func doSomething3() { }
}

func DoSomething<T : P, T2 where T2 == T.Y>(t : T, t2 : T2) {
  t.doSomething()
  t.doSomething2(t2)
}

func DoSomething2(p : P) {
  p.doSomething()
}

func DoSomething3<T : P2>(t : T) {
  t.doSomething3()
}

func DoSomething3(p2 : P2) {
  p2.doSomething3()
}

var b = B<X>()
var x = X()
DoSomething(b, t2: x)
DoSomething2(b)
DoSomething3(b)