// REQUIRES: OS=ios
// REQUIRES: objc_interop
// RUN: %target-swift-frontend -emit-ir -g %s -o - | %FileCheck %s

import UIKit
@available(iOS, introduced: 8.0)
class ActionViewController
{
  var imageView: UIImageView!
  func viewDidLoad(_ inputItems: [Any]) {
    for item in inputItems {
      let inputItem = item as! NSExtensionItem
      for provider in inputItem.attachments! {
        let itemProvider = provider as! NSItemProvider
// CHECK: load {{.*}}selector
// CHECK:; <label>{{.*}}  ; preds = %{{[0-9]+}}
// CHECK: @swift_rt_swift_allocObject({{.*}}, !dbg ![[DBG:[0-9]+]]
// Test that the location is reset at the entry of a new basic block.        
// CHECK: ![[DBG]] = {{.*}}line: 0
        if itemProvider.hasItemConformingToTypeIdentifier("") {
          weak var weakImageView = self.imageView
          itemProvider.loadItem(forTypeIdentifier: "", options: nil,
               completionHandler: { (image, error) in
              if let imageView = weakImageView {
              }
            })
        }
      }
    }
  }
}
