Merge pull request #8828 from akyrtzi/index-accessors-handling

This commit is contained in:
swift-ci
2017-04-17 23:18:31 -07:00
committed by GitHub
10 changed files with 250 additions and 67 deletions

View File

@@ -722,6 +722,17 @@ bool IndexSwiftASTWalker::reportPseudoAccessor(AbstractStorageDecl *D,
if (getPseudoAccessorNameAndUSR(D, AccKind, Info.name, Info.USR))
return true;
Info.symInfo.Kind = SymbolKind::Function;
if (D->getDeclContext()->isTypeContext()) {
if (D->isStatic()) {
if (isa<VarDecl>(D) &&
cast<VarDecl>(D)->getCorrectStaticSpelling() == StaticSpellingKind::KeywordClass)
Info.symInfo.Kind = SymbolKind::ClassMethod;
else
Info.symInfo.Kind = SymbolKind::StaticMethod;
} else {
Info.symInfo.Kind = SymbolKind::InstanceMethod;
}
}
Info.symInfo.SubKind = getSubKindForAccessor(AccKind);
Info.roles |= (SymbolRoleSet)SymbolRole::Implicit;
Info.group = "";
@@ -752,7 +763,8 @@ bool IndexSwiftASTWalker::reportPseudoAccessor(AbstractStorageDecl *D,
return true; // continue walking.
if (updateInfo(Info))
return true;
if (addRelation(Info, (SymbolRoleSet) SymbolRole::RelationAccessorOf, D))
if (addRelation(Info, (SymbolRoleSet)SymbolRole::RelationAccessorOf |
(SymbolRoleSet)SymbolRole::RelationChildOf , D))
return true;
if (!IdxConsumer.startSourceEntity(Info) || !IdxConsumer.finishSourceEntity(Info.symInfo, Info.roles))
@@ -806,7 +818,11 @@ bool IndexSwiftASTWalker::report(ValueDecl *D) {
if (startEntityDecl(D)) {
// Pass accessors.
if (auto VarD = dyn_cast<VarDecl>(D)) {
if (!VarD->getGetter() && !VarD->getSetter()) {
auto isNullOrImplicit = [](const Decl *D) -> bool {
return !D || D->isImplicit();
};
if (isNullOrImplicit(VarD->getGetter()) &&
isNullOrImplicit(VarD->getSetter())) {
// No actual getter or setter, pass 'pseudo' accessors.
// We create accessor entities so we can implement the functionality
// of libclang, which reports implicit method property accessor
@@ -827,24 +843,24 @@ bool IndexSwiftASTWalker::report(ValueDecl *D) {
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
if (VarD->hasObservers()) {
if (auto FD = VarD->getWillSetFunc())
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
if (auto FD = VarD->getDidSetFunc())
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
}
if (VarD->hasAddressors()) {
if (auto FD = VarD->getAddressor())
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
if (auto FD = VarD->getMutableAddressor())
SourceEntityWalker::walk(cast<Decl>(FD));
}
}
if (VarD->hasObservers()) {
if (auto FD = VarD->getWillSetFunc())
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
if (auto FD = VarD->getDidSetFunc())
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
}
if (VarD->hasAddressors()) {
if (auto FD = VarD->getAddressor())
SourceEntityWalker::walk(cast<Decl>(FD));
if (Cancelled)
return false;
if (auto FD = VarD->getMutableAddressor())
SourceEntityWalker::walk(cast<Decl>(FD));
}
} else if (auto NTD = dyn_cast<NominalTypeDecl>(D)) {
if (!reportInheritedTypeRefs(NTD->getInherited(), NTD))
@@ -1038,18 +1054,10 @@ bool IndexSwiftASTWalker::initFuncRefIndexSymbol(ValueDecl *D, SourceLoc Loc,
Expr *ParentE = getParentExpr();
// FIXME: the below check maintains existing indexing behavior with
// pseudo/accessor output but seems incorrect. E.g otherGlobal in:
// let global = otherGlobal
// will not have a parent expression so no accessor call is reported
if (isa<AbstractStorageDecl>(D) && !ParentE)
return true;
if (!isa<AbstractStorageDecl>(D) &&
!isBeingCalled(CurrentE, ParentE, getContainingExpr(2)))
return false;
Info.roles |= (unsigned)SymbolRole::Call;
if (auto *Caller = dyn_cast_or_null<AbstractFunctionDecl>(getParentDecl())) {
if (addRelation(Info, (SymbolRoleSet) SymbolRole::RelationCalledBy, Caller))

View File

@@ -8,10 +8,10 @@
public var someGlobal: Int = 0
// CHECK: [[@LINE-1]]:12 | variable/Swift | someGlobal | [[SOMEGLOBAL_USR:.*]] | Def | rel: 0
// CHECK: [[@LINE-2]]:12 | function/acc-get/Swift | getter:someGlobal | [[SOMEGLOBAL_GET_USR:.*]] | Def,Impl,RelAcc | rel: 1
// CHECK-NEXT: RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: [[@LINE-4]]:12 | function/acc-set/Swift | setter:someGlobal | [[SOMEGLOBAL_SET_USR:.*]] | Def,Impl,RelAcc | rel: 1
// CHECK-NEXT: RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: [[@LINE-2]]:12 | function/acc-get/Swift | getter:someGlobal | [[SOMEGLOBAL_GET_USR:.*]] | Def,Impl,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: [[@LINE-4]]:12 | function/acc-set/Swift | setter:someGlobal | [[SOMEGLOBAL_SET_USR:.*]] | Def,Impl,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
public func someFunc() {}
// CHECK: [[@LINE-1]]:13 | function/Swift | someFunc() | [[SOMEFUNC_USR:.*]] | Def | rel: 0
@@ -19,9 +19,9 @@ public func someFunc() {}
// --- Check the module ---
// CHECK: 0:0 | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]] | Def | rel: 0
// CHECK: 0:0 | function/acc-get/Swift | getter:someGlobal | [[SOMEGLOBAL_GET_USR:.*]] | Def,Impl,RelAcc | rel: 1
// CHECK-NEXT: RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: 0:0 | function/acc-set/Swift | setter:someGlobal | [[SOMEGLOBAL_SET_USR:.*]] | Def,Impl,RelAcc | rel: 1
// CHECK-NEXT: RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: 0:0 | function/acc-get/Swift | getter:someGlobal | [[SOMEGLOBAL_GET_USR:.*]] | Def,Impl,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: 0:0 | function/acc-set/Swift | setter:someGlobal | [[SOMEGLOBAL_SET_USR:.*]] | Def,Impl,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | variable/Swift | someGlobal | [[SOMEGLOBAL_USR]]
// CHECK: 0:0 | function/Swift | someFunc() | [[SOMEFUNC_USR]] | Def | rel: 0

View File

@@ -104,10 +104,10 @@ struct AStruct {
x += 1
// CHECK: [[@LINE-1]]:5 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Ref,Read,Writ,RelCont | rel: 1
// CHECK-NEXT: RelCont | instance-method/Swift | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF
// CHECK: [[@LINE-3]]:5 | function/acc-get/Swift | getter:x | s:14swift_ide_test7AStructV1xSifg | Ref,Call,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK: [[@LINE-3]]:5 | instance-method/acc-get/Swift | getter:x | s:14swift_ide_test7AStructV1xSifg | Ref,Call,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF
// CHECK-NEXT: RelRec | struct/Swift | AStruct | s:14swift_ide_test7AStructV
// CHECK: [[@LINE-6]]:5 | function/acc-set/Swift | setter:x | s:14swift_ide_test7AStructV1xSifs | Ref,Call,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK: [[@LINE-6]]:5 | instance-method/acc-set/Swift | setter:x | s:14swift_ide_test7AStructV1xSifs | Ref,Call,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF
// CHECK-NEXT: RelRec | struct/Swift | AStruct | s:14swift_ide_test7AStructV
// CHECK: [[@LINE-9]]:7 | static-method/infix-operator/Swift | +=(_:_:) | s:Si2peoiySiz_SitFZ | Ref,RelCont | rel: 1
@@ -134,30 +134,77 @@ struct AStruct {
}
}
class AClass { // used for references only
var y: AStruct;
class AClass {
// CHECK: [[@LINE-1]]:7 | class/Swift | AClass | [[AClass_USR:.*]] | Def | rel: 0
var y: AStruct
// CHECK: [[@LINE-1]]:7 | instance-property/Swift | y | [[AClass_y_USR:.*]] | Def,RelChild | rel: 1
// CHECK: [[@LINE-2]]:7 | instance-method/acc-get/Swift | getter:y | [[AClass_y_get_USR:.*]] | Def,Impl,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | instance-property/Swift | y | [[AClass_y_USR]]
// CHECK: [[@LINE-4]]:7 | instance-method/acc-set/Swift | setter:y | [[AClass_y_set_USR:.*]] | Def,Impl,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | instance-property/Swift | y | [[AClass_y_USR]]
var z: [Int]
var computed_p: Int { return 0 }
// CHECK: [[@LINE-1]]:7 | instance-property/Swift | computed_p | [[AClass_computed_p_USR:.*]] | Def,RelChild | rel: 1
// CHECK: [[@LINE-2]]:23 | instance-method/acc-get/Swift | getter:computed_p | [[AClass_computed_p_get_USR:.*]] | Def,RelChild,RelAcc | rel: 1
// CHECK-NEXT: RelChild,RelAcc | instance-property/Swift | computed_p | [[AClass_computed_p_USR]]
// CHECK-NOT: acc-set/Swift | setter:computed_p |
init(x: Int) {
y = AStruct(x: x)
self.z = [1, 2, 3]
}
subscript(index: Int) -> Int {
// CHECK: [[@LINE-1]]:3 | instance-property/subscript/Swift | subscript(_:) | [[AClass_subscript_USR:.*]] | Def,RelChild | rel: 1
get { return z[0] }
// CHECK: [[@LINE-1]]:5 | instance-method/acc-get/Swift | getter:subscript(_:) | [[AClass_subscript_get_USR:.*]] | Def,RelChild,RelAcc | rel: 1
set { z[0] = newValue }
// CHECK: [[@LINE-1]]:5 | instance-method/acc-set/Swift | setter:subscript(_:) | [[AClass_subscript_set_USR:.*]] | Def,RelChild,RelAcc | rel: 1
}
func foo() -> Int { return z[0] }
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo() | [[AClass_foo_USR:.*]] | Def,RelChild | rel: 1
}
let _ = AClass.foo
// CHECK: [[@LINE-1]]:16 | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF | Ref | rel: 0
// CHECK: [[@LINE-1]]:16 | instance-method/Swift | foo() | [[AClass_foo_USR]] | Ref | rel: 0
let _ = AClass(x: 1).foo
// CHECK: [[@LINE-1]]:22 | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF | Ref | rel: 0
// CHECK: [[@LINE-1]]:22 | instance-method/Swift | foo() | [[AClass_foo_USR]] | Ref | rel: 0
let _ = AClass(x: 1)[1]
// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test6AClassC9subscriptS2ici | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:21 | function/acc-get/Swift | getter:subscript(_:) | s:14swift_ide_test6AClassC9subscriptS2icfg | Ref,Call,Dyn,Impl,RelRec | rel: 1
// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | [[AClass_subscript_USR]] | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:21 | instance-method/acc-get/Swift | getter:subscript(_:) | [[AClass_subscript_get_USR]] | Ref,Call,Dyn,Impl,RelRec | rel: 1
let _ = AClass(x: 1)[1] = 2
// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test6AClassC9subscriptS2ici | Ref,Writ | rel: 0
// CHECK: [[@LINE-2]]:21 | function/acc-set/Swift | setter:subscript(_:) | s:14swift_ide_test6AClassC9subscriptS2icfs | Ref,Call,Dyn,Impl,RelRec | rel: 1
// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | [[AClass_subscript_USR]] | Ref,Writ | rel: 0
// CHECK: [[@LINE-2]]:21 | instance-method/acc-set/Swift | setter:subscript(_:) | [[AClass_subscript_set_USR]] | Ref,Call,Dyn,Impl,RelRec | rel: 1
extension AClass {
func test_property_refs1() -> AStruct {
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | test_property_refs1() | [[test_property_refs1_USR:.*]] | Def,RelChild | rel: 1
_ = y
// CHECK: [[@LINE-1]]:9 | instance-property/Swift | y | [[AClass_y_USR]] | Ref,Read,RelCont | rel: 1
// CHECK: [[@LINE-2]]:9 | instance-method/acc-get/Swift | getter:y | [[AClass_y_get_USR]] | Ref,Call,Dyn,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | test_property_refs1() | [[test_property_refs1_USR]]
// CHECK-NEXT: RelRec | class/Swift | AClass | [[AClass_USR]]
return y
// CHECK: [[@LINE-1]]:12 | instance-property/Swift | y | [[AClass_y_USR]] | Ref,Read,RelCont | rel: 1
// CHECK: [[@LINE-2]]:12 | instance-method/acc-get/Swift | getter:y | [[AClass_y_get_USR]] | Ref,Call,Dyn,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | test_property_refs1() | [[test_property_refs1_USR]]
// CHECK-NEXT: RelRec | class/Swift | AClass | [[AClass_USR]]
}
func test_property_refs2() -> Int {
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | test_property_refs2() | [[test_property_refs2_USR:.*]] | Def,RelChild | rel: 1
_ = computed_p
// CHECK: [[@LINE-1]]:9 | instance-property/Swift | computed_p | [[AClass_computed_p_USR]] | Ref,Read,RelCont | rel: 1
// CHECK: [[@LINE-2]]:9 | instance-method/acc-get/Swift | getter:computed_p | [[AClass_computed_p_get_USR]] | Ref,Call,Dyn,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | test_property_refs2() | [[test_property_refs2_USR]]
// CHECK-NEXT: RelRec | class/Swift | AClass | [[AClass_USR]]
return computed_p
// CHECK: [[@LINE-1]]:12 | instance-property/Swift | computed_p | [[AClass_computed_p_USR]] | Ref,Read,RelCont | rel: 1
// CHECK: [[@LINE-2]]:12 | instance-method/acc-get/Swift | getter:computed_p | [[AClass_computed_p_get_USR]] | Ref,Call,Dyn,Impl,RelRec,RelCall,RelCont | rel: 2
// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | test_property_refs2() | [[test_property_refs2_USR]]
// CHECK-NEXT: RelRec | class/Swift | AClass | [[AClass_USR]]
}
}
// RelationBaseOf, RelationOverrideOf
@@ -208,7 +255,7 @@ class ASubClass : AClass, AProtocol {
override func foo() -> Int {
// CHECK: [[@LINE-1]]:17 | instance-method/Swift | foo() | s:14swift_ide_test9ASubClassC3fooSiyF | Def,RelChild,RelOver | rel: 3
// CHECK-NEXT: RelOver | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF
// CHECK-NEXT: RelOver | instance-method/Swift | foo() | [[AClass_foo_USR]]
// CHECK-NEXT: RelOver | instance-method/Swift | foo() | s:14swift_ide_test9AProtocolP3fooSiyF
// CHECK-NEXT: RelChild | class/Swift | ASubClass | s:14swift_ide_test9ASubClassC
return 1
@@ -250,15 +297,15 @@ var anInstance = AClass(x: 1)
anInstance.y.x = anInstance.y.x
// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:14swift_ide_test6AClassC1yAA7AStructVv | Ref,Read,Writ | rel: 0
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | [[AClass_y_USR]] | Ref,Read,Writ | rel: 0
// CHECK: [[@LINE-3]]:14 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Ref,Writ | rel: 0
// CHECK: [[@LINE-4]]:18 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
// CHECK: [[@LINE-5]]:29 | instance-property/Swift | y | s:14swift_ide_test6AClassC1yAA7AStructVv | Ref,Read | rel: 0
// CHECK: [[@LINE-5]]:29 | instance-property/Swift | y | [[AClass_y_USR]] | Ref,Read | rel: 0
// CHECK: [[@LINE-6]]:31 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Ref,Read | rel: 0
anInstance.y.aMethod()
// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:14swift_ide_test6AClassC1yAA7AStructVv | Ref,Read,Writ | rel: 0
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | [[AClass_y_USR]] | Ref,Read,Writ | rel: 0
// CHECK: [[@LINE-3]]:14 | instance-method/Swift | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF | Ref,Call | rel: 0
// FIXME Write role of z occurrence on the RHS?
@@ -277,7 +324,7 @@ let _ = otherInstance[0]
let _ = anInstance[0]
// CHECK: [[@LINE-1]]:9 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:19 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test6AClassC9subscriptS2ici | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:19 | instance-property/subscript/Swift | subscript(_:) | [[AClass_subscript_USR]] | Ref,Read | rel: 0
let aSubInstance: AClass = ASubClass(x: 1)
// CHECK: [[@LINE-1]]:5 | variable/Swift | aSubInstance | s:14swift_ide_test12aSubInstanceAA6AClassCv | Def | rel: 0
@@ -286,7 +333,7 @@ let aSubInstance: AClass = ASubClass(x: 1)
// Dynamic, RelationReceivedBy
let _ = aSubInstance.foo()
// CHECK: [[@LINE-1]]:9 | variable/Swift | aSubInstance | s:14swift_ide_test12aSubInstanceAA6AClassCv | Ref,Read | rel: 0
// CHECK: [[@LINE-2]]:22 | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF | Ref,Call,Dyn,RelRec | rel: 1
// CHECK: [[@LINE-2]]:22 | instance-method/Swift | foo() | [[AClass_foo_USR]] | Ref,Call,Dyn,RelRec | rel: 1
// CHECK-NEXT: RelRec | class/Swift | AClass | s:14swift_ide_test6AClassC
// RelationContainedBy
@@ -352,27 +399,27 @@ protocol ProtDerived : ProtRoot {
extension ProtDerived {
func fooCommon() {}
// CHECK: 354:8 | instance-method/Swift | fooCommon() | s:14swift_ide_test11ProtDerivedPAAE9fooCommonyyF | Def,RelChild,RelOver | rel: 3
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | fooCommon() | s:14swift_ide_test11ProtDerivedPAAE9fooCommonyyF | Def,RelChild,RelOver | rel: 3
// CHECK-NEXT: RelOver | instance-method/Swift | fooCommon() | s:14swift_ide_test11ProtDerivedP9fooCommonyyF
// CHECK-NEXT: RelOver | instance-method/Swift | fooCommon() | s:14swift_ide_test8ProtRootP9fooCommonyyF
func foo1() {}
// CHECK: 359:8 | instance-method/Swift | foo1() | s:14swift_ide_test11ProtDerivedPAAE4foo1yyF | Def,RelChild,RelOver | rel: 2
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo1() | s:14swift_ide_test11ProtDerivedPAAE4foo1yyF | Def,RelChild,RelOver | rel: 2
// CHECK-NEXT: RelOver | instance-method/Swift | foo1() | s:14swift_ide_test8ProtRootP4foo1yyF
func bar1() {}
// CHECK: 363:8 | instance-method/Swift | bar1() | s:14swift_ide_test11ProtDerivedPAAE4bar1yyF | Def,RelChild,RelOver | rel: 2
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | bar1() | s:14swift_ide_test11ProtDerivedPAAE4bar1yyF | Def,RelChild,RelOver | rel: 2
// CHECK-NEXT: RelOver | instance-method/Swift | bar1() | s:14swift_ide_test11ProtDerivedP4bar1yyF
func foo3(a : Int) {}
// CHECK: 367:8 | instance-method/Swift | foo3(a:) | s:14swift_ide_test11ProtDerivedPAAE4foo3ySi1a_tF | Def,RelChild,RelOver | rel: 2
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo3(a:) | s:14swift_ide_test11ProtDerivedPAAE4foo3ySi1a_tF | Def,RelChild,RelOver | rel: 2
// CHECK-NEXT: RelOver | instance-method/Swift | foo3(a:) | s:14swift_ide_test8ProtRootP4foo3ySi1a_tF
func foo3(a : String) {}
// CHECK: 371:8 | instance-method/Swift | foo3(a:) | s:14swift_ide_test11ProtDerivedPAAE4foo3ySS1a_tF | Def,RelChild,RelOver | rel: 2
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo3(a:) | s:14swift_ide_test11ProtDerivedPAAE4foo3ySS1a_tF | Def,RelChild,RelOver | rel: 2
// CHECK-NEXT: RelOver | instance-method/Swift | foo3(a:) | s:14swift_ide_test8ProtRootP4foo3ySS1a_tF
func bar3(_ : Int) {}
// CHECK: 375:8 | instance-method/Swift | bar3(_:) | s:14swift_ide_test11ProtDerivedPAAE4bar3ySiF | Def,RelChild,RelOver | rel: 2
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | bar3(_:) | s:14swift_ide_test11ProtDerivedPAAE4bar3ySiF | Def,RelChild,RelOver | rel: 2
// CHECK-NEXT: RelOver | instance-method/Swift | bar3(_:) | s:14swift_ide_test11ProtDerivedP4bar3ySiF
}

View File

@@ -54,7 +54,17 @@
{
key.kind: source.lang.swift.decl.var.instance,
key.name: "x",
key.usr: "s:1AAAC1x1BADCv"
key.usr: "s:1AAAC1x1BADCv",
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:1AAAC1x1BADCfg"
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:1AAAC1x1BADCfs"
}
]
}
]
}

View File

@@ -22,7 +22,21 @@
key.name: "b",
key.usr: "s:12implicit_vis1AC1bAA1BCv",
key.line: 2,
key.column: 6
key.column: 6,
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:12implicit_vis1AC1bAA1BCfg",
key.line: 2,
key.column: 6
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:12implicit_vis1AC1bAA1BCfs",
key.line: 2,
key.column: 6
}
]
},
{
key.kind: source.lang.swift.ref.class,

View File

@@ -22,7 +22,21 @@
key.name: "a",
key.usr: "s:12implicit_vis1BC1aAA1ACv",
key.line: 2,
key.column: 6
key.column: 6,
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:12implicit_vis1BC1aAA1ACfg",
key.line: 2,
key.column: 6
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:12implicit_vis1BC1aAA1ACfs",
key.line: 2,
key.column: 6
}
]
},
{
key.kind: source.lang.swift.ref.class,

View File

@@ -64,12 +64,32 @@
{
key.kind: source.lang.swift.decl.var.instance,
key.name: "x",
key.usr: "s:11test_module7TwoIntsC1xSiv"
key.usr: "s:11test_module7TwoIntsC1xSiv",
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:11test_module7TwoIntsC1xSifg"
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:11test_module7TwoIntsC1xSifs"
}
]
},
{
key.kind: source.lang.swift.decl.var.instance,
key.name: "y",
key.usr: "s:11test_module7TwoIntsC1ySiv"
key.usr: "s:11test_module7TwoIntsC1ySiv",
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:11test_module7TwoIntsC1ySifg"
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:11test_module7TwoIntsC1ySifs"
}
]
},
{
key.kind: source.lang.swift.decl.function.constructor,

View File

@@ -57,7 +57,21 @@
key.name: "instV",
key.usr: "s:5index2CCC5instVACv",
key.line: 8,
key.column: 7
key.column: 7,
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:5index2CCC5instVACfg",
key.line: 8,
key.column: 7
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:5index2CCC5instVACfs",
key.line: 8,
key.column: 7
}
]
},
{
key.kind: source.lang.swift.ref.class,
@@ -1230,6 +1244,18 @@
key.line: 151,
key.column: 7,
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:5index9ObservingC04globB0Sifg",
key.line: 151,
key.column: 7
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:5index9ObservingC04globB0Sifs",
key.line: 151,
key.column: 7
},
{
key.kind: source.lang.swift.decl.function.accessor.willset,
key.name: "willSet:globObserving",
@@ -1297,6 +1323,18 @@
key.line: 164,
key.column: 7,
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:5index12rdar18640140C2S1Sifg",
key.line: 164,
key.column: 7
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:5index12rdar18640140C2S1Sifs",
key.line: 164,
key.column: 7
},
{
key.kind: source.lang.swift.decl.function.accessor.didset,
key.name: "didSet:S1",

View File

@@ -38,7 +38,21 @@
key.name: "name",
key.usr: "s:18index_constructors11HorseObjectC4nameXev",
key.line: 7,
key.column: 7
key.column: 7,
key.entities: [
{
key.kind: source.lang.swift.decl.function.accessor.getter,
key.usr: "s:18index_constructors11HorseObjectC4nameXefg",
key.line: 7,
key.column: 7
},
{
key.kind: source.lang.swift.decl.function.accessor.setter,
key.usr: "s:18index_constructors11HorseObjectC4nameXefs",
key.line: 7,
key.column: 7
}
]
},
{
key.kind: source.lang.swift.decl.function.method.instance,

View File

@@ -36,7 +36,15 @@
key.name: "globalSec",
key.usr: "s:18forbid_typecheck_29globalSecSiv",
key.line: 1,
key.column: 18
key.column: 18,
key.entities: [
{
key.kind: source.lang.swift.ref.function.accessor.getter,
key.usr: "s:18forbid_typecheck_29globalSecSifg",
key.line: 1,
key.column: 18
}
]
},
{
key.kind: source.lang.swift.decl.function.free,
@@ -64,7 +72,17 @@
key.name: "member",
key.usr: "s:18forbid_typecheck_26ClsSecC6memberSiv",
key.line: 5,
key.column: 20
key.column: 20,
key.entities: [
{
key.kind: source.lang.swift.ref.function.accessor.getter,
key.usr: "s:18forbid_typecheck_26ClsSecC6memberSifg",
key.line: 5,
key.column: 20,
key.receiver_usr: "s:18forbid_typecheck_26ClsSecC",
key.is_dynamic: 1
}
]
}
]
}