Skip to content

Commit

Permalink
Test case for REPL bad symbolic reference
Browse files Browse the repository at this point in the history
  • Loading branch information
dwijnand committed Feb 23, 2024
1 parent 98efdab commit 81bee17
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
14 changes: 14 additions & 0 deletions compiler/test/dotty/tools/repl/ReplCompilerTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,20 @@ class ReplCompilerTests extends ReplTest:
@Test def `i13097 expect template after colon` = contextually:
assert(ParseResult.isIncomplete("class C:"))

@Test def i15562: Unit = initially {
val s1 = run("List(1, 2).filter(_ % 2 == 0).foreach(println)")
assertEquals("2", storedOutput().trim)
s1
} andThen { s1 ?=>
val comp = tabComplete("List(1, 2).filter(_ % 2 == 0).fore")
assertEquals(List("foreach"), comp.distinct)
s1
} andThen {
val s2 = run("List(1, 2).filter(_ % 2 == 0).foreach(println)")
assertEquals("2", storedOutput().trim)
s2
}

object ReplCompilerTests:

private val pattern = Pattern.compile("\\r[\\n]?|\\n");
Expand Down
4 changes: 4 additions & 0 deletions compiler/test/dotty/tools/repl/ReplTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ extends ReplDriver(options, new PrintStream(out, true, StandardCharsets.UTF_8.na

def contextually[A](op: Context ?=> A): A = op(using initialState.context)

/** Returns the `(<instance completions>, <companion completions>)`*/
def tabComplete(src: String)(implicit state: State): List[String] =
completions(src.length, src, state).map(_.value).sorted

extension [A](state: State)
infix def andThen(op: State ?=> A): A = op(using state)

Expand Down
4 changes: 0 additions & 4 deletions compiler/test/dotty/tools/repl/TabcompleteTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@ import org.junit.Test
/** These tests test input that has proved problematic */
class TabcompleteTests extends ReplTest {

/** Returns the `(<instance completions>, <companion completions>)`*/
private def tabComplete(src: String)(implicit state: State): List[String] =
completions(src.length, src, state).map(_.value).sorted

@Test def tabCompleteList = initially {
val comp = tabComplete("List.r")
assertEquals(List("range"), comp.distinct)
Expand Down

0 comments on commit 81bee17

Please sign in to comment.