- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathclass.swift
88 lines (61 loc) · 2.1 KB
/
class.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-object -emit-module -o %t %S/Inputs/def_class.swift -disable-objc-attr-requires-foundation-module -enable-objc-interop
// RUN: llvm-bcanalyzer %t/def_class.swiftmodule | %FileCheck %s
// RUN: %target-swift-frontend -emit-sil -sil-debug-serialization -I %t %s | %FileCheck %s -check-prefix=SIL
// RUN: echo "import def_class; struct A : ClassProto {}" | not %target-swift-frontend -typecheck -I %t - 2>&1 | %FileCheck %s -check-prefix=CHECK-STRUCT
// CHECK-NOT: UnknownCode
// CHECK-STRUCT: non-class type 'A' cannot conform to class protocol 'ClassProto'
// Make sure we can "merge" def_class.
// RUN: %target-swift-frontend -emit-module -o %t-merged.swiftmodule %t/def_class.swiftmodule -module-name def_class
import def_class
vara:Empty
varb=TwoInts(a:1, b:2)
varcomputedProperty:ComputedProperty
varsum= b.x + b.y + computedProperty.value
varintWrapper=ResettableIntWrapper()
varr:Resettable= intWrapper
r.reset()
r.doReset()
classAnotherIntWrapper:SpecialResettable,ClassProto{
init(){ value =0}
varvalue:Int
func reset(){
value =0
}
func compute(){
value =42
}
}
varintWrapper2=AnotherIntWrapper()
r = intWrapper2
r.reset()
varc:Cacheable= intWrapper2
c.compute()
c.reset()
varp=Pair(a:1, b:2.5)
p.first =2
p.second =5.0
structMyInt{}
vargc=GenericCtor<MyInt>(42)
gc.doSomething(42)
a =StillEmpty()
r =StillEmpty()
varbp=BoolPair<Bool>()
bp.bothTrue()
varrawBP:Pair<Bool,Bool>
rawBP = bp
varrev:SpecialPair<Double>
rev.first =42
varcomp:Computable= rev
varsimpleSub=ReadonlySimpleSubscript()
varsubVal=simpleSub[4]
varcomplexSub=ComplexSubscript()
complexSub[4,false]=complexSub[3,true]
varrsrc=Resource()
getReqPairLike()
// SIL-LABEL: sil public_external [transparent] [canonical] @$sSi1poiyS2i_SitFZ : $@convention(method) (Int, Int, @thin Int.Type) -> Int
func test(_ sharer:ResourceSharer){}
classHasNoOptionalReqs:ObjCProtoWithOptional{}
HasNoOptionalReqs()
OptionalImplementer().unrelated()
extensiondef_class.ComputedProperty{}