Skip to content

Commit d458ab4

Browse files
authored
Merge pull request #7350 from TheElectronWill/master
Improve Dottydoc error reporting
2 parents a8f2787 + 5ee568b commit d458ab4

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

doc-tool/src/dotty/tools/dottydoc/staticsite/Template.scala

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,21 @@ case class LiquidTemplate(path: String, content: SourceFile) extends Template wi
6464
val unexpected = LiquidTemplate.token(mm.getUnexpectedType)
6565
val expected = LiquidTemplate.token(mm.expecting)
6666

67+
// mm.index is incorrect, let's compute the index manually
68+
// mm.line starts at 1, not 0
69+
val index = content.lineToOffset(mm.line-1) + mm.charPositionInLine
6770
ctx.error(
6871
if (unexpected == "EOF")
69-
s"unexpected end of file, expected: '$expected'"
72+
s"unexpected end of file, expected $expected"
7073
else
71-
s"unexpected token '$unexpected', expected: '$expected'",
72-
content atSpan Span(mm.index)
74+
s"unexpected $unexpected, expected $expected",
75+
content atSpan Span(index)
7376
)
7477

7578
None
7679
}
77-
case ex => {
78-
if (true || ctx.settings.Ydebug.value)
80+
case _ => {
7981
throw ex
80-
81-
None
8282
}
8383
}
8484
}
@@ -98,17 +98,37 @@ case class LiquidTemplate(path: String, content: SourceFile) extends Template wi
9898

9999
object LiquidTemplate {
100100
import liqp.parser.LiquidParser
101+
import scala.collection.mutable.HashMap
101102

102-
private val _tokens: Map[String, String] = Map(
103+
final val TokenSymbols = HashMap(
103104
"TagStart" -> "{%",
104-
"TagEnd" -> "%}"
105-
)
105+
"TagEnd" -> "%}",
106+
"OutStart" -> "{{",
107+
"OutEnd" -> "}}",
108+
"Pipe" -> "|",
109+
"DotDot" -> "..",
110+
"Dot" -> ".",
111+
"Eq" -> "==",
112+
"EqSign" -> "=",
113+
"Gt" -> ">",
114+
"GtEq" -> ">=",
115+
"Lt" -> "<",
116+
"LtEq" -> "<=",
117+
"Minus" -> "-",
118+
"Col" -> ":",
119+
"Comma" -> ",",
120+
"OPar" -> "(",
121+
"CPar" -> ")",
122+
"OBr" -> "[",
123+
"CBr" -> "]",
124+
"QMark" -> "?"
125+
).mapValuesInPlace((k,v) => s"'$v' ($k)")
106126

107127
def token(i: Int): String =
108128
if (i == -1) "EOF"
109-
else if (i >= LiquidParser.tokenNames.length)
110-
"non-existing token"
111-
else _tokens
112-
.get(LiquidParser.tokenNames(i))
113-
.getOrElse(s"token $i")
129+
else if (i >= LiquidParser.tokenNames.length) "non-existing token"
130+
else {
131+
val name = LiquidParser.tokenNames(i)
132+
TokenSymbols.getOrElse(name, name)
133+
}
114134
}

0 commit comments

Comments
 (0)