Skip to content

Commit 954c668

Browse files
authored
Merge pull request #80464 from hamishknight/index-6.1-cherry-pick
[6.1] Fix missing refs to accesor when shadowing with if-let shorthand.
2 parents 41ced39 + c6a5321 commit 954c668

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

include/swift/Index/IndexSymbol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ struct IndexSymbol : IndexRelation {
6565
SmallVector<IndexRelation, 3> Relations;
6666
unsigned line = 0;
6767
unsigned column = 0;
68-
const Decl *originalDecl = nullptr;
68+
ValueDecl *originalDecl = nullptr;
6969

7070
IndexSymbol() = default;
7171

lib/Index/Index.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,11 @@ class IndexSwiftASTWalker : public SourceEntityWalker {
887887
// Dig back to the original captured variable
888888
if (auto *VD = dyn_cast<VarDecl>(D)) {
889889
Info.originalDecl = firstDecl(D);
890+
// When indexing locals is disabled, the reference to the original decl
891+
// would be lost without overwriting the local symbol.
892+
if (!IdxConsumer.indexLocals()) {
893+
D = Info.originalDecl;
894+
}
890895
}
891896

892897
if (Data.isImplicit)

test/Index/index_shadow.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ struct ShadowedTest {
4040
if let shadowedVar {
4141
// CHECK_LOCALS-NOT: [[@LINE+3]]:11 {{.*}} s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
4242
// CHECK_LOCALS: [[@LINE+2]]:11 {{.*}} s:14swift_ide_test12ShadowedTestV06shadowE0yyF11shadowedVarL_SiSgvp {{.*}}Ref
43-
// CHECK-NOT: [[@LINE+1]]:11 {{.*}} shadowedVar {{.*}}Ref
43+
// CHECK: [[@LINE+1]]:11 | instance-property/Swift | shadowedVar | s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
4444
_ = shadowedVar
4545

4646
// CHECK_LOCALS: [[@LINE+4]]:14 {{.*}} s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
@@ -49,7 +49,7 @@ struct ShadowedTest {
4949
// CHECK: [[@LINE+1]]:14 {{.*}} s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
5050
if let shadowedVar {
5151
// CHECK_LOCALS: [[@LINE+2]]:13 {{.*}} s:14swift_ide_test12ShadowedTestV06shadowE0yyF11shadowedVarL0_Sivp {{.*}}Ref
52-
// CHECK-NOT: [[@LINE+1]]:13 {{.*}} shadowedVar {{.*}}Ref
52+
// CHECK: [[@LINE+1]]:13 | instance-property/Swift | shadowedVar | s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
5353
_ = shadowedVar
5454
}
5555
}
@@ -60,7 +60,7 @@ struct ShadowedTest {
6060
// CHECK: [[@LINE+1]]:12 {{.*}} s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
6161
_ = { [shadowedVar] in
6262
// CHECK_LOCALS: [[@LINE+2]]:11 {{.*}} s:14swift_ide_test12ShadowedTestV06shadowE0yyF11shadowedVarL1_SiSgSgvp {{.*}}Ref
63-
// CHECK-NOT: [[@LINE+1]]:11 {{.*}} shadowedVar {{.*}}Ref
63+
// CHECK: [[@LINE+1]]:11 | instance-property/Swift | shadowedVar | s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
6464
_ = shadowedVar
6565

6666
// CHECK_LOCALS: [[@LINE+4]]:14 {{.*}} s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
@@ -69,7 +69,7 @@ struct ShadowedTest {
6969
// CHECK: [[@LINE+1]]:14 {{.*}} s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
7070
_ = { [shadowedVar] in
7171
// CHECK_LOCALS: [[@LINE+2]]:13 {{.*}} s:14swift_ide_test12ShadowedTestV06shadowE0yyFyycfU_11shadowedVarL_SiSgSgvp {{.*}}Ref
72-
// CHECK-NOT: [[@LINE+1]]:13 {{.*}} shadowedVar {{.*}}Ref
72+
// CHECK: [[@LINE+1]]:13 | instance-property/Swift | shadowedVar | s:14swift_ide_test12ShadowedTestV11shadowedVarSiSgSgvp {{.*}}Ref
7373
_ = shadowedVar
7474
}
7575
}

0 commit comments

Comments
 (0)