mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Since Swift 3 and Swift 4 might have different views of an Objective-C API's nullability, we can end up with incompatible overrides, including with inherited initializers. This is unfortunate but also realistic; the Swift 3 code is /not/ set up to handle the new nullability used by Swift 4 and Objective-C. Just silence the warning. (It would be nice to not print inherited initializers at all, but that would mean making sure there are no convenience initializers we have to print as well. Otherwise the class would get mistaken for one without explicit designated initializers.) rdar://problem/32571301
42 lines
2.5 KiB
Swift
42 lines
2.5 KiB
Swift
// REQUIRES: objc_interop
|
|
|
|
// RUN: rm -rf %t
|
|
// RUN: mkdir -p %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
|
|
// 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/AppKit.swift
|
|
// FIXME: END -enable-source-import hackaround
|
|
|
|
// RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -I %S/Inputs/custom-modules -o %t %s -disable-objc-attr-requires-foundation-module -swift-version 3
|
|
// RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -parse-as-library %t/versioned.swiftmodule -typecheck -I %S/Inputs/custom-modules -emit-objc-header-path %t/versioned.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module -swift-version 3
|
|
// RUN: %FileCheck %s < %t/versioned.h
|
|
// RUN: %check-in-clang -I %S/Inputs/custom-modules/ %t/versioned.h
|
|
// RUN: %check-in-clang -I %S/Inputs/custom-modules/ -fno-modules -Qunused-arguments %t/versioned.h -include Foundation.h -include VersionedFMWK.h
|
|
|
|
import VersionedFMWK
|
|
|
|
// CHECK-LABEL: @interface NullabilitySub
|
|
@objc class NullabilitySub: NullabilityBase {
|
|
// CHECK-NEXT: - (void)processNowNullableArgument:(NSObject * _Nonnull)object;
|
|
override func processNowNullableArgument(_ object: NSObject) {}
|
|
// CHECK-NEXT: - (nullable instancetype)initFormerlyFailableValue:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
|
|
} // CHECK-NEXT: @end
|
|
|
|
// CHECK-LABEL: @interface UsesNestedClass
|
|
@objc class UsesNestedClass : NSObject {
|
|
// CHECK-NEXT: - (InnerClass * _Nullable)foo SWIFT_WARN_UNUSED_RESULT;
|
|
@objc func foo() -> InnerClass? { return nil }
|
|
// CHECK-NEXT: - (void)fooStruct:(struct InnerStruct)_;
|
|
@objc func fooStruct(_: InnerStruct) {}
|
|
// CHECK-NEXT: - (void)fooAnonStruct:(InnerAnonStruct)_;
|
|
@objc func fooAnonStruct(_: InnerAnonStruct) {}
|
|
// CHECK-NEXT: - (void)fooAlias:(InnerAlias)_;
|
|
@objc func fooAlias(_: InnerAlias) {}
|
|
|
|
// CHECK-NEXT: - (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
|
}
|
|
// CHECK-NEXT: @end
|