// RUN: %empty-directory(%t)
// RUN: not --crash %target-sil-opt -enable-sil-verify-all -enforce-exclusivity=unchecked -diagnose-static-exclusivity %s 2> %t/err.txt
// RUN: %FileCheck %s < %t/err.txt

// REQUIRES: asserts

// The test in this file is meant to fail during verification which currently
// only runs in the diagnose-static-exclusivity pass, but will eventually run in
// SIL verification.

import Builtin
import Swift

// CHECK: Argument must be @noescape function type: %{{.*}} = partial_apply
// CHECK: A partial_apply with @inout_aliasable may only be used as a @noescape function type argument.

sil @takesEscapingClosure : $@convention(thin) (@owned @callee_owned () -> ()) -> ()

sil hidden @closureWithArgument : $@convention(thin) (@inout_aliasable Int) -> () {
bb0(%1 : $*Int):
  %3 = tuple ()
  return %3 : $()
}

sil @missingNoescape : $@convention(thin) (Int) ->() {
bb0(%0 : $Int):
  %2 = alloc_box ${ var Int }
  %3 = project_box %2 : ${ var Int }, 0
  store %0 to [trivial] %3 : $*Int
  %4 = function_ref @takesEscapingClosure : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
  %5 = function_ref @closureWithArgument : $@convention(thin) (@inout_aliasable Int) -> ()
  %6 = partial_apply %5(%3) : $@convention(thin) (@inout_aliasable Int) -> ()
  %8 = apply %4(%6) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
  %9 = tuple ()
  return %9 : $()
}
