forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathattr_expose.swift
35 lines (26 loc) · 1.13 KB
/
attr_expose.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
// RUN: %target-typecheck-verify-swift
@_cdecl("cdecl_foo") func foo(x: Int) -> Int { return x }
@_expose(Cxx) func test() {}
@_expose(Cxx, "renamed") func renamedFunc() {}
@_expose(Cxx, "") func emptyNameOk() {}
@_expose // expected-error {{expected '(' in '_expose' attribute}}
func exposeWithoutArgs() {}
@_expose(CplusPlus) // expected-error {{expected '_expose' option such as 'Cxx'}}
func incorrectLangSpecifier() {}
@_expose(Cxx) @_cdecl("test") // expected-error {{@_expose attribute cannot be applied to an '@_cdecl' declaration}}
func cdeclAndExpose() {}
func hasNested() {
@_expose(Cxx) // expected-error{{can only be used in a non-local scope}}
func nested() { }
}
struct NotExposedStruct {
@_expose(Cxx) // expected-error {{@_expose attribute cannot be applied inside of unexposed declaration 'NotExposedStruct'}}
func errorOnInnerExpose() {}
}
@_expose(Cxx)
struct ExposedStruct {
@_expose(Cxx, "create") // expected-error {{invalid declaration name 'create' specified in an @_expose attribute; exposed initializer name must start with 'init'}}
init() {}
@_expose(Cxx, "initWith")
init(with y: Int) {}
}