// 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-resilience %s | %FileCheck -check-prefix CHECK -check-prefix CHECK-RESILIENT %s

public protocol PublicProtocol {}

@usableFromInline
internal protocol InternalProtocol {}

@_fixed_layout
public struct PublicStruct : PublicProtocol, InternalProtocol {}

public struct PublicResilientStruct : PublicProtocol, InternalProtocol {}

@usableFromInline
internal struct InternalStruct : PublicProtocol, InternalProtocol {}

// CHECK-DAG: sil_witness_table [serialized] PublicStruct: PublicProtocol
// CHECK-DAG: sil_witness_table [serialized] PublicStruct: InternalProtocol

// CHECK-RESILIENT-DAG: sil_witness_table InternalStruct: InternalProtocol
// CHECK-RESILIENT-DAG: sil_witness_table InternalStruct: PublicProtocol

// CHECK-RESILIENT-DAG: sil_witness_table PublicResilientStruct: PublicProtocol
// CHECK-RESILIENT-DAG: sil_witness_table 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] PublicResilientStruct: PublicProtocol
// CHECK-NONRESILIENT-DAG: sil_witness_table [serialized] PublicResilientStruct: InternalProtocol
