// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: cp %s %t/main.swift
// RUN: %target-build-swift -whole-module-optimization -emit-module-path %t/UsingObjCStuff.swiftmodule -c -o %t/UsingObjCStuff.o -module-name UsingObjCStuff -I %t -I %S/Inputs/mixed_mode -swift-version 4 -parse-as-library %S/Inputs/mixed_mode/UsingObjCStuff.swift
// RUN: %target-build-swift -o %t/a.out.v3 -I %t -I %S/Inputs/mixed_mode -module-name main -swift-version 3 %t/main.swift %t/UsingObjCStuff.o
// RUN: %target-build-swift -o %t/a.out.v4 -I %t -I %S/Inputs/mixed_mode -module-name main -swift-version 4 %t/main.swift %t/UsingObjCStuff.o
// RUN: %target-run %t/a.out.v3 | %FileCheck %s
// RUN: %target-run %t/a.out.v4 | %FileCheck %s

// REQUIRES: objc_interop
// REQUIRES: executable_test

import UsingObjCStuff

print("Let's go") // CHECK: Let's go

let holder = ButtHolder()
holder.x += 17
print(holder.x) // CHECK-NEXT: 17
holder.x += 38
print(holder.x) // CHECK-NEXT: 55
holder.z += "hello"
print(holder.z) // CHECK-NEXT: hello
holder.z += " world"
print(holder.z) // CHECK-NEXT: hello world

holder.virtual() // CHECK-NEXT: 55 [:] hello world

class SubButtHolder: ButtHolder {
  final var w: Double = 0

  override func virtual() {
    print("~* ", terminator: "")
    super.virtual()
    print(" \(w) *~")
  }

  func subVirtual() {
    print("~* \(x) ~*~ \(z) ~*~ \(w) *~")
  }
}

class SubSubButtHolder: SubButtHolder {
  override func virtual() {
    print("!!! ", terminator: "")
    super.virtual()
    print(" !!!")
  }
  override func subVirtual() {
    print("!!! ", terminator: "")
    super.subVirtual()
    print(" !!!")
  }
}

@inline(never)
func exerciseSubHolder(with subHolder: SubButtHolder) {
  subHolder.x = 679
  subHolder.z = "goodbye folks"
  subHolder.w = 90.5

  subHolder.virtual() // CHECK-NEXT: !!! ~* 679 [:] goodbye folks
                      // CHECK-NEXT: 90.5 *~
                      // CHECK-NEXT: !!!
  subHolder.subVirtual() // CHECK-NEXT: !!! ~* 679 ~*~ goodbye folks ~*~ 90.5 *~
                         // CHECK-NEXT: !!!
}

exerciseSubHolder(with: SubSubButtHolder())


print("OK that's it") // CHECK-NEXT: OK that's it
