forked from swiftlang/swift
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmacro_generated_header_objc.swift
64 lines (47 loc) · 2.5 KB
/
macro_generated_header_objc.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// REQUIRES: swift_swift_parser, objc_interop
// RUN: %empty-directory(%t)
// RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/objc_cxx_macro_definitions.swift -g -no-toolchain-stdlib-rpath
// RUN: %target-build-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) %s -o %t/main -module-name MacroUser -swift-version 5
// RUN: %target-codesign %t/main
// RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk) -typecheck -swift-version 5 -parse-as-library -enable-objc-interop -emit-objc-header-path %t/MacroUser.h -load-plugin-library %t/%target-library-name(MacroDefinition) %s -module-name MacroUser
// RUN: %FileCheck --check-prefix CHECK %s < %t/MacroUser.h
@attached(member, names:prefixed(member_))
public macro ObjCMemberFunc()= #externalMacro(module:"MacroDefinition", type:"ObjCMemberFuncMacro")
@attached(peer, names:prefixed(peer_))
public macro ObjCPeerFunc()= #externalMacro(module:"MacroDefinition", type:"ObjCPeerFuncMacro")
@freestanding(declaration, names:named(member_freestanding))
public macro ObjCFreestandingFunc()= #externalMacro(module:"MacroDefinition", type:"ObjCFreestandingFuncMacro")
@freestanding(declaration, names:named(MacroExpandedObjCClass))
public macro ObjCFreestandingClass()= #externalMacro(module:"MacroDefinition", type:"ObjCFreestandingClassMacro")
@attached(extension, conformances: MyObjCProtocol, names:named(objcRequirement))
public macro ObjCExtension()= #externalMacro(module:"MacroDefinition", type:"ObjCExtensionMacro")
@objcpublicprotocolMyObjCProtocol{
func objcRequirement()
}
// ---
import Foundation
// CHECK: SWIFT_CLASS("_TtC9MacroUser1A")
// CHECK-NEXT: @interface A : NSObject
@ObjCMemberFunc
publicclassA:NSObject{
@ObjCPeerFunc
@objcpublicfunc a(){}
// CHECK-DAG: - (void)a;
// CHECK-DAG: - (void)member_A;
// CHECK-DAG: - (void)peer_a;
#ObjCFreestandingFunc
// CHECK-DAG: - (void)member_freestanding;
}
// CHECK-DAG: @end
// CHECK: SWIFT_CLASS("_TtC9MacroUser1B")
// CHECK-NEXT: @interface B : NSObject
// CHECK: @interface B (SWIFT_EXTENSION(MacroUser)) <MyObjCProtocol>
// CHECK-NEXT: - (void)objcRequirement;
// CHECK-NEXT: @end
@ObjCExtension
publicclassB:NSObject{}
// CHECK: SWIFT_CLASS("_TtC9MacroUser22MacroExpandedObjCClass")
// CHECK-NEXT: @interface MacroExpandedObjCClass : NSObject
// CHECK-DAG: - (void)member;
// CHECK-DAG: @end
#ObjCFreestandingClass