torture.swift 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. import Foundation
  2. import UIKit.UIView
  3. /// Class doc line one
  4. /// Class doc line two
  5. public final class Session: NSObject, RequestDelegate {
  6. let rootQueue: DispatchQueue = DispatchQueue(label: "root")
  7. var mutable = 0
  8. static let SHARED_MAX: Int = 5
  9. static var counter = 0
  10. lazy var expensive: Cache = Cache.build()
  11. @Published private var wrapped: Bool = false
  12. weak var delegate: SessionDelegate?
  13. var observed: Int = 0 {
  14. willSet { prepare(newValue) }
  15. didSet { react(oldValue) }
  16. }
  17. var isCloudProxy: Bool { return check(SHARED_MAX) }
  18. open class func classFunc() {}
  19. /// method doc
  20. public func request(_ convertible: URLConvertible, method: HTTPMethod) -> DataRequest {
  21. let req = DataRequest.make().validate()
  22. let m = HTTPMethod.get
  23. let g = Session.SHARED_MAX
  24. self.own()
  25. super.retain()
  26. rootQueue.async { self.perform(req) }
  27. return req
  28. }
  29. init(raw: String) {
  30. self.raw = raw
  31. setupMonitor()
  32. }
  33. deinit { cleanup() }
  34. subscript(index: Int) -> Foo { get { store[index] } set { store[index] = newValue } }
  35. }
  36. struct HTTPMethod: RawRepresentable, Equatable {
  37. let rawValue: String
  38. static let get = HTTPMethod(rawValue: "GET")
  39. }
  40. enum AFError: Error, CustomStringConvertible {
  41. case invalidURL(url: URLConvertible)
  42. case explicitlyCancelled, sessionDeinitialized
  43. indirect case wrapped(AFError)
  44. var description: String { renderDescription() }
  45. static func make() -> AFError { .explicitlyCancelled }
  46. }
  47. protocol RequestDelegate: AnyObject {
  48. var sessionState: Int { get }
  49. func didFinish(_ request: Request)
  50. static func build() -> Self
  51. }
  52. extension Session: EventMonitor {
  53. func heard(event: Event) { record(event) }
  54. }
  55. extension KF.Builder {
  56. func done() -> KF.Builder { self }
  57. }
  58. extension Array where Element: Equatable {
  59. func dedup() -> [Element] { self }
  60. }
  61. actor Counter {
  62. var n = 0
  63. func bump() { n += 1 }
  64. }
  65. typealias Handler = (Data) -> Void
  66. typealias BuilderAlias = KF.Builder
  67. let TOP_LEVEL_MAX = 3
  68. var topVar: Int = compute()
  69. func freeFn(a: Int, cb: @escaping (Int) -> Void) -> Session? {
  70. helper()
  71. Foo()
  72. obj.method(1)
  73. a.b.deep()
  74. x?.optCall()
  75. y!.forced()
  76. Foo.make().draw()
  77. foo.bar().baz()
  78. "lit".upper()
  79. arr.map { $0.name }
  80. let tbl = [cbA, cbB]
  81. o.cb = handler
  82. reg2(onFire)
  83. forward(value: value)
  84. let sel = #selector(Holder.fire)
  85. defer { cleanup() }
  86. let d = dict["k"]
  87. return nil
  88. }
  89. func onFire() {}
  90. func handler() {}
  91. func cbA() {}
  92. func cbB() {}
  93. // ---- extension rows (checklist inventory) ----
  94. // non-ASCII line before a symbol: café ünïcode 😀
  95. @objc enum Suit: Int {
  96. case hearts = 1
  97. case spades
  98. }
  99. @main struct MainApp {
  100. var body: some View { VStack { Text(label) } }
  101. }
  102. /** block doc is IGNORED and breaks the chain */
  103. func blockDoc() {}
  104. /// kept over attribute
  105. @objc func attributed() {}
  106. func <+> (lhs: Session, rhs: Session) -> Session { lhs }
  107. public class Visi {
  108. public private(set) var setterGated = 1
  109. static let A_B: Int = 2
  110. let (tup, tup2) = makePair()
  111. @Siblings(through: Pivot.self, from: \.$left) var siblings: [Tag]
  112. }
  113. protocol Inherited: AnyObject, Identifiable {
  114. var reqComputed: String { get set }
  115. static var reqStatic: Int { get }
  116. }
  117. extension [ServerTrustEvaluating] {
  118. func sugarExt() {}
  119. }
  120. func voidParamProof(cb: (Void) -> Void) -> Result<Foo, Err> {
  121. callMe()
  122. return .success(Foo())
  123. }
  124. func nestedGenericRet() -> Result<Array<Foo>, Err> { fail() }
  125. func voidRet() -> Void { noop() }
  126. func tupleRet() -> (Int, Foo) { (1, Foo()) }
  127. func fnRet() -> (Int) -> Foo { { _ in Foo() } }
  128. func optRet() -> Session? { nil }
  129. func builderRet() -> KF.Builder { KF.Builder() }
  130. func callZooExtra(m: [[Int]], arr: [Int], f: () -> Void) {
  131. Foo.init(raw: "x")
  132. """
  133. multi
  134. """.trimmed()
  135. ["k": 1].lookup()
  136. (f)()
  137. arr[0]
  138. m[1][2]
  139. .make()
  140. try? thrower()
  141. Task { await asyncFn() }
  142. let msg = "count \(counter.next())"
  143. #warning("torture warning")
  144. }
  145. func staticReads(u: User) {
  146. let c = Color.red
  147. let r = Suit.hearts.rawValue
  148. let s = UserModel.self
  149. let d = Deep.Nested.leaf
  150. let i = lowercase.field
  151. let k = \Foo.bar
  152. }
  153. #if os(iOS)
  154. func insideDirective() { directiveCall() }
  155. #endif
  156. // declared-then-assigned: the assignment-prune case (kernel-sweep-caught) —
  157. // laterAssigned MUST be pruned as a value-ref target.
  158. let laterAssigned: Int
  159. if TOP_LEVEL_MAX > 2 {
  160. laterAssigned = 1
  161. } else {
  162. laterAssigned = 2
  163. }
  164. let readsLater = laterAssigned + TOP_LEVEL_MAX
  165. func guardNoPrune() {
  166. guard let TOP_LEVEL_MAX = optSource() else { return }
  167. use(TOP_LEVEL_MAX)
  168. }
  169. func fnRefExtras() {
  170. reg(cb: onFire)
  171. let sel1 = #selector(fire)
  172. let sel2 = #selector(onNote(_:))
  173. self.x = x
  174. }
  175. import class Darwin.FILE
  176. @testable import TortureKit