@@ -9,39 +9,86 @@ import dotty.tools.languageserver.util.Code._
9
9
class DocumentSymbolTest {
10
10
11
11
@ Test def withErroneousTree : Unit =
12
- code " class ${m1}Foo $m2 { def } "
12
+ code " ${m1}class Foo { def }$m2 "
13
13
.withSource.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ))
14
14
15
15
@ Test def documentSymbol0 : Unit =
16
- code " class ${m1}Foo $m2" .withSource.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ))
16
+ code " ${m1}class Foo $m2" .withSource.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ))
17
17
18
18
@ Test def documentSymbol1 : Unit =
19
- code " class ${m1}Foo $m2; class ${m3}Bar $m4" .withSource
19
+ code " ${m1}class Foo $m2; ${m3}class Bar $m4" .withSource
20
20
.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ), (m3 to m4).symInfo(" Bar" , SymbolKind .Class ))
21
21
22
22
@ Test def documentSymbol3 : Unit = {
23
23
withSources(
24
- code " class ${m1}Foo $m2" ,
25
- code " class ${m3}Bar $m4"
24
+ code " ${m1}class Foo $m2" ,
25
+ code " ${m3}class Bar $m4"
26
26
) .documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ))
27
27
.documentSymbol(m3, (m3 to m4).symInfo(" Bar" , SymbolKind .Class ))
28
28
}
29
29
30
30
@ Test def documentSymbolShowModule : Unit = {
31
- code """ object ${m1}Foo ${m2}""" .withSource
31
+ code """ ${m1}object Foo ${m2}""" .withSource
32
32
.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Module ))
33
33
}
34
34
35
35
@ Test def documentSymbolShowClassAndCompanion : Unit = {
36
- code """ object ${m1}Foo ${m2}
37
- |class ${m3}Foo ${m4}""" .withSource
36
+ code """ ${m1}object Foo ${m2}
37
+ | ${m3}class Foo ${m4}""" .withSource
38
38
.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Module ),
39
39
(m3 to m4).symInfo(" Foo" , SymbolKind .Class ))
40
40
}
41
41
42
42
@ Test def documentSymbolSynthetic : Unit = {
43
- code """ case class ${m1}Foo ${m2} ( ${m3}x ${m4}: Int) """ .withSource
43
+ code """ ${m1}case class Foo( ${m3}x: Int ${m4}) ${m2} """ .withSource
44
44
.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ),
45
45
(m3 to m4).symInfo(" x" , SymbolKind .Field , " Foo" ))
46
46
}
47
+
48
+ @ Test def documentSymbolEnumADT : Unit = {
49
+ code """ ${m1}enum Option[ ${m3}+T ${m4}] {
50
+ ${m5}case Some( ${m7}x: T ${m8}) ${m6}
51
+ ${m9}case None ${m10}
52
+ } ${m2}""" .withSource
53
+ .documentSymbol(m1, (m1 to m2).symInfo(" Option" , SymbolKind .Enum ),
54
+ (m3 to m4).symInfo(" T" , SymbolKind .TypeParameter , " Option" ),
55
+ (m5 to m6).symInfo(" Some" , SymbolKind .EnumMember , " Option" ),
56
+ (m7 to m8).symInfo(" x" , SymbolKind .Field , " Some" ),
57
+ (m9 to m10).symInfo(" None" , SymbolKind .EnumMember , " Option" ))
58
+ }
59
+
60
+ @ Test def documentSymbolEnum : Unit = {
61
+ code """ ${m1}enum Color( ${m3}val rgb: Int ${m4}) {
62
+ ${m5}case Red extends Color(0xFF0000) ${m6}
63
+ ${m7}case Green extends Color(0x00FF00) ${m8}
64
+ ${m9}case Blue extends Color(0x0000FF) ${m10}
65
+ } ${m2}""" .withSource
66
+ .documentSymbol(m1, (m1 to m2).symInfo(" Color" , SymbolKind .Enum ),
67
+ (m3 to m4).symInfo(" rgb" , SymbolKind .Field , " Color" ),
68
+ (m5 to m6).symInfo(" Red" , SymbolKind .EnumMember , " Color" ),
69
+ (m7 to m8).symInfo(" Green" , SymbolKind .EnumMember , " Color" ),
70
+ (m9 to m10).symInfo(" Blue" , SymbolKind .EnumMember , " Color" ))
71
+ }
72
+
73
+ @ Test def documentSymbolTopLevelDef : Unit =
74
+ code " ${m1}def foo(): Unit = { } ${m2}" .withSource.documentSymbol(m1, (m1 to m2).symInfo(" foo" , SymbolKind .Method ))
75
+
76
+ @ Test def documentSymbolTrait : Unit =
77
+ code " ${m1}trait Foo( ${m3}val x: Int ${m4}) ${m2}" .withSource.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Interface ),
78
+ (m3 to m4).symInfo(" x" , SymbolKind .Field , " Foo" ))
79
+
80
+ @ Test def documentSymbolLocalDef : Unit =
81
+ code """ ${m1}def foo(): Unit = {
82
+ ${m3}def bar(): Unit = { } ${m4}
83
+ ${m5}val x: Int = 0 ${m6}
84
+ } ${m2}""" .withSource.documentSymbol(m1, (m1 to m2).symInfo(" foo" , SymbolKind .Method ),
85
+ (m3 to m4).symInfo(" bar" , SymbolKind .Method , " foo" ),
86
+ (m5 to m6).symInfo(" x" , SymbolKind .Field , " foo" ) )
87
+
88
+ @ Test def documentSymbolTypeFields : Unit =
89
+ code """ ${m1}class Foo {
90
+ ${m3}type T ${m4}
91
+ } ${m2}""" .withSource.documentSymbol(m1, (m1 to m2).symInfo(" Foo" , SymbolKind .Class ),
92
+ (m3 to m4).symInfo(" T" , SymbolKind .TypeParameter , " Foo" ))
93
+
47
94
}
0 commit comments