Skip to content

Commit 5ffa445

Browse files
committed
Make namePresenInSource safe for IndexOutOfRange
1 parent 0687269 commit 5ffa445

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

compiler/src/dotty/tools/dotc/semanticdb/ExtractSemanticDB.scala

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -540,9 +540,14 @@ class ExtractSemanticDB extends Phase:
540540
registerSymbol(sym, symbol, symkinds)
541541

542542
private def namePresentInSource(sym: Symbol, span: Span, source:SourceFile)(using Context): Boolean =
543-
val content = source.content()
544-
val (start, end) = if content(span.end - 1) == '`' then (span.start + 1, span.end - 1) else (span.start, span.end)
545-
content.slice(start, end).mkString == sym.name.stripModuleClassSuffix.lastPart.toString
543+
if !span.exists then false
544+
else
545+
val content = source.content()
546+
val (start, end) =
547+
if content.lift(span.end - 1).exists(_ == '`') then
548+
(span.start + 1, span.end - 1)
549+
else (span.start, span.end)
550+
content.slice(start, end).mkString == sym.name.stripModuleClassSuffix.lastPart.toString
546551

547552
private def spanOfSymbol(sym: Symbol, span: Span, treeSource: SourceFile)(using Context): Span =
548553
val contents = if treeSource.exists then treeSource.content() else Array.empty[Char]

0 commit comments

Comments
 (0)