Skip to content

Commit adae1ff

Browse files
committed
Make namePresenInSource safe for IndexOutOfRange
1 parent fef5be0 commit adae1ff

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
@@ -319,9 +319,14 @@ class ExtractSemanticDB extends Phase:
319319
registerSymbol(sym, symkinds)
320320

321321
private def namePresentInSource(sym: Symbol, span: Span, source:SourceFile)(using Context): Boolean =
322-
val content = source.content()
323-
val (start, end) = if content(span.end - 1) == '`' then (span.start + 1, span.end - 1) else (span.start, span.end)
324-
content.slice(start, end).mkString == sym.name.stripModuleClassSuffix.lastPart.toString
322+
if !span.exists then false
323+
else
324+
val content = source.content()
325+
val (start, end) =
326+
if content.lift(span.end - 1).map(_ == '`').getOrElse(false) then
327+
(span.start + 1, span.end - 1)
328+
else (span.start, span.end)
329+
content.slice(start, end).mkString == sym.name.stripModuleClassSuffix.lastPart.toString
325330

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

0 commit comments

Comments
 (0)