// RUN: %empty-directory(%t) // RUN: %target-swift-frontend -emit-module -enable-library-evolution -emit-module-path=%t/resilient_struct.swiftmodule %S/../Inputs/resilient_struct.swift // RUN: %target-swift-emit-silgen -I %t -enable-library-evolution %s | %FileCheck %s import resilient_struct public struct ResilientStruct { public init() {} } // CHECK-LABEL: sil [ossa] @$s18capture_resilience13hasClosureLetAA15ResilientStructVycyF : $@convention(thin) () -> @owned @callee_guaranteed () -> @out ResilientStruct public func hasClosureLet() -> () -> ResilientStruct { let s = ResilientStruct() // CHECK-LABEL: sil private [ossa] @$s18capture_resilience13hasClosureLetAA15ResilientStructVycyFADycfU_ : $@convention(thin) (ResilientStruct) -> @out ResilientStruct return { s } } // CHECK-LABEL: sil [ossa] @$s18capture_resilience13hasClosureVarAA15ResilientStructVycyF : $@convention(thin) () -> @owned @callee_guaranteed () -> @out ResilientStruct public func hasClosureVar() -> () -> ResilientStruct { var s = ResilientStruct() // CHECK-LABEL: sil private [ossa] @$s18capture_resilience13hasClosureVarAA15ResilientStructVycyFADycfU_ : $@convention(thin) (@guaranteed { var ResilientStruct }) -> @out ResilientStruct return { s } } // CHECK-LABEL: sil [serialized] [ossa] @$s18capture_resilience22hasInlinableClosureLetAA15ResilientStructVycyF : $@convention(thin) () -> @owned @callee_guaranteed () -> @out ResilientStruct @inlinable public func hasInlinableClosureLet() -> () -> ResilientStruct { let s = ResilientStruct() // CHECK-LABEL: sil shared [serialized] [ossa] @$s18capture_resilience22hasInlinableClosureLetAA15ResilientStructVycyFADycfU_ : $@convention(thin) (@in_guaranteed ResilientStruct) -> @out ResilientStruct return { s } } // CHECK-LABEL: sil [serialized] [ossa] @$s18capture_resilience22hasInlinableClosureVarAA15ResilientStructVycyF : $@convention(thin) () -> @owned @callee_guaranteed () -> @out ResilientStruct @inlinable public func hasInlinableClosureVar() -> () -> ResilientStruct { var s = ResilientStruct() // CHECK-LABEL: sil shared [serialized] [ossa] @$s18capture_resilience22hasInlinableClosureVarAA15ResilientStructVycyFADycfU_ : $@convention(thin) (@guaranteed { var ResilientStruct }) -> @out ResilientStruct return { s } } public func consume(_: () -> ResilientStruct) {} // CHECK-LABEL: sil [ossa] @$s18capture_resilience21hasNoEscapeClosureLetyyF : $@convention(thin) () -> () public func hasNoEscapeClosureLet() { let s = ResilientStruct() // CHECK-LABEL: sil private [ossa] @$s18capture_resilience21hasNoEscapeClosureLetyyFAA15ResilientStructVyXEfU_ : $@convention(thin) (ResilientStruct) -> @out ResilientStruct consume { s } } // CHECK-LABEL: sil [ossa] @$s18capture_resilience21hasNoEscapeClosureVaryyF : $@convention(thin) () -> () public func hasNoEscapeClosureVar() { var s = ResilientStruct() // CHECK-LABEL: sil private [ossa] @$s18capture_resilience21hasNoEscapeClosureVaryyFAA15ResilientStructVyXEfU_ : $@convention(thin) (@inout_aliasable ResilientStruct) -> @out ResilientStruct consume { s } } // CHECK-LABEL: sil [serialized] [ossa] @$s18capture_resilience30hasInlinableNoEscapeClosureLetyyF : $@convention(thin) () -> () @inlinable public func hasInlinableNoEscapeClosureLet() { let s = ResilientStruct() // CHECK-LABEL: sil shared [serialized] [ossa] @$s18capture_resilience30hasInlinableNoEscapeClosureLetyyFAA15ResilientStructVyXEfU_ : $@convention(thin) (@in_guaranteed ResilientStruct) -> @out ResilientStruct consume { s } } // CHECK-LABEL: sil [serialized] [ossa] @$s18capture_resilience30hasInlinableNoEscapeClosureVaryyF : $@convention(thin) () -> () @inlinable public func hasInlinableNoEscapeClosureVar() { var s = ResilientStruct() // CHECK-LABEL: sil shared [serialized] [ossa] @$s18capture_resilience30hasInlinableNoEscapeClosureVaryyFAA15ResilientStructVyXEfU_ : $@convention(thin) (@inout_aliasable ResilientStruct) -> @out ResilientStruct consume { s } }