forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconstructor.swift
56 lines (46 loc) · 911 Bytes
/
constructor.swift
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
// RUN: %target-run-simple-swift | FileCheck %s
// REQUIRES: executable_test
class A {
init() { print("a") }
init(_ x:Int) { print("b") }
init<T>(_ x:Int, _ y:T) { print("c") }
}
class B<T> {
init() { print("d") }
init(_ x:Int) { print("e") }
init(_ x:T) { print("f") }
init<U>(_ x:Int, _ y:U) { print("g") }
init<U>(_ x:T, _ y:U) { print("h") }
}
protocol Runcible {}
class C<T : Runcible> {
init() { print("i") }
init(_ x:Int) { print("j") }
init(_ x:T) { print("k") }
}
// CHECK: a
A()
// CHECK: b
A(1)
// CHECK: c
A(1, "2")
typealias BChar = B<UnicodeScalar>
// CHECK: d
BChar()
// CHECK: e
BChar(1)
// CHECK: f
BChar("2")
// CHECK: g
BChar(1, "2")
// CHECK: h
BChar("1", "2")
// <rdar://problem/12965934> Destructors for classes with constrained type parameters
struct Hat : Runcible {}
typealias CHat = C<Hat>
// CHECK: i
CHat()
// CHECK: j
CHat(1)
// CHECK: k
CHat(Hat())