// RUN: %batch-code-completion // NOSELF-NOT: name=Self // GENERICPARAM: Decl[GenericTypeParam]/Local: Self[#Self#]; // STATICSELF: Keyword[Self]/CurrNominal{{(/TypeRelation\[Convertible\])?}}: Self[#S#]; // DYNAMICSELF: Keyword[Self]/CurrNominal{{(/TypeRelation\[Convertible\])?}}: Self[#Self#]; func freeFunc1() { #^GLOBAL_BODY_EXPR?check=NOSELF^# let _: #^GLOBAL_BODY_TYPE?check=NOSELF^# } var freeVar: String { "\(#^GLOBAL_VARBODY_EXPR?check=NOSELF^#)" } func freeFunc2(x: #^GLOBAL_FUNC_PARAMTYPE?check=NOSELF^#) {} func freeFunc3(x: Int = #^GLOBAL_FUNC_DEFAULTEXPR?check=NOSELF^#) {} func freeFunc4(x: Int) -> #^GLOBAL_FUNC_RESULTTYPE?check=NOSELF^# {} var x: ^#GLOBAL_VAR_TYPE^# func sync() {} protocol P { func protoMeth(x: #^PROTOCOL_FUNC_PARAMTYPE?check=GENERICPARAM^#) func protoMeth(x: Int) -> #^PROTOCOL_FUNC_RESULTTYPE?check=GENERICPARAM^# subscript(x: #^PROTOCOL_SUBSCRIPT_PARAMTYPE?check=GENERICPARAM^#) -> Int { get } subscript(y: Int) -> #^PROTOCOL_SUBSCRIPT_RESULTTYPE?check=GENERICPARAM^# { get } var x: #^PROTOCOL_VAR_TYPE?check=GENERICPARAM^# } extension P { func method(x: #^PROTOEXT_FUNC_PARAMTYPE?check=GENERICPARAM^#) { } func method(x: Int = #^PROTOEXT_FUNC_DEFAULTEXPR?check=GENERICPARAM^#) { } func method(x: Int) -> #^PROTOEXT_FUNC_RESULTTYPE?check=GENERICPARAM^# { } subscript(x: #^PROTOEXT_SUBSCRIPT_PARAMTYPE?check=GENERICPARAM^#) -> Int { } subscript(y: Int) -> #^PROTOEXT_SUBSCRIPT_RESULTTYPE?check=GENERICPARAM^# { } var x: #^PROTOEXT_VAR_TYPE?check=GENERICPARAM^# { } func bodyTest() { #^PROTOEXT_BODY_EXPR?check=GENERICPARAM^# let _: #^PROTOEXT_BODY_TYPE?check=GENERICPARAM^# } var varTest: String { "\(#^PROTOEXT_VARBODY_EXPR?check=GENERICPARAM^#)" } } struct S { func method1(x: #^STRUCT_FUNC_PARAMTYPE?check=STATICSELF^#) func method1(x: Int = #^STRUCT_FUNC_DEFAULTEXPR?check=STATICSELF^#) { } func method1(x: Int) -> #^STRUCT_FUNC_RESULTTYPE?check=STATICSELF^# subscript(x1: #^STRUCT_SUBSCRIPT_PARAMTYPE?check=STATICSELF^#) -> Int { get } subscript(y1: Int) -> #^STRUCT_SUBSCRIPT_RESULTTYPE?check=STATICSELF^# { get } var x1: #^STRUCT_VAR_TYPE?check=STATICSELF^# func bodyTest1() { #^STRUCT_BODY_EXPR?check=STATICSELF^# let _: #^STRUCT_BODY_TYPE?check=STATICSELF^# } var varTest1: String { "\(#^STRUCT_VARBODY_EXPR?check=STATICSELF^#)" } } extension S { func method2(x: #^STRUCTEXT_FUNC_PARAMTYPE?check=STATICSELF^#) func method2(x: Int = #^STRUCTEXT_FUNC_DEFAULTEXPR?check=STATICSELF^#) { } func method2(x: Int) -> #^STRUCTEXT_FUNC_RESULTTYPE?check=STATICSELF^# subscript(x2: #^STRUCTEXT_SUBSCRIPT_PARAMTYPE?check=STATICSELF^#) -> Int { get } subscript(y2: Int) -> #^STRUCTEXT_SUBSCRIPT_RESULTTYPE?check=STATICSELF^# { get } var x2: #^STRUCTEXT_VAR_TYPE?check=STATICSELF^# func bodyTest2() { #^STRUCTEXT_BODY_EXPR?check=STATICSELF^# let _: #^STRUCTEXT_BODY_TYPE?check=STATICSELF^# } var varTest2: String { "\(#^STRUCTEXT_VARBODY_EXPR?check=STATICSELF^#)" } } class C { func method(x: #^CLASS_FUNC_PARAMTYPE?check=NOSELF^#) func method(x: Int = #^CLASS_FUNC_DEFAULTEXPR?check=NOSELF^#) { } func method(x: Int) -> #^CLASS_FUNC_RESULTTYPE?check=DYNAMICSELF^# subscript(x: #^CLASS_SUBSCRIPT_PARAMTYPE?check=NOSELF^#) -> Int { get } subscript(y: Int) -> #^CLASS_SUBSCRIPT_RESULTTYPE?check=DYNAMICSELF^# { get } var x: #^CLASS_VAR_TYPE?check=DYNAMICSELF^# func bodyTest() { #^CLASS_BODY_EXPR?check=DYNAMICSELF^# let _: #^CLASS_BODY_TYPE?check=DYNAMICSELF^# } var varTest: String { "\(#^CLASS_VARBODY_EXPR?check=DYNAMICSELF^#)" } } class CC {} extension CC { func method(x: #^CLASSEXT_FUNC_PARAMTYPE?check=NOSELF^#) func method(x: Int = #^CLASSEXT_FUNC_DEFAULTEXPR?check=NOSELF^#) { } func method(x: Int) -> #^CLASSEXT_FUNC_RESULTTYPE?check=DYNAMICSELF^# subscript(x: #^CLASSEXT_SUBSCRIPT_PARAMTYPE?check=NOSELF^#) -> Int { get } subscript(y: Int) -> #^CLASSEXT_SUBSCRIPT_RESULTTYPE?check=DYNAMICSELF^# { get } var x: #^CLASSEXT_VAR_TYPE?check=DYNAMICSELF^# func bodyTest() { #^CLASSEXT_BODY_EXPR?check=DYNAMICSELF^# let _: #^CLASSEXT_BODY_TYPE?check=DYNAMICSELF^# } var varTest: String { "\(#^CLASSEXT_VARBODY_EXPR?check=DYNAMICSELF^#)" } } class CCC { func bodyTest() { func inner() { #^CLASS_NESTEDBODY_EXPR?check=DYNAMICSELF^# let _: #^CLASS_NESTEDBODY_TYPE?check=DYNAMICSELF^# } func inner(x: #^CLASS_NESTEDFUNC_PARAMTYPE?check=DYNAMICSELF^#) {} func inner(y: Int = #^CLASS_NESTEDFUNC_DEFAULTEXPR?check=DYNAMICSELF^#) {} func inner() -> #^CLASS_NESTEDFUNC_RESULTTYPE?check=DYNAMICSELF^# {} typealias A = #^CLASS_TYPEALIAS_TYPE?check=DYNAMICSELF^# } class Inner { func method() { #^CLASS_NESTEDTYPE_EXPR?check=DYNAMICSELF^# let _: #^CLASS_NESTEDTYPE_TYPE?check=DYNAMICSELF^# } } }