mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
67 lines
1.9 KiB
Swift
67 lines
1.9 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module-path %t/error.swiftmodule -emit-objc-header-path %t/error.h -experimental-allow-module-with-compiler-errors %s
|
|
// RUN: %FileCheck --input-file %t/error.h %s
|
|
// RUN: %check-in-clang %t/error.h
|
|
|
|
// REQUIRES: objc_interop
|
|
|
|
import Foundation
|
|
|
|
// TODO: Ideally we'd output invalid decls regardless (so that they could eg. be
|
|
// used in code completion), but we avoid doing so for now to prevent crashes.
|
|
// Revisit later to handle a possibly invalid AST while printing the ObjectiveC
|
|
// header - see https://github.com/apple/swift/issues/57414.
|
|
|
|
@objc class ErrorClass: NSObject {
|
|
// CHECK: @interface ErrorClass
|
|
@objc let member: Int
|
|
// CHECK: @property {{.*}} NSInteger member;
|
|
|
|
@objc let invalidMember: undefined
|
|
// TODO: Missing
|
|
|
|
@objc func method() {}
|
|
// CHECK: - (void)method;
|
|
|
|
@objc func methodParams(a: Int, b: Int) {}
|
|
// CHECK: - (void)methodParamsWithA:(NSInteger)a b:(NSInteger)b;
|
|
|
|
@objc class func classMethod() {}
|
|
// CHECK: + (void)classMethod;
|
|
|
|
@objc(objcMethod)
|
|
func renamedMethod() {}
|
|
// CHECK: - (void)objcMethod;
|
|
|
|
@objc func invalidBody() {
|
|
// CHECK: - (void)invalidBody;
|
|
undefined
|
|
}
|
|
|
|
@objc func invalidRet() -> undefined {}
|
|
// TODO: Missing
|
|
|
|
@objc func invalidParams(a: undefined) {}
|
|
// TODO: Missing
|
|
|
|
@objc(invalid::)
|
|
func invalidRenamedMethod() {}
|
|
// CHECK: - (void)invalidRenamedMethod;
|
|
|
|
@objc @undefined func invalidAttribute() {}
|
|
// CHECK: - (void)invalidAttribute;
|
|
|
|
@objc someundefinedmodifier func invalidModifier() {}
|
|
// TODO: someundefinedmodifier treated as a function, so invalidModifier not seen as @objc
|
|
|
|
@objc @available
|
|
func invalidAvailability() {}
|
|
// CHECK: - (void)invalidAvailability;
|
|
}
|
|
|
|
@objc class InvalidParent: undefined {}
|
|
// CHECK: @interface InvalidParent
|
|
|
|
// Used to crash during sorting due to assumptions regarding the Decl kind
|
|
@objc class ErrorClass: NSObject {}
|