protocol P1 { func foo1() var Ins: Int { get set } func foo2(a a: Int, b b: Int) subscript(_ a: Int) -> Int { get set } func fooConstraint() } protocol P2 : P1 { func bar1() func bar2() } extension P2 { func foo1() var Ins: Int func foo2(a a: Int, b b: Int) subscript(_ a: Int) -> Int } extension P2 { func fooConstraint() } protocol P3 { func p3Required() } [ { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 1, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 10, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 20, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 25, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 37, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 41, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 46, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 52, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 56, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 67, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 72, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, key.offset: 77, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, key.offset: 79, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 77, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 79, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 82, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.argument, key.offset: 87, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, key.offset: 89, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 87, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 89, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 92, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 102, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.argument, key.offset: 112, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, key.offset: 114, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 114, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 117, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 125, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 131, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 135, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 146, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 151, key.length: 13 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 170, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 179, key.length: 2 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P1", key.usr: "s:5cake12P1P", key.offset: 184, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 194, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 199, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 211, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 216, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 226, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P2", key.usr: "s:5cake12P2P", key.offset: 236, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 246, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 251, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 263, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 267, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 272, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 281, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 286, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, key.offset: 291, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, key.offset: 293, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 291, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 293, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 296, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.argument, key.offset: 301, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, key.offset: 303, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 301, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 303, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 306, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 316, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.argument, key.offset: 326, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, key.offset: 328, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 328, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 331, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", key.offset: 339, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 346, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P2", key.usr: "s:5cake12P2P", key.offset: 356, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 366, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 371, key.length: 13 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 390, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 399, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 409, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, key.offset: 414, key.length: 10 } ] [ { key.kind: source.lang.swift.decl.protocol, key.name: "P1", key.usr: "s:5cake12P1P", key.offset: 1, key.length: 167, key.fully_annotated_decl: "protocol P1", key.entities: [ { key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo1()", key.usr: "s:5cake12P1P4foo1yyF", key.offset: 20, key.length: 11, key.fully_annotated_decl: "func foo1()" }, { key.kind: source.lang.swift.decl.var.instance, key.name: "Ins", key.usr: "s:5cake12P1P3InsSiv", key.offset: 37, key.length: 24, key.fully_annotated_decl: "var Ins: Int { get set }" }, { key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo2(a:b:)", key.usr: "s:5cake12P1P4foo2ySi1a_Si1btF", key.offset: 67, key.length: 29, key.fully_annotated_decl: "func foo2(a: Int, b: Int)", key.entities: [ { key.kind: source.lang.swift.decl.var.local, key.keyword: "a", key.name: "a", key.offset: 82, key.length: 3 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "b", key.name: "b", key.offset: 92, key.length: 3 } ] }, { key.kind: source.lang.swift.decl.function.subscript, key.name: "subscript(_:)", key.usr: "s:5cake12P1P9subscriptS2ici", key.offset: 102, key.length: 38, key.fully_annotated_decl: "subscript(a: Int) -> Int { get set }", key.entities: [ { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "a", key.offset: 117, key.length: 3 } ] }, { key.kind: source.lang.swift.decl.function.method.instance, key.name: "fooConstraint()", key.usr: "s:5cake12P1P13fooConstraintyyF", key.offset: 146, key.length: 20, key.fully_annotated_decl: "func fooConstraint()" } ] }, { key.kind: source.lang.swift.decl.protocol, key.name: "P2", key.usr: "s:5cake12P2P", key.offset: 170, key.length: 54, key.fully_annotated_decl: "protocol P2 : P1", key.conforms: [ { key.kind: source.lang.swift.ref.protocol, key.name: "P1", key.usr: "s:5cake12P1P" } ], key.entities: [ { key.kind: source.lang.swift.decl.function.method.instance, key.name: "bar1()", key.usr: "s:5cake12P2P4bar1yyF", key.offset: 194, key.length: 11, key.fully_annotated_decl: "func bar1()" }, { key.kind: source.lang.swift.decl.function.method.instance, key.name: "bar2()", key.usr: "s:5cake12P2P4bar2yyF", key.offset: 211, key.length: 11, key.fully_annotated_decl: "func bar2()" } ] }, { key.kind: source.lang.swift.decl.extension.protocol, key.offset: 226, key.length: 118, key.extends: { key.kind: source.lang.swift.ref.protocol, key.name: "P2", key.usr: "s:5cake12P2P" }, key.entities: [ { key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo1()", key.usr: "s:5cake12P2PAAE4foo1yyF", key.default_implementation_of: "s:5cake12P1P4foo1yyF", key.offset: 246, key.length: 11, key.fully_annotated_decl: "func foo1()" }, { key.kind: source.lang.swift.decl.var.instance, key.name: "Ins", key.usr: "s:5cake12P2PAAE3InsSiv", key.default_implementation_of: "s:5cake12P1P3InsSiv", key.offset: 263, key.length: 12, key.fully_annotated_decl: "var Ins: Int { get set }" }, { key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo2(a:b:)", key.usr: "s:5cake12P2PAAE4foo2ySi1a_Si1btF", key.default_implementation_of: "s:5cake12P1P4foo2ySi1a_Si1btF", key.offset: 281, key.length: 29, key.fully_annotated_decl: "func foo2(a: Int, b: Int)", key.entities: [ { key.kind: source.lang.swift.decl.var.local, key.keyword: "a", key.name: "a", key.offset: 296, key.length: 3 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "b", key.name: "b", key.offset: 306, key.length: 3 } ] }, { key.kind: source.lang.swift.decl.function.subscript, key.name: "subscript(_:)", key.usr: "s:5cake12P2PAAE9subscriptS2ici", key.default_implementation_of: "s:5cake12P1P9subscriptS2ici", key.offset: 316, key.length: 26, key.fully_annotated_decl: "subscript(a: Int) -> Int { get set }", key.entities: [ { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "a", key.offset: 331, key.length: 3 } ] } ] }, { key.kind: source.lang.swift.decl.extension.protocol, key.generic_requirements: [ { key.description: "Self : P3" } ], key.offset: 346, key.length: 42, key.extends: { key.kind: source.lang.swift.ref.protocol, key.name: "P2", key.usr: "s:5cake12P2P" }, key.entities: [ { key.kind: source.lang.swift.decl.function.method.instance, key.name: "fooConstraint()", key.usr: "s:5cake12P2PA2aBRzAA2P3RzlE13fooConstraintyyF", key.default_implementation_of: "s:5cake12P1P13fooConstraintyyF", key.offset: 366, key.length: 20, key.fully_annotated_decl: "func fooConstraint()" } ] }, { key.kind: source.lang.swift.decl.protocol, key.name: "P3", key.usr: "s:5cake12P3P", key.offset: 390, key.length: 38, key.fully_annotated_decl: "protocol P3", key.entities: [ { key.kind: source.lang.swift.decl.function.method.instance, key.name: "p3Required()", key.usr: "s:5cake12P3P10p3RequiredyyF", key.offset: 409, key.length: 17, key.fully_annotated_decl: "func p3Required()" } ] } ]