// RUN: %target-parse-verify-swift // Simple subscript of arrays: func simpleSubscript(array: [Float], x: Int) -> Float { var f = array[x] return array[x] } // Subscript of archetype. protocol IntToStringSubscript { subscript (i : Int) -> String { get } } class LameDictionary { subscript (i : Int) -> String { get { return String(i) } } } func archetypeSubscript(t: T, u: U) -> String { // Subscript an archetype. if false { return t[17] } // Subscript an archetype for which the subscript operator is in a base class. return u[17] } // Subscript of existential type. func existentialSubscript(a: IntToStringSubscript) -> String { return a[17] } class MyDictionary { subscript (key : Key) -> Value { get {} } } class MyStringToInt : MyDictionary { } // Subscript of generic type. func genericSubscript(t: T, array: Array, i2i: MyDictionary, t2i: MyDictionary, s2i: MyStringToInt<()>) -> Int { if true { return array[5] } if true { return i2i[5] } if true { return t2i[t] } return s2i["hello"] }