Skip to content

Commit eaa8ca4

Browse files
authored
Merge pull request swiftlang#23751 from slavapestov/subscript-parameter-usrs
AST: Fix mangling of entities in subscript context
2 parents aafb04e + 75673f1 commit eaa8ca4

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

lib/AST/ASTMangler.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1595,10 +1595,10 @@ void ASTMangler::appendContext(const DeclContext *ctx) {
15951595
return appendEntity(eed);
15961596
}
15971597

1598-
case DeclContextKind::SubscriptDecl:
1599-
// FIXME: We may need to do something here if subscripts contain any symbols
1600-
// exposed with linkage names, or if/when they get generic parameters.
1601-
return appendContext(ctx->getParent());
1598+
case DeclContextKind::SubscriptDecl: {
1599+
auto sd = cast<SubscriptDecl>(ctx);
1600+
return appendEntity(sd);
1601+
}
16021602

16031603
case DeclContextKind::Initializer:
16041604
switch (cast<Initializer>(ctx)->getInitializerKind()) {

test/IDE/print_usrs.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class GenericClass {
6767
}
6868

6969
// CHECK: [[@LINE+2]]:3 s:14swift_ide_test12GenericClassCySfSicip{{$}}
70-
// CHECK: [[@LINE+1]]:13 s:14swift_ide_test12GenericClassC1iL_Sivp{{$}}
70+
// CHECK: [[@LINE+1]]:13 s:14swift_ide_test12GenericClassCySfSicip1iL_Sivp{{$}}
7171
subscript(i: Int) -> Float {
7272
// CHECK: [[@LINE+1]]:5 s:14swift_ide_test12GenericClassCySfSicig{{$}}
7373
get { return 0.0 }
@@ -212,7 +212,7 @@ class ObjCClass1 {
212212
class func staticFunc1(_ a: Int) {}
213213

214214
// CHECK: [[@LINE+2]]:10 s:14swift_ide_test10ObjCClass1CyS2icip{{$}}
215-
// CHECK: [[@LINE+1]]:20 s:14swift_ide_test10ObjCClass1C1xL_Sivp{{$}}
215+
// CHECK: [[@LINE+1]]:20 s:14swift_ide_test10ObjCClass1CyS2icip1xL_Sivp{{$}}
216216
public subscript(x: Int) -> Int {
217217

218218
// CHECK: [[@LINE+1]]:5 c:@M@swift_ide_test@objc(cs)ObjCClass1(im)objectAtIndexedSubscript:{{$}}
@@ -223,7 +223,7 @@ class ObjCClass1 {
223223
}
224224

225225
// CHECK: [[@LINE+2]]:10 s:14swift_ide_test10ObjCClass1CySiACcip{{$}}
226-
// CHECK: [[@LINE+1]]:20 s:14swift_ide_test10ObjCClass1C1xL_ACvp{{$}}
226+
// CHECK: [[@LINE+1]]:20 s:14swift_ide_test10ObjCClass1CySiACcip1xL_ACvp{{$}}
227227
public subscript(x: ObjCClass1) -> Int {
228228

229229
// CHECK: [[@LINE+1]]:5 c:@M@swift_ide_test@objc(cs)ObjCClass1(im)objectForKeyedSubscript:{{$}}

test/SourceKit/CursorInfo/cursor_info_param.swift

+2-4
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,14 @@ func customSourceLocation(a: Int) {}
2424
// CHECK-FUNC-THEB-NOT: PARENT OFFSET
2525

2626
// RUN: %sourcekitd-test -req=cursor -pos=4:13 %s -- %s | %FileCheck -check-prefix=CHECK-SUBSCRIPT-A %s
27-
// FIXME: This USR is wrong; see https://bugs.swift.org/browse/SR-8660.
28-
// CHECK-SUBSCRIPT-A: s:17cursor_info_param12AccessorTestV1aL_Sivp
27+
// CHECK-SUBSCRIPT-A: s:17cursor_info_param12AccessorTestV_1bS2i_Sitcip1aL_Sivp
2928
// CHECK-SUBSCRIPT-A: PARENT OFFSET: 67
3029

3130
// RUN: %sourcekitd-test -req=cursor -pos=4:21 %s -- %s | %FileCheck -check-prefix=CHECK-SUBSCRIPT-B %s
3231
// CHECK-SUBSCRIPT-B: s:17cursor_info_param12AccessorTestV
3332

3433
// RUN: %sourcekitd-test -req=cursor -pos=4:23 %s -- %s | %FileCheck -check-prefix=CHECK-SUBSCRIPT-THEB %s
35-
// FIXME: This USR is wrong; see https://bugs.swift.org/browse/SR-8660.
36-
// CHECK-SUBSCRIPT-THEB: s:17cursor_info_param12AccessorTestV4theBL_Sivp
34+
// CHECK-SUBSCRIPT-THEB: s:17cursor_info_param12AccessorTestV_1bS2i_Sitcip4theBL_Sivp
3735
// CHECK-SUBSCRIPT-THEB-NOT: PARENT OFFSET
3836

3937
// RUN: %sourcekitd-test -req=cursor -pos=7:9 %s -- %s | %FileCheck -check-prefix=CHECK-SETTER-V %s

0 commit comments

Comments
 (0)