Tests: Add serialization of witness for conformance to package protocol tests.

Missing from https://github.com/apple/swift/pull/70100/.
This commit is contained in:
Allan Shortlidge
2023-12-18 17:52:46 -08:00
parent d16d9799f2
commit 857c2c3903
2 changed files with 36 additions and 16 deletions

View File

@@ -1,32 +1,52 @@
// This file is also used by witness_tables_serialized_import.swift.
// RUN: %target-swift-emit-silgen %s | %FileCheck -check-prefix CHECK -check-prefix CHECK-NONRESILIENT %s
// RUN: %target-swift-emit-silgen -enable-library-evolution %s | %FileCheck -check-prefix CHECK -check-prefix CHECK-RESILIENT %s
// RUN: %target-swift-emit-silgen %s -package-name Package | %FileCheck -check-prefix CHECK -check-prefix CHECK-NONRESILIENT %s
// RUN: %target-swift-emit-silgen -enable-library-evolution %s -package-name Package | %FileCheck -check-prefix CHECK -check-prefix CHECK-RESILIENT %s
public protocol PublicProtocol {}
@usableFromInline
package protocol PackageProtocol {}
@usableFromInline internal protocol UsableFromInlineProtocol {}
internal protocol InternalProtocol {}
@_fixed_layout
public struct PublicStruct : PublicProtocol, InternalProtocol {}
@frozen
public struct PublicFrozenStruct : PublicProtocol, UsableFromInlineProtocol, PackageProtocol, InternalProtocol {}
public struct PublicResilientStruct : PublicProtocol, InternalProtocol {}
public struct PublicResilientStruct : PublicProtocol, UsableFromInlineProtocol, PackageProtocol, InternalProtocol {}
package struct PackageStruct : PublicProtocol, UsableFromInlineProtocol, PackageProtocol, InternalProtocol {}
@usableFromInline
internal struct InternalStruct : PublicProtocol, InternalProtocol {}
internal struct UsableFromInlineStruct : PublicProtocol, UsableFromInlineProtocol, PackageProtocol, InternalProtocol {}
// CHECK-DAG: sil_witness_table [serialized] PublicStruct: PublicProtocol
// CHECK-DAG: sil_witness_table [serialized] PublicStruct: InternalProtocol
// CHECK-DAG: sil_witness_table [serialized] PublicFrozenStruct: PublicProtocol
// CHECK-DAG: sil_witness_table [serialized] PublicFrozenStruct: UsableFromInlineProtocol
// CHECK-DAG: sil_witness_table PublicFrozenStruct: PackageProtocol
// CHECK-DAG: sil_witness_table hidden PublicFrozenStruct: InternalProtocol
// CHECK-RESILIENT-DAG: sil_witness_table InternalStruct: InternalProtocol
// CHECK-RESILIENT-DAG: sil_witness_table InternalStruct: PublicProtocol
// CHECK-DAG: sil_witness_table [serialized] PackageStruct: PublicProtocol
// CHECK-DAG: sil_witness_table [serialized] PackageStruct: UsableFromInlineProtocol
// CHECK-DAG: sil_witness_table PackageStruct: PackageProtocol
// CHECK-DAG: sil_witness_table hidden PackageStruct: InternalProtocol
// CHECK-RESILIENT-DAG: sil_witness_table UsableFromInlineStruct: UsableFromInlineProtocol
// CHECK-RESILIENT-DAG: sil_witness_table UsableFromInlineStruct: PublicProtocol
// CHECK-RESILIENT-DAG: sil_witness_table UsableFromInlineStruct: PackageProtocol
// CHECK-RESILIENT-DAG: sil_witness_table hidden UsableFromInlineStruct: InternalProtocol
// CHECK-RESILIENT-DAG: sil_witness_table PublicResilientStruct: PublicProtocol
// CHECK-RESILIENT-DAG: sil_witness_table PublicResilientStruct: InternalProtocol
// CHECK-RESILIENT-DAG: sil_witness_table PublicResilientStruct: UsableFromInlineProtocol
// CHECK-RESILIENT-DAG: sil_witness_table PublicResilientStruct: PackageProtocol
// CHECK-RESILIENT-DAG: sil_witness_table hidden PublicResilientStruct: InternalProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] InternalStruct: InternalProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] InternalStruct: PublicProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] UsableFromInlineStruct: UsableFromInlineProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] UsableFromInlineStruct: PublicProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table UsableFromInlineStruct: PackageProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table hidden UsableFromInlineStruct: InternalProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] PublicResilientStruct: PublicProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] PublicResilientStruct: InternalProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] PublicResilientStruct: UsableFromInlineProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table PublicResilientStruct: PackageProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table hidden PublicResilientStruct: InternalProtocol

View File

@@ -1,5 +1,5 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module %S/witness_tables_serialized.swift -o %t -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %S/witness_tables_serialized.swift -o %t -enable-library-evolution -package-name Package
// RUN: %target-swift-emit-silgen -I %t %s | %FileCheck %s
import witness_tables_serialized