File: main.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 (170 lines) | stat: -rw-r--r-- 3,799 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
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
struct A {
  let field = 4.5
}

struct B {
  let a = A()
  let b = 123456
}

// Enum with a single non-payload case.
enum TrivialEnum {
  case theCase
}

// Enum with 2 or more non-payload cases and no payload cases
enum NonPayloadEnum {
  case one
  case two
}

// Enum with 1 payload case and zero or more non-payload cases
enum SinglePayloadEnum {
  case nonPayloadOne
  case payload(B)
  case nonPayloadTwo
}

// A MultiPayloadEnum whose payload has less than 64 bits
enum SmallMultipayloadEnum {
  case empty
  case one(NonPayloadEnum)
  case two(NonPayloadEnum)
}

// A MultiPayloadEnum whose payload has more than 64 bits
enum BigMultipayloadEnum {
  case one(Sup, Sup, Sup)
  case two(B)
}

// A MultiPayloadEnum with no spare bits
enum FullMultipayloadEnum {
  case one(Int)
  case two(Double)
}

// A MultiPayloadEnum whose payload has more than 64 bits and no spare bits
enum BigFullMultipayloadEnum {
  case one(Int, Int)
  case two(Double, Double)
}

class Sup {
  var supField: Int8 = 42
}

class Sub: Sup {
  var subField = B()
}

class SubSub: Sub {
  var subSubField = A()
}


struct GenericStructPair<T, U> {
  let t: T
  let u: U
}

class GenericClassPair<T, U> {
  let t: T
  let u: U

  init(t: T, u: U) {
    self.t = t
    self.u = u
  }
}

enum Either<Left, Right> {
  case left(Left)
  case right(Right)
}


struct Outer {
  struct Inner {
    let value = 99
    struct Innerer {
      let innererValue = 101
    }
  }
}

private struct PrivateType {
  let privateField = 100
}


struct OuterGeneric<T> {
  struct SpecializedInner {
    let t: T
  }

  struct GenericInner<U> {
    let t: T
    let u: U
  }
}

func g() {
  struct FunctionType {
    let funcField = 67
  }
  func f() {
    struct InnerFunctionType {
      let innerFuncField = 8479
    }

    let varB = B()
    let tuple = (A(), B())
    let trivial = TrivialEnum.theCase
    let nonPayload1 = NonPayloadEnum.one
    let nonPayload2 = NonPayloadEnum.two
    let singlePayload = SinglePayloadEnum.payload(B())
    let emptySinglePayload = SinglePayloadEnum.nonPayloadTwo
    let smallMultipayloadEnum1 = SmallMultipayloadEnum.one(.two)
    let smallMultipayloadEnum2 = SmallMultipayloadEnum.two(.one)
    let e1 = Sup()
    let e2 = Sup()
    e2.supField = 43
    let e3 = Sup()
    e3.supField = 44
    let bigMultipayloadEnum1 = BigMultipayloadEnum.one(e1, e2, e3)
    let fullMultipayloadEnum1 = FullMultipayloadEnum.one(120)
    let fullMultipayloadEnum2 = FullMultipayloadEnum.two(9.5)
    let bigFullMultipayloadEnum1 = BigFullMultipayloadEnum.one(209, 315)
    let bigFullMultipayloadEnum2 = BigFullMultipayloadEnum.two(452.5, 753.5)
    let sup = Sup()
    let sub = Sub()
    let subSub = SubSub()
    let sup2: Sup = SubSub()
    let gsp = GenericStructPair(t: 42, u: 94.5)
    let gsp2 = GenericStructPair(t: Sup(), u: B())
    let gsp3 = GenericStructPair(t: bigFullMultipayloadEnum1, u: smallMultipayloadEnum2)
    let gcp = GenericClassPair(t: 55.5, u: 9348)
    let either = Either<Int, Double>.left(1234)
    let either2 = Either<Sup, _>.right(gsp3)
    // FIXME: remove the instantiation of Outer (rdar://125258124)
    let outer = Outer()
    let inner = Outer.Inner()
    let innerer = Outer.Inner.Innerer()
    let privateType = PrivateType()
    // FIXME: remove the instantiation of OuterGeneric (rdar://125258124)
    let outerGeneric = OuterGeneric<Int>()
    let specializedInner = OuterGeneric<Int>.SpecializedInner(t: 837)
    let genericInner = OuterGeneric<Int>.GenericInner(t: 647, u: 674.5)
    let functionType = FunctionType()
    let innerFunctionType = InnerFunctionType()

    // Dummy statement to set breakpoint print can't be used in embedded Swift for now.
    let dummy = A() // break here
    let string = StaticString("Hello") 
    print(string) 
  }
  f()
}

g()