Skip to content

Commit e4be70d

Browse files
committed
Fix column method.
In case if code is indented with tabs `column` was always retuning `0`. Originally reported in scalamete/metals#3724
1 parent 741bbad commit e4be70d

File tree

4 files changed

+39
-9
lines changed

4 files changed

+39
-9
lines changed

compiler/src/dotty/tools/dotc/util/SourceFile.scala

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,6 @@ class SourceFile(val file: AbstractFile, computeContent: => Array[Char]) extends
7575

7676
def maybeIncomplete: Boolean = _maybeInComplete
7777

78-
/** Tab increment; can be overridden */
79-
def tabInc: Int = 8
80-
8178
override def name: String = file.name
8279
override def path: String = file.path
8380
override def jfile: Optional[JFile] = Optional.ofNullable(file.file)
@@ -197,12 +194,7 @@ class SourceFile(val file: AbstractFile, computeContent: => Array[Char]) extends
197194
/** The column corresponding to `offset`, starting at 0 */
198195
def column(offset: Int): Int = {
199196
var idx = startOfLine(offset)
200-
var col = 0
201-
while (idx != offset) {
202-
col += (if (idx < content().length && content()(idx) == '\t') (tabInc - col) % tabInc else 1)
203-
idx += 1
204-
}
205-
col
197+
offset - idx
206198
}
207199

208200
/** The padding of the column corresponding to `offset`, includes tabs */
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package example
2+
3+
val a/*<-example::Tabs$package.a.*/ =
4+
List/*->scala::package.List.*/(1,2,3)
5+
.map/*->scala::collection::immutable::List#map().*/(_ +/*->scala::Int#`+`(+4).*/ 1)

tests/semanticdb/expect/Tabs.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package example
2+
3+
val a =
4+
List(1,2,3)
5+
.map(_ + 1)

tests/semanticdb/metac.expect

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3393,6 +3393,34 @@ Synthetics:
33933393
[55:6..55:12):foo(x) => *(x)
33943394
[58:6..58:12):foo(0) => *(given_Int)
33953395

3396+
expect/Tabs.scala
3397+
-----------------
3398+
3399+
Summary:
3400+
Schema => SemanticDB v4
3401+
Uri => Tabs.scala
3402+
Text => empty
3403+
Language => Scala
3404+
Symbols => 2 entries
3405+
Occurrences => 5 entries
3406+
Synthetics => 2 entries
3407+
3408+
Symbols:
3409+
example/Tabs$package. => final package object example extends Object { self: example.type => +2 decls }
3410+
example/Tabs$package.a. => val method a List[Int]
3411+
3412+
Occurrences:
3413+
[0:8..0:15): example <- example/
3414+
[2:4..2:5): a <- example/Tabs$package.a.
3415+
[3:1..3:5): List -> scala/package.List.
3416+
[4:3..4:6): map -> scala/collection/immutable/List#map().
3417+
[4:9..4:10): + -> scala/Int#`+`(+4).
3418+
3419+
Synthetics:
3420+
[3:1..4:6):List(1,2,3)
3421+
.map => *[Int]
3422+
[3:1..3:5):List => *.apply[Int]
3423+
33963424
expect/Traits.scala
33973425
-------------------
33983426

0 commit comments

Comments
 (0)