Skip to content

Commit 774a21f

Browse files
committed
Add test for tree injector
1 parent 358c3a9 commit 774a21f

File tree

5 files changed

+49
-14
lines changed

5 files changed

+49
-14
lines changed

project/Build.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,9 @@ object Build {
367367
connectInput in run := true,
368368
outputStrategy := Some(StdoutOutput),
369369

370+
// enable verbose exception messages for JUnit
371+
testOptions in Test += Tests.Argument(TestFrameworks.JUnit, "-a", "-v"),
372+
370373
run := Def.inputTaskDyn {
371374
val classPath =
372375
(packageAll in `dotty-compiler-bootstrapped`).value("dotty-library") + ":" +

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ import results.Result
1414
case class InjectableTree(obj: Thicket, nextId: Int)
1515

1616
object InjectableTree {
17+
/** Create the initial InjectableTree - after being called once, should never
18+
* be called again
19+
*/
1720
def apply()(implicit ctx: Context) = new InjectableTree({
1821
val defn = ctx.definitions
1922
val sym = ctx.newCompleteModuleSymbol(
20-
ctx.owner, "ReplSession".toTermName,
23+
defn.RootPackage, "ReplSession".toTermName,
2124
EmptyFlags, EmptyFlags, defn.AnyType :: Nil, Scopes.newScope
2225
)
2326
ModuleDef(sym, Nil)
@@ -26,11 +29,9 @@ object InjectableTree {
2629
def patch(tree: InjectableTree, res: TypedTrees)
2730
(implicit ctx: Context): Result[InjectableTree] = {
2831

29-
val changedTrees = res.trees.map(t => t.changeOwner(t.symbol, tree.obj.symbol))
30-
val treeNames = changedTrees.map(_.symbol.show)
32+
val changedTrees =
33+
res.trees.map(t => t.changeOwner(t.symbol, tree.obj.symbol)).toList
3134

32-
println(tree.obj)
33-
34-
new InjectableTree(cpy.Thicket(tree.obj)(Nil), tree.nextId)
35+
new InjectableTree(cpy.Thicket(tree.obj)(changedTrees), tree.nextId)
3536
}
3637
}

repl/test/dotty/tools/repl/InjectableTreeTests.scala

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,7 @@ package repl
33

44
import org.junit.Assert._
55
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-
6+
import dotc.ast.tpd
147

158
class InjectableTreeTests extends ReplTest {
169
@Test def crashCheck = {
@@ -20,4 +13,17 @@ class InjectableTreeTests extends ReplTest {
2013
val symName = injTree.obj.trees(1).symbol.show
2114
assert(symName == "object ReplSession", symName)
2215
}
16+
17+
@Test def injectOnce = {
18+
implicit val ctx = myCtx
19+
20+
val injTree = InjectableTree()
21+
val parsed @ Parsed(_,_) = ParseResult("def foo: 1 = 1")
22+
val typer = new ReplTyper(myCtx)
23+
24+
val tt @ TypedTrees(_,_) = typer.typeCheck(parsed, 0)
25+
val newInjTree @ InjectableTree(_,_) = InjectableTree.patch(injTree, tt)
26+
27+
// assert( newInjTree has 1 method == "def foo: 1 = 1" )
28+
}
2329
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package dotty.tools
2+
package repl
3+
4+
class ReplTest extends Repl(Array(
5+
// TODO: get rid of this!
6+
"-classpath",
7+
List("../out/bootstrap/dotty-library-bootstrapped/scala-0.2/classes",
8+
"../interfaces/target/classes").mkString(":")
9+
))
10+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dotty.tools
2+
package repl
3+
4+
import org.junit.Assert._
5+
import org.junit.Test
6+
7+
class ReplTyperTests extends ReplTest {
8+
@Test def typeCheck = {
9+
val parsed @ Parsed(_,_) = ParseResult("def foo: 1 = 1")(myCtx)
10+
val typer = new ReplTyper(myCtx)
11+
val res = typer.typeCheck(parsed, 0)(myCtx)
12+
assert(res.isInstanceOf[TypedTrees],
13+
s"Assumed value of `typeCheck` would be TypedTrees - but got: $res")
14+
}
15+
}

0 commit comments

Comments
 (0)