// RUN: %target-typecheck-verify-swift

protocol P : Equatable {
  associatedtype T = String
}

struct S : Hashable {
  var key: String

  init(_ key: String) {
    self.key = key
  }
}

extension S : ExpressibleByStringLiteral {
    public init(stringLiteral value: String) {
        self.init(value)
    }
}

extension S : _ExpressibleByStringInterpolation {
  init(stringInterpolation strings: S...) {
    self.key = "foo"
  }

  init<T>(stringInterpolationSegment expr: T) {
    self.init(String(describing: expr))
  }
}

extension S : P {}

struct ConcP<F: P, S: P> : P where F.T == S.T {
  var lhs: F
  var rhs: S
}

struct Z : P {
}

extension P {
  func bar() -> Z { fatalError() }

  static func +<T : P>(lhs: Self, rhs: T) -> ConcP<Self, T> {
    return ConcP(lhs: lhs, rhs: rhs)
  }
}

class Container<V> {
  var value: V
  init(_ value: V) {
    self.value = value
  }
}

struct A {
  enum Value : CustomStringConvertible {
    case foo, bar

    var description: String {
      switch self {
        case .foo: return "foo"
        case .bar: return "bar"
      }
    }
  }

  var value: Container<Value>

  func foo() {
    let value = self.value.value
    _ = S("A") + S("\(value)").bar() + S("B") // Ok
  }
}
