// RUN: %target-run-simple-swift | FileCheck %s
// REQUIRES: executable_test

class A {
  func printA() { print("A", terminator: "") }
}
class B : A {
  override func printA() { print("B", terminator: "") }
}

func printA(_ v: A) { v.printA() }
func printOpt<T>(_ subprint: @escaping (T) -> ()) -> (T?) -> () {
  return { x in
    switch (x) {
    case .some(let y): print(".some(", terminator: ""); subprint(y); print(")", terminator: "")
    case .none: print(".none", terminator: "")
    }
  }
}

func test(_ v: A????, _ cast: (A????) -> B?) {
  printOpt(printOpt(printOpt(printOpt(printA))))(v)
  print(" as? B: ", terminator: "")
  printOpt(printA)(cast(v))
  print("\n", terminator: "")
}
test(.some(.some(.some(.some(A())))), { $0 as? B })
test(.some(.some(.some(.some(B())))), { $0 as? B })
test(.some(.some(.some(.none))), { $0 as? B })
test(.some(.some(.none)), { $0 as? B })
test(.some(.none), { $0 as? B })
test(.none, { $0 as? B })
// CHECK: .some(.some(.some(.some(A)))) as? B: .none
// CHECK: .some(.some(.some(.some(B)))) as? B: .some(B)
// CHECK: .some(.some(.some(.none))) as? B: .none
// CHECK: .some(.some(.none)) as? B: .none
// CHECK: .some(.none) as? B: .none
// CHECK: .none as? B: .none

func test(_ v: A????, _ cast: (A????) -> B??) {
  printOpt(printOpt(printOpt(printOpt(printA))))(v)
  print(" as? B?: ", terminator: "")
  printOpt(printOpt(printA))(cast(v))
  print("\n", terminator: "")
}
test(.some(.some(.some(.some(A())))), { $0 as? B? })
test(.some(.some(.some(.some(B())))), { $0 as? B? })
test(.some(.some(.some(.none))), { $0 as? B? })
test(.some(.some(.none)), { $0 as? B? })
test(.some(.none), { $0 as? B? })
test(.none, { $0 as? B? })
// CHECK: .some(.some(.some(.some(A)))) as? B?: .none
// CHECK: .some(.some(.some(.some(B)))) as? B?: .some(.some(B))
// CHECK: .some(.some(.some(.none))) as? B?: .some(.none)
// CHECK: .some(.some(.none)) as? B?: .none
// CHECK: .some(.none) as? B?: .none
// CHECK: .none as? B?: .none

func test(_ v: A????, _ cast: (A????) -> B???) {
  printOpt(printOpt(printOpt(printOpt(printA))))(v)
  print(" as? B??: ", terminator: "")
  printOpt(printOpt(printOpt(printA)))(cast(v))
  print("\n", terminator: "")
}
test(.some(.some(.some(.some(A())))), { $0 as? B?? })
test(.some(.some(.some(.some(B())))), { $0 as? B?? })
test(.some(.some(.some(.none))), { $0 as? B?? })
test(.some(.some(.none)), { $0 as? B?? })
test(.some(.none), { $0 as? B?? })
test(.none, { $0 as? B?? })
// CHECK: .some(.some(.some(.some(A)))) as? B??: .none
// CHECK: .some(.some(.some(.some(B)))) as? B??: .some(.some(.some(B)))
// CHECK: .some(.some(.some(.none))) as? B??: .some(.some(.none))
// CHECK: .some(.some(.none)) as? B??: .some(.none)
// CHECK: .some(.none) as? B??: .none
// CHECK: .none as? B??: .none

class Foo : Equatable {
}
func ==(a : Foo, b : Foo) -> Bool { return a === b }


var x_foo: Foo! = nil
if x_foo == nil { print("x_foo is nil") }
// CHECK: x_foo is nil
if x_foo != nil { print("x_foo is not nil") } else { print("x_foo is nil") }
// CHECK: x_foo is nil
if nil == x_foo { print("x_foo is nil") }
// CHECK: x_foo is nil
if nil != x_foo { print("x_foo is not nil") } else { print("x_foo is nil") }
// CHECK: x_foo is nil

var y_foo: Foo? = nil
if y_foo == nil { print("y_foo is nil") }
// CHECK: y_foo is nil
if y_foo != nil { print("y_foo is not nil") } else { print("y_foo is nil") }
// CHECK: y_foo is nil
if nil == y_foo { print("y_foo is nil") }
// CHECK: y_foo is nil
if nil != y_foo { print("y_foo is not nil") } else { print("y_foo is nil") }
// CHECK: y_foo is nil

var x : Int? = nil
var y : Int?? = x
var z : Int?? = nil

switch y {
  case nil:  print("y is nil")
  case .some(nil): print("y is .some(nil)")
  case .some(let v): print("y is .some(\(v))")
}
// CHECK: y is .some(nil)

switch z {
  case nil:  print("z is nil")
  case .some(nil): print("z is .some(nil)")
  case .some(let v): print("z is .some(\(v))")
}
// CHECK: z is nil

// Validate nil equality comparisons with non-equatable optional types
class C {}
var c: C? = nil

print(c == nil)
// CHECK: true

print(nil == c)
// CHECK: true

print(c != nil)
// CHECK: false

print(nil != c)
// CHECK: false

var c2: C? = C()

print(c2 == nil)
// CHECK: false

print(nil == c2)
// CHECK: false

print(c2 != nil)
// CHECK: true

print(nil != c2)
// CHECK: true

var c3: C! = nil

print(c3 == nil)
// CHECK: true

print(nil == c3)
// CHECK: true

print(c3 != nil)
// CHECK: false

print(nil != c3)
// CHECK: false

var c4: C! = C()

print(c4 == nil)
// CHECK: false

print(nil == c4)
// CHECK: false

print(c4 != nil)
// CHECK: true

print(nil != c4)
// CHECK: true
