// REQUIRES: objc_interop
// RUN: %empty-directory(%t.mod)
// RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -I %t.mod -primary-file %s -api-diff-data-file %S/Inputs/API-function-hoist.json -emit-migrated-file-path %t/function-hoist.swift.result -emit-remap-file-path %t/function-hoist.swift.remap -o /dev/null
// RUN: diff -u %S/function-hoist.swift.expected %t/function-hoist.swift.result

import Cities

func getCities() -> [Cities] { return [] }

func foo(_ c : Cities) {
  c.setProperty(Prop: 1)
  getCities()[0].setProperty(Prop: 1)
  Cities.memberFunc()
  c.setProperty2(with: 1+1+1, using: 2+2)
  getCities()[0].setProperty2(with: 1+1+1, using: 2+2)
  c.Property2
  getCities()[0].Property2
  _ = c.memberFunc3() + 2
  _ = c.memberFunc4(remaining: 2) + 2
  _ = Cities.Nested.property5 + 2 + 1
  var vc = Cities(x : 1)
  _ = vc.takePointer(Pointer1: 2, Pointer2: 2)
  _ = getCities().takePointer(Pointer1: 2, Pointer2: 2)
}

func foo1(_ flag: Bool, _ c1: Cities, _ c2: Cities) {
  _ = (flag ? c1 : c2).memberFunc4(remaining: 2 + 2)
}
