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

var x : Int! = .none
if x != nil {
  print("x is non-empty!")
} else {
  print("an empty optional is logically false")
}
// CHECK: an empty optional is logically false

x = .some(0)

if x != nil {
  print("a non-empty optional is logically true")
} else {
  print("x is empty!")
}
// CHECK: a non-empty optional is logically true

class C {}
var c : C! = C()

if c === nil {
  print("x is nil!")
} else {
  print("a non-empty class optional should not equal nil")
}
// CHECK: a non-empty class optional should not equal nil

c = nil
if c === nil {
  print("an empty class optional should equal nil")
} else {
  print("x is not nil!")
}
// CHECK: an empty class optional should equal nil

import StdlibUnittest


import Swift

var ImplicitlyUnwrappedOptionalTests = TestSuite("ImplicitlyUnwrappedOptional")

ImplicitlyUnwrappedOptionalTests.test("flatMap") {
  // FIXME(19798684): can't call map or flatMap on ImplicitlyUnwrappedOptional

  // let half: Int32 -> Int16! =
  //   { if $0 % 2 == 0 { return Int16($0 / 2) } else { return .none } }

  // expectOptionalEqual(2 as Int16, half(4))
  // expectEmpty(half(3))

  // expectEmpty((.none as Int!).flatMap(half))
  // expectOptionalEqual(2 as Int16, (4 as Int!).flatMap(half))
  // expectEmpty((3 as Int!).flatMap(half))
}

runAllTests()

