// RUN: %empty-directory(%t)
// RUN: %target-clang -fmodules -c -o %t/ErrorBridgedStaticImpl.o %S/Inputs/ErrorBridgedStaticImpl.m 
// RUN: %target-build-swift -static-stdlib -o %t/ErrorBridgedStatic %t/ErrorBridgedStaticImpl.o %s -import-objc-header %S/Inputs/ErrorBridgedStaticImpl.h
// RUN: strip %t/ErrorBridgedStatic
// RUN: %target-run %t/ErrorBridgedStatic

// REQUIRES: rdar50279940
// REQUIRES: executable_test
// REQUIRES: objc_interop
// REQUIRES: static_stdlib

// SWIFT_ENABLE_TENSORFLOW: This test is unsupported because TensorFlow currently doesn't work with static-stdlib.
// UNSUPPORTED: tensorflow

import StdlibUnittest

class Bar: Foo {
  override func foo(_ x: Int32) throws {
    try super.foo(5)
  }
  
  override func foothrows(_ x: Int32) throws {
    try super.foothrows(5)
  }
}

var ErrorBridgingStaticTests = TestSuite("ErrorBridging with static libs")

ErrorBridgingStaticTests.test("round-trip Swift override of ObjC method") {
  do {
    try (Bar() as Foo).foo(5)
  } catch { }
}

ErrorBridgingStaticTests.test("round-trip Swift override of throwing ObjC method") {
  do {
    try (Bar() as Foo).foothrows(5)
  } catch {
    print(error)
    expectEqual(error._domain, "abcd")
    expectEqual(error._code, 1234)
  }
}

runAllTests()
