// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-sil -O %s | %FileCheck %s

sil_stage raw

import Builtin

typealias Int = Builtin.Int32

// rdar://problem/28945854: When a nongeneric closure was formed inside a
// generic function, the capture promotion pass would erroneously try to
// apply the generic caller's substitutions to the nongeneric callee, violating
// invariants.

// CHECK-LABEL: sil @_TTSf2i__promotable_box : $@convention(thin) (Builtin.Int32) -> Builtin.Int32

sil @promotable_box : $@convention(thin) (<τ_0_0> { var τ_0_0 } <Int>) -> Int {
entry(%b : $<τ_0_0> { var τ_0_0 } <Int>):
  %a = project_box %b : $<τ_0_0> { var τ_0_0 } <Int>, 0
  %v = load %a : $*Int
  return %v : $Int
}

// CHECK-LABEL: sil @call_promotable_box_from_generic
// CHECK:         [[F:%.*]] = function_ref @_TTSf2i__promotable_box
// CHECK:         partial_apply [[F]](

sil @call_promotable_box_from_generic : $@convention(thin) <T> (@in T, Int) -> @owned @callee_owned () -> Int {
entry(%0 : $*T, %1 : $Int):
  destroy_addr %0 : $*T
  %f = function_ref @promotable_box : $@convention(thin) (<τ_0_0> { var τ_0_0 } <Int>) -> Int
  %b = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
  %a = project_box %b : $<τ_0_0> { var τ_0_0 } <Int>, 0
  store %1 to %a : $*Int
  %k = partial_apply %f(%b) : $@convention(thin) (<τ_0_0> { var τ_0_0 } <Int>) -> Int
  return %k : $@callee_owned () -> Int
}

protocol P {}

// CHECK-LABEL: sil @_TTSf2n_i__generic_promotable_box : $@convention(thin) <T> (@in T, Builtin.Int32) -> Builtin.Int32
// CHECK:       bb0(%0 : $*T, %1 : $Builtin.Int32):
// CHECK-NEXT:    return %1 : $Builtin.Int32

sil @generic_promotable_box : $@convention(thin) <T> (@in T, <τ_0_0> { var τ_0_0 } <Int>) -> Int {
entry(%0 : $*T, %b : $<τ_0_0> { var τ_0_0 } <Int>):
  %a = project_box %b : $<τ_0_0> { var τ_0_0 } <Int>, 0
  %v = load %a : $*Int
  return %v : $Int
}

// CHECK-LABEL: sil @call_generic_promotable_box_from_different_generic
// CHECK:       bb0(%0 : $*T, %1 : $*U, %2 : $Builtin.Int32):
// CHECK-NEXT:    destroy_addr %0 : $*T
// CHECK-NEXT:    destroy_addr %1 : $*U
// CHECK:         [[F:%.*]] = function_ref @_TTSf2n_i__generic_promotable_box : $@convention(thin) <τ_0_0> (@in τ_0_0, Builtin.Int32) -> Builtin.Int32
// CHECK-NEXT:    [[CLOSURE:%.*]] = partial_apply [[F]]<U>(%2)
// CHECK-NEXT:    return [[CLOSURE]]

sil @call_generic_promotable_box_from_different_generic : $@convention(thin) <T, U: P> (@in T, @in U, Int) -> @owned @callee_owned (@in U) -> Int {
entry(%0 : $*T, %1 : $*U, %2 : $Int):
  destroy_addr %0 : $*T
  destroy_addr %1 : $*U
  %f = function_ref @generic_promotable_box : $@convention(thin) <V> (@in V, <τ_0_0> { var τ_0_0 } <Int>) -> Int
  %b = alloc_box $<τ_0_0> { var τ_0_0 } <Int>
  %a = project_box %b : $<τ_0_0> { var τ_0_0 } <Int>, 0
  store %2 to %a : $*Int
  %k = partial_apply %f<U>(%b) : $@convention(thin) <V> (@in V, <τ_0_0> { var τ_0_0 } <Int>) -> Int
  return %k : $@callee_owned (@in U) -> Int
}
