// RUN: %target-run-simple-swift | %FileCheck %s // REQUIRES: executable_test // Check that subscripts and functions named subscript can exist side-by-side struct Foo { subscript() -> String { return "subscript" } func `subscript`() -> String { return "func" } } let f = Foo() print(f[]) // CHECK: subscript print(f.subscript()) // CHECK: func // SR-7418 protocol P { subscript(_: T) -> Int { get set } } struct Q : P { subscript(_ idx: T) -> Int { get { return 0 } set { idx.foo() } } } protocol Y : X {} protocol X { func foo() } struct Idx : Y { func foo() { print("I survived") } } func foo(_ t: inout T) { t[Idx()] += 1 } var q = Q() foo(&q) // CHECK: I survived