| // RUN: %target-swift-frontend -emit-silgen -enable-sil-ownership %s | %FileCheck %s |
| |
| // CHECK-LABEL: sil hidden [thunk] @pear : $@convention(c) |
| // CHECK: function_ref @_T05cdecl5apple{{[_0-9a-zA-Z]*}}F |
| // CHECK-LABEL: sil hidden @_T05cdecl5apple{{[_0-9a-zA-Z]*}}F |
| @_cdecl("pear") |
| func apple(_ f: @convention(c) (Int) -> Int) { |
| } |
| |
| // CHECK-LABEL: sil hidden @_T05cdecl16forceCEntryPoint{{[_0-9a-zA-Z]*}}F |
| // CHECK: function_ref @grapefruit |
| func forceCEntryPoint() { |
| apple(orange) |
| } |
| |
| // CHECK-LABEL: sil hidden [thunk] @grapefruit : $@convention(c) |
| // CHECK: function_ref @_T05cdecl6orange{{[_0-9a-zA-Z]*}}F |
| // CHECK-LABEL: sil hidden @_T05cdecl6orange{{[_0-9a-zA-Z]*}}F |
| @_cdecl("grapefruit") |
| func orange(_ x: Int) -> Int { |
| return x |
| } |
| |
| // CHECK-LABEL: sil [thunk] @cauliflower : $@convention(c) |
| // CHECK: function_ref @_T05cdecl8broccoli{{[_0-9a-zA-Z]*}}F |
| // CHECK-LABEL: sil @_T05cdecl8broccoli{{[_0-9a-zA-Z]*}}F |
| @_cdecl("cauliflower") |
| public func broccoli(_ x: Int) -> Int { |
| return x |
| } |
| |
| // CHECK-LABEL: sil private [thunk] @collard_greens : $@convention(c) |
| // CHECK: function_ref @_T05cdecl4kale[[PRIVATE:.*]] |
| // CHECK: sil private @_T05cdecl4kale[[PRIVATE:.*]] |
| @_cdecl("collard_greens") |
| private func kale(_ x: Int) -> Int { |
| return x |
| } |
| |
| /* TODO: Handle error conventions |
| @_cdecl("vomits") |
| func barfs() throws {} |
| */ |