mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Don't print indirect conformances for protocols that are implementation-only imported. Indirect conformances are synthesized when the middle protocol is internal and not printed in the swiftinterface. This logic didn't previously check for implementation-only imports, likely because type-checking usually forbids it. Let's still protect this use case as we are considering relaxing this type-checking restriction in the future. rdar://78718838
20 lines
698 B
Swift
20 lines
698 B
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %{python} %utils/split_file.py -o %t %s
|
|
|
|
// RUN: %target-swift-frontend -emit-module %t/SecretLib.swift -o %t/SecretLib.swiftmodule
|
|
// RUN: %target-swift-frontend -emit-module %t/Client.swift -I %t -emit-module-interface-path %t/Client.swiftinterface -enable-library-evolution -swift-version 5
|
|
|
|
/// The indirect conformance of `s` to `_p` should not be printed. (rdar://78718838)
|
|
// RUN: cat %t/Client.swiftinterface | %FileCheck %s
|
|
// CHECK-NOT: SecretLib
|
|
|
|
// BEGIN SecretLib.swift
|
|
public protocol _p {}
|
|
public struct _s : _p {}
|
|
|
|
// BEGIN Client.swift
|
|
@_implementationOnly import SecretLib
|
|
protocol p : _p {}
|
|
public struct s : p {}
|
|
public func test(s1 : s) {}
|