Skip to content

Commit 358c3a9

Browse files
committed
Add crash tests
1 parent 905ada0 commit 358c3a9

File tree

3 files changed

+49
-9
lines changed

3 files changed

+49
-9
lines changed

repl/src/dotty/tools/repl/InjectableTree.scala

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,35 @@ package dotty.tools
22
package repl
33

44
import dotc.core.Contexts.Context
5-
import dotc.ast.tpd._
5+
import dotc.core.Decorators.PreNamedString
6+
import dotc.ast.tpd.{ ModuleDef, Thicket, cpy }
7+
import dotc.core.Flags.EmptyFlags
8+
import dotc.core.Scopes
9+
import dotc.ast.Trees.Template
10+
import dotc.core.StdNames._
611

7-
import results._
12+
import results.Result
813

9-
case class InjectableTree(obj: TypeDef, nextId: Int)
14+
case class InjectableTree(obj: Thicket, nextId: Int)
1015

1116
object InjectableTree {
1217
def apply()(implicit ctx: Context) = new InjectableTree({
13-
???
18+
val defn = ctx.definitions
19+
val sym = ctx.newCompleteModuleSymbol(
20+
ctx.owner, "ReplSession".toTermName,
21+
EmptyFlags, EmptyFlags, defn.AnyType :: Nil, Scopes.newScope
22+
)
23+
ModuleDef(sym, Nil)
1424
}, 0)
1525

1626
def patch(tree: InjectableTree, res: TypedTrees)
17-
(implicit ctx: Context): Result[InjectableTree] =
18-
???
27+
(implicit ctx: Context): Result[InjectableTree] = {
28+
29+
val changedTrees = res.trees.map(t => t.changeOwner(t.symbol, tree.obj.symbol))
30+
val treeNames = changedTrees.map(_.symbol.show)
31+
32+
println(tree.obj)
33+
34+
new InjectableTree(cpy.Thicket(tree.obj)(Nil), tree.nextId)
35+
}
1936
}

repl/src/dotty/tools/repl/Repl.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ class Repl(settings: Array[String]) extends Driver {
2727
ictx
2828
}
2929

30-
private[this] var myCtx = initializeCtx
31-
private[this] var typer = new ReplTyper(myCtx)
32-
private[this] var compiler = new ReplCompiler(myCtx)
30+
protected[this] var myCtx = initializeCtx
31+
protected[this] var typer = new ReplTyper(myCtx)
32+
protected[this] var compiler = new ReplCompiler(myCtx)
3333

3434
private def readLine(history: History) =
3535
AmmoniteReader(history)(myCtx).prompt()
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package dotty.tools
2+
package repl
3+
4+
import org.junit.Assert._
5+
import org.junit.Test
6+
7+
class ReplTest extends Repl(Array(
8+
// TODO: get rid of this!
9+
"-classpath",
10+
List("../out/bootstrap/dotty-library-bootstrapped/scala-0.2/classes",
11+
"../interfaces/target/classes").mkString(":")
12+
))
13+
14+
15+
class InjectableTreeTests extends ReplTest {
16+
@Test def crashCheck = {
17+
implicit val ctx = myCtx
18+
val injTree = InjectableTree()
19+
val parsed @ Parsed(_,_) = ParseResult("def foo: 1 = 1")
20+
val symName = injTree.obj.trees(1).symbol.show
21+
assert(symName == "object ReplSession", symName)
22+
}
23+
}

0 commit comments

Comments
 (0)