Skip to content

Commit 64533c9

Browse files
committed
fix range for package clause
1 parent d57e855 commit 64533c9

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

semanticdb/src/dotty/semanticdb/SemanticdbConsumer.scala

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class SemanticdbConsumer extends TastyConsumer {
9393
"()"
9494
}
9595
}
96+
9697
def iterateParent(symbol: Symbol): String = {
9798
if (symbolsCache.contains(symbol)) {
9899
return symbolsCache(symbol)
@@ -147,15 +148,20 @@ class SemanticdbConsumer extends TastyConsumer {
147148
)
148149
}
149150

150-
def range(pos: Position, name: String): s.Range = {
151+
def range(tree: Tree, pos: Position, name: String): s.Range = {
152+
val offset = tree match {
153+
case IsPackageClause(tree) => "package ".length
154+
case _ => 0
155+
}
156+
151157
val range_end_column =
152158
if (name == "<init>") {
153159
pos.endColumn
154160
} else {
155161
pos.startColumn + name.length
156162
}
157163

158-
s.Range(pos.startLine, pos.startColumn, pos.startLine, range_end_column)
164+
s.Range(pos.startLine, pos.startColumn + offset, pos.startLine, range_end_column + offset)
159165
}
160166

161167
def rangeExclude(range: Position, exclude: Position): s.Range = {
@@ -166,13 +172,13 @@ class SemanticdbConsumer extends TastyConsumer {
166172
range.endColumn)
167173
}
168174

169-
def typetreeSymbol(typetree: TypeTree): Unit =
175+
def typetreeSymbol(tree: Tree, typetree: TypeTree): Unit =
170176
typetree match {
171177
case TypeTree.Synthetic => ()
172178
case _ =>
173179
addOccurence(typetree.symbol,
174180
s.SymbolOccurrence.Role.REFERENCE,
175-
range(typetree.pos, typetree.symbol.name))
181+
range(tree, typetree.pos, typetree.symbol.name))
176182
}
177183

178184
override def traverseTree(tree: Tree)(implicit ctx: Context): Unit = {
@@ -181,14 +187,14 @@ class SemanticdbConsumer extends TastyConsumer {
181187
case IsDefinition(body) => {
182188
if (tree.symbol.name != "<init>") {
183189
val _ = tree match {
184-
case DefDef(_, _, _, typetree, _) => typetreeSymbol(typetree)
185-
case ValDef(_, typetree, _) => typetreeSymbol(typetree)
190+
case DefDef(_, _, _, typetree, _) => typetreeSymbol(tree, typetree)
191+
case ValDef(_, typetree, _) => typetreeSymbol(tree, typetree)
186192
case _ => ()
187193
}
188194
}
189195
addOccurence(tree.symbol,
190196
s.SymbolOccurrence.Role.DEFINITION,
191-
range(tree.symbol.pos, tree.symbol.name))
197+
range(tree, tree.symbol.pos, tree.symbol.name))
192198

193199
super.traverseTree(body)
194200
}
@@ -204,13 +210,13 @@ class SemanticdbConsumer extends TastyConsumer {
204210
//println(tree.namePos.startColumn, tree.namePos.endColumn)
205211
addOccurence(tree.symbol,
206212
s.SymbolOccurrence.Role.REFERENCE,
207-
range(tree.pos, tree.symbol.name))
213+
range(tree, tree.pos, tree.symbol.name))
208214
super.traverseTree(tree)
209215
}
210216
case PackageClause(_) =>
211217
addOccurence(tree.symbol,
212218
s.SymbolOccurrence.Role.REFERENCE,
213-
range(tree.pos, tree.symbol.name))
219+
range(tree, tree.pos, tree.symbol.name))
214220
super.traverseTree(tree)
215221

216222
case tree =>

0 commit comments

Comments
 (0)