File tree Expand file tree Collapse file tree 4 files changed +99
-4
lines changed
SourceKit/DocumentStructure Expand file tree Collapse file tree 4 files changed +99
-4
lines changed Original file line number Diff line number Diff line change 16
16
#include " swift/AST/Decl.h"
17
17
#include " swift/AST/Expr.h"
18
18
#include " swift/AST/Pattern.h"
19
+ #include " swift/AST/ParameterList.h"
19
20
#include " swift/AST/Module.h"
20
21
#include " swift/AST/Stmt.h"
21
22
#include " swift/AST/TypeRepr.h"
@@ -875,8 +876,15 @@ bool ModelASTWalker::walkToDeclPre(Decl *D) {
875
876
SN.Kind = SyntaxStructureKind::EnumElement;
876
877
SN.Range = charSourceRangeFromSourceRange (SM,
877
878
EnumElemD->getSourceRange ());
878
- SN.NameRange = CharSourceRange (EnumElemD->getNameLoc (),
879
- EnumElemD->getName ().getLength ());
879
+ if (auto ParamList = EnumElemD->getParameterList ()) {
880
+ SourceRange NameRange = SourceRange (EnumElemD->getNameLoc (),
881
+ ParamList->getSourceRange ().End );
882
+ SN.NameRange = charSourceRangeFromSourceRange (SM, NameRange);
883
+ } else {
884
+ SN.NameRange = CharSourceRange (EnumElemD->getNameLoc (),
885
+ EnumElemD->getName ().getLength ());
886
+ }
887
+
880
888
if (auto *E = EnumElemD->getRawValueExpr ()) {
881
889
SourceRange ElemRange = E->getSourceRange ();
882
890
SN.Elements .emplace_back (SyntaxStructureElementKind::InitExpr,
Original file line number Diff line number Diff line change @@ -142,7 +142,7 @@ func test1() {
142
142
// CHECK: <enum>enum <name>SomeEnum</name> {
143
143
// CHECK: <enum-case>case <enum-elem><name>North</name></enum-elem></enum-case>
144
144
// CHECK: <enum-case>case <enum-elem><name>South</name></enum-elem>, <enum-elem><name>East</name></enum-elem></enum-case>
145
- // CHECK: <enum-case>case <enum-elem><name>QRCode</name> (<param><type>String</type></param>)</enum-elem></enum-case>
145
+ // CHECK: <enum-case>case <enum-elem><name>QRCode(<param><type>String</type></param>)</name> </enum-elem></enum-case>
146
146
// CHECK: <enum-case>case</enum-case>
147
147
// CHECK: }</enum>
148
148
enum SomeEnum {
Original file line number Diff line number Diff line change @@ -118,3 +118,12 @@ class C {
118
118
var // comment
119
119
`$` = 1
120
120
func /* comment */`foo`( x: Int ) { }
121
+
122
+ // rdar://40085232
123
+ enum MyEnum {
124
+ case Bar( arg: Int )
125
+ }
126
+
127
+ enum MySecondEnum {
128
+ case One = 1
129
+ }
Original file line number Diff line number Diff line change 1
1
{
2
2
key.offset: 0,
3
- key.length: 1970 ,
3
+ key.length: 2065 ,
4
4
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
5
5
key.substructure: [
6
6
{
1208
1208
key.namelength: 1
1209
1209
}
1210
1210
]
1211
+ },
1212
+ {
1213
+ key.kind: source.lang.swift.decl.enum,
1214
+ key.accessibility: source.lang.swift.accessibility.internal,
1215
+ key.name: "MyEnum",
1216
+ key.offset: 1990,
1217
+ key.length: 36,
1218
+ key.nameoffset: 1995,
1219
+ key.namelength: 6,
1220
+ key.bodyoffset: 2003,
1221
+ key.bodylength: 22,
1222
+ key.substructure: [
1223
+ {
1224
+ key.kind: source.lang.swift.decl.enumcase,
1225
+ key.offset: 2006,
1226
+ key.length: 18,
1227
+ key.nameoffset: 0,
1228
+ key.namelength: 0,
1229
+ key.substructure: [
1230
+ {
1231
+ key.kind: source.lang.swift.decl.enumelement,
1232
+ key.accessibility: source.lang.swift.accessibility.internal,
1233
+ key.name: "Bar(arg:)",
1234
+ key.offset: 2011,
1235
+ key.length: 13,
1236
+ key.nameoffset: 2011,
1237
+ key.namelength: 13
1238
+ }
1239
+ ]
1240
+ },
1241
+ {
1242
+ key.kind: source.lang.swift.decl.var.parameter,
1243
+ key.name: "arg",
1244
+ key.offset: 2015,
1245
+ key.length: 8,
1246
+ key.typename: "Int",
1247
+ key.nameoffset: 2015,
1248
+ key.namelength: 3
1249
+ }
1250
+ ]
1251
+ },
1252
+ {
1253
+ key.kind: source.lang.swift.decl.enum,
1254
+ key.accessibility: source.lang.swift.accessibility.internal,
1255
+ key.name: "MySecondEnum",
1256
+ key.offset: 2028,
1257
+ key.length: 36,
1258
+ key.nameoffset: 2033,
1259
+ key.namelength: 12,
1260
+ key.bodyoffset: 2047,
1261
+ key.bodylength: 16,
1262
+ key.substructure: [
1263
+ {
1264
+ key.kind: source.lang.swift.decl.enumcase,
1265
+ key.offset: 2050,
1266
+ key.length: 12,
1267
+ key.nameoffset: 0,
1268
+ key.namelength: 0,
1269
+ key.substructure: [
1270
+ {
1271
+ key.kind: source.lang.swift.decl.enumelement,
1272
+ key.accessibility: source.lang.swift.accessibility.internal,
1273
+ key.name: "One",
1274
+ key.offset: 2055,
1275
+ key.length: 7,
1276
+ key.nameoffset: 2055,
1277
+ key.namelength: 3,
1278
+ key.elements: [
1279
+ {
1280
+ key.kind: source.lang.swift.structure.elem.init_expr,
1281
+ key.offset: 2061,
1282
+ key.length: 1
1283
+ }
1284
+ ]
1285
+ }
1286
+ ]
1287
+ }
1288
+ ]
1211
1289
}
1212
1290
],
1213
1291
key.diagnostics: [
You can’t perform that action at this time.
0 commit comments