mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
ModuleInterface: Don't print @c @implementation functions
We don't need to print the `@c @implementation` functions in swiftinterfaces as clients need only to see the original declaration in the C header. Don't print `@objc @implementation` functions either, but still print simple `@c` and `@objc` functions.
This commit is contained in:
57
test/ModuleInterface/cdecl-swiftinterface.swift
Normal file
57
test/ModuleInterface/cdecl-swiftinterface.swift
Normal file
@@ -0,0 +1,57 @@
|
||||
// RUN: %empty-directory(%t)
|
||||
// RUN: split-file %s %t --leading-lines
|
||||
|
||||
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) \
|
||||
// RUN: -emit-module %t/Lib.swift -o %t -I %t \
|
||||
// RUN: -swift-version 6 -enable-library-evolution \
|
||||
// RUN: -emit-module-interface-path %t/Lib.swiftinterface \
|
||||
// RUN: -enable-experimental-feature CDecl \
|
||||
// RUN: -enable-experimental-feature CImplementation
|
||||
|
||||
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %t \
|
||||
// RUN: -typecheck-module-from-interface %t/Lib.swiftinterface
|
||||
|
||||
// RUN: %FileCheck %s --input-file %t/Lib.swiftinterface
|
||||
|
||||
// REQUIRES: objc_interop
|
||||
// REQUIRES: swift_feature_CDecl
|
||||
// REQUIRES: swift_feature_CImplementation
|
||||
|
||||
//--- module.modulemap
|
||||
module Lib {
|
||||
header "Lib.h"
|
||||
}
|
||||
|
||||
//--- Lib.h
|
||||
extern void cImplFunc();
|
||||
extern void objcImplFunc();
|
||||
|
||||
//--- Lib.swift
|
||||
@_exported import Lib
|
||||
import Foundation
|
||||
|
||||
/// Don't print the implementation functions.
|
||||
// CHECK-NOT: @implementation
|
||||
// CHECK-NOT: ImplFunc
|
||||
|
||||
@c @implementation
|
||||
public func cImplFunc() { }
|
||||
|
||||
@_cdecl("objcImplFunc") @implementation
|
||||
public func objcImplFunc() { }
|
||||
|
||||
/// Print other @c functions.
|
||||
@c
|
||||
public func bareCDecl() {}
|
||||
// CHECK: @c
|
||||
// CHECK-NEXT: public func bareCDecl
|
||||
|
||||
@c(c_name)
|
||||
public func namedCDecl() {}
|
||||
// CHECK: @c(c_name)
|
||||
// CHECK-NEXT: public func namedCDecl
|
||||
|
||||
@_cdecl("objc_name")
|
||||
public func namedLegacyCDecl() {}
|
||||
// CHECK: @_cdecl("objc_name")
|
||||
// CHECK-NEXT: public func namedLegacyCDecl
|
||||
Reference in New Issue
Block a user