diff --git a/mtags/src/main/scala-2/scala/meta/internal/pc/completions/Completions.scala b/mtags/src/main/scala-2/scala/meta/internal/pc/completions/Completions.scala index a8271d106e6..a9d2ec5ca15 100644 --- a/mtags/src/main/scala-2/scala/meta/internal/pc/completions/Completions.scala +++ b/mtags/src/main/scala-2/scala/meta/internal/pc/completions/Completions.scala @@ -906,7 +906,8 @@ trait Completions { this: MetalsGlobal => } } } - loop(lastVisitedParentTrees) + val start = loop(lastVisitedParentTrees) + Math.min(start, pos.point) } /** Can character form part of an alphanumeric Scala identifier? */ diff --git a/tests/cross/src/test/scala/tests/pc/CompletionSuite.scala b/tests/cross/src/test/scala/tests/pc/CompletionSuite.scala index b51d0fcf4ff..92dc37d635e 100644 --- a/tests/cross/src/test/scala/tests/pc/CompletionSuite.scala +++ b/tests/cross/src/test/scala/tests/pc/CompletionSuite.scala @@ -2281,4 +2281,15 @@ class CompletionSuite extends BaseCompletionSuite { "" ) + // This checks if inferStart doesn't crash + check( + "infer-correct-start".tag(IgnoreScala3), + """|object O { + | val alpha = (((hex >> 24) / 0xff & 1@@).toInt + | val red = ((hex >> 16) & 0xff).toInt + |} + |""".stripMargin, + "" + ) + }