// RUN: %target-swift-frontend \
// RUN: -enable-experimental-feature LifetimeDependence \
// RUN: -verify -typecheck %s -debug-generic-signatures \
// RUN: -debug-inverse-requirements 2>&1 | %FileCheck %s --implicit-check-not "error:"
// REQUIRES: swift_feature_LifetimeDependence
// CHECK-LABEL: .Outer@
// CHECK: Generic signature:
// CHECK-LABEL: .Outer.innerFn@
// CHECK: Generic signature:
// CHECK-LABEL: .Outer.InnerStruct@
// CHECK: Generic signature:
// CHECK-LABEL: .Outer.InnerStruct.g@
// CHECK: Generic signature:
// CHECK-LABEL: .Outer.InnerStruct.init()@
// CHECK: Generic signature:
// CHECK: (builtin_conformance type="Outer.InnerStruct" protocol="Escapable"{{.*}})
// CHECK-LABEL: .Outer.InnerVariation1@
// CHECK: Generic signature:
// CHECK-LABEL: .Outer.InnerVariation2@
// CHECK: Generic signature:
// CHECK-LABEL: ExtensionDecl {{.*}} base=Outer.InnerStruct
// CHECK: Generic signature:
// CHECK-LABEL: .InnerStruct extension.hello@
// CHECK: Generic signature:
// CHECK-LABEL: .Freestanding@
// CHECK: Generic signature:
// CHECK-LABEL: ExtensionDecl {{.*}} base=Outer
// CHECK: Generic signature:
// CHECK-LABEL: ExtensionDecl {{.*}} base=Outer.InnerVariation1
// CHECK: Generic signature:
// CHECK-LABEL: ExtensionDecl {{.*}} base=Outer.InnerVariation2
// CHECK: Generic signature:
public struct Outer {
public func innerFn(_ b: borrowing B) {}
public struct InnerStruct {
public func g(_ d: borrowing D) where D: ~Copyable {}
}
public struct InnerVariation1: ~Escapable {}
public struct InnerVariation2: ~Copyable {}
}
extension Outer.InnerStruct {
public func hello(_ t: T) {}
}
public struct Freestanding where T: ~Escapable {}
extension Outer {}
extension Outer.InnerVariation1 where A: ~Copyable {}
extension Outer.InnerVariation2 where D: ~Escapable, A: ~Copyable {}