// RUN: %empty-directory(%t)
// RUN: %target-build-swift %s -o %t/a.out
// RUN: %target-run %t/a.out
// REQUIRES: executable_test
protocol P {
  func foo() -> Int
}

struct X : P {
  func foo() -> Int { return 1 }
}

struct Y<T> {
  var wrapped: T
}

extension Y: P where T: P {
  func foo() -> Int { return wrapped.foo() + 10 }
}

func tryAsP(_ value: Any) -> Int {
  if let p = value as? P {
    return p.foo()
  }

  return 0
}

extension Dictionary: P where Value == (Key) -> Bool {
  func foo() -> Int { return 2 }
}


let yx = Y(wrapped: X())
assert(tryAsP(yx) == 11)

let dict: [Int : (Int) -> Bool] = [:]
assert(tryAsP(dict) == 2)

let yDict = Y(wrapped: dict)
assert(tryAsP(yDict) == 12)

