| // Please keep this file in alphabetical order! |
| |
| // REQUIRES: objc_interop |
| |
| // RUN: %empty-directory(%t) |
| |
| // FIXME: BEGIN -enable-source-import hackaround |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/CoreGraphics.swift |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/Foundation.swift |
| // FIXME: END -enable-source-import hackaround |
| |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -import-objc-header %S/Inputs/circularity.h -emit-module -o %t %s |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -import-objc-header %S/Inputs/circularity.h -parse-as-library %t/circularity-errors.swiftmodule -typecheck -emit-objc-header-path %t/circularity-errors.h |
| |
| // RUN: %FileCheck %s < %t/circularity-errors.h |
| // RUN: not %check-in-clang %t/circularity-errors.h |
| |
| import Foundation |
| |
| // CHECK: @protocol A2; |
| // CHECK-LABEL: @protocol A1 <Proto> |
| @objc protocol A1: Proto { |
| // CHECK: - (void)test: |
| func test(_: NeedsProto<A2>) |
| } // CHECK: @end |
| // CHECK-LABEL: @protocol A2 <Proto> |
| @objc protocol A2: Proto { |
| // CHECK: - (void)test: |
| func test(_: NeedsProto<A1>) |
| } // CHECK: @end |
| |
| // CHECK: @class B2; |
| // CHECK-LABEL: @protocol B1 <Proto> |
| @objc protocol B1: Proto { |
| // CHECK: - (void)test: |
| @objc optional func test(_: NeedsProto<B2>) |
| } // CHECK: @end |
| // CHECK-LABEL: @interface B2 : ProtoImpl <B1> |
| class B2: ProtoImpl, B1 { |
| } // CHECK: @end |
| |
| // CHECK: @class C1; |
| // Moved below. |
| class C1: ProtoImpl, C2 {} |
| // CHECK-LABEL: @protocol C2 <Proto> |
| @objc protocol C2: Proto { |
| // CHECK: - (void)test: |
| @objc optional func test(_: NeedsProto<C1>) |
| } // CHECK: @end |
| // CHECK-LABEL: @interface C1 : ProtoImpl <C2> |
| // CHECK: @end |
| |
| // CHECK: @protocol D2; |
| // CHECK-LABEL: @protocol D1 <Proto> |
| @objc protocol D1: Proto { |
| // CHECK: - (void)test: |
| func test(_: NeedsProto<D2>) |
| } // CHECK: @end |
| // CHECK-LABEL: @protocol D2 <D1> |
| @objc protocol D2: D1 { |
| } // CHECK: @end |
| |
| // CHECK: @protocol E1; |
| // Moved below. |
| @objc protocol E1: E2 {} |
| // CHECK-LABEL: @protocol E2 <Proto> |
| @objc protocol E2: Proto { |
| // CHECK: - (void)test: |
| func test(_: NeedsProto<E1>) |
| } // CHECK: @end |
| // CHECK-LABEL: @protocol E1 <E2> |
| // CHECK: @end |