It's because in Scalac they're inserted before pickler, and now we're adding them after pickler.
In the meantime, you need to recompile everything from scratch to get the exentsion methods working:
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$ cat C.scala
@value
class C (val c: Int) {
def foo(): Unit =
println(s"We're in ${(new Exception).getStackTrace.toList.head}...")
}
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$ cat Test.scala
object Test extends App {
val c = new C(3)
c.foo()
}
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$ ../va-scalac C.scala Test.scala
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$ ../va-scala Test
We're in C$.foo$xtension(C.scala:4)...
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$ ../va-scalac Test.scala
error: java.lang.AssertionError: assertion failed:
no extension method found for:
method foo:()Unit
Candidates:
Candidates (signatures normalized):
Eligible Names: foo$xtension"
while compiling: Test.scala
during phase: globalPhase=valium-coerce, enteringPhase=valium-inject
library version: version 2.11.1-20140519-130118-1e1defd99c
compiler version: version 2.11.1-20140519-130118-1e1defd99c
reconstructed args: -bootclasspath /mnt/data1/Work/Workspace/dev-2.11/valium/components/runtime/target/scala-2.11/valium-runtime_2.11-0.1-SNAPSHOT.jar:/mnt/data1/Work/Workspace/dev-2.11/valium/components/plugin/target/scala-2.11/valium-plugin_2.11-0.1-SNAPSHOT.jar -Xplugin:/mnt/data1/Work/Workspace/dev-2.11/valium/components/plugin/target/scala-2.11/valium-plugin_2.11-0.1-SNAPSHOT.jar
last tree to typer: term c
tree position: line 2 of Test.scala
tree tpe: <notype>
symbol: value c in object Test
symbol definition: val c(): C (a MethodSymbol)
symbol package: <empty>
symbol owners: value c -> object Test
call site: object Test in package <empty>
== Source file context for tree position ==
0 object Test extends App {
1 val c = new C(3)
2 c.foo()
3 }
at valium.plugin.transform.addext.ValiumAddExtTreeTransformer$$anonfun$extensionMethod$1.apply(ValiumAddExtTreeTransformer.scala:81)
at valium.plugin.transform.addext.ValiumAddExtTreeTransformer$$anonfun$extensionMethod$1.apply(ValiumAddExtTreeTransformer.scala:77)
at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:242)
at scala.reflect.internal.SymbolTable.exitingPhase(SymbolTable.scala:263)
at valium.plugin.transform.ValiumAddExtPhase$class.afterAddExt(package.scala:70)
at valium.plugin.Valium$ValiumAddExtPhaseObj$.afterAddExt(Valium.scala:68)
at valium.plugin.transform.addext.ValiumAddExtTreeTransformer$class.extensionMethod(ValiumAddExtTreeTransformer.scala:77)
at valium.plugin.Valium$ValiumAddExtPhaseObj$.extensionMethod(Valium.scala:68)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$TreeAdapters$TreeAdapter.typed(ValiumCoerceTreeTransformer.scala:110)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5361)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3000)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.collection.immutable.List.loop$1(List.scala:172)
at scala.collection.immutable.List.mapConserve(List.scala:188)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1907)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1753)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5218)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5268)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5305)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5332)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5279)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5283)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$TreeAdapters$TreeAdapter.retypecheck$1(ValiumCoerceTreeTransformer.scala:78)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$TreeAdapters$TreeAdapter.typed(ValiumCoerceTreeTransformer.scala:131)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5361)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3000)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3104)
at scala.collection.immutable.List.loop$1(List.scala:172)
at scala.collection.immutable.List.mapConserve(List.scala:188)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3104)
at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:4928)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5221)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5268)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5305)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5332)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5279)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5283)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$TreeAdapters$TreeAdapter.retypecheck$1(ValiumCoerceTreeTransformer.scala:78)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$TreeAdapters$TreeAdapter.typed(ValiumCoerceTreeTransformer.scala:131)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5357)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$TreeAdapters.adapt(ValiumCoerceTreeTransformer.scala:44)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$CoercePhase$$anonfun$1.apply(ValiumCoerceTreeTransformer.scala:23)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$CoercePhase$$anonfun$1.apply(ValiumCoerceTreeTransformer.scala:23)
at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:242)
at scala.reflect.internal.SymbolTable.exitingPhase(SymbolTable.scala:263)
at valium.plugin.transform.ValiumCoercePhase$class.afterCoerce(package.scala:102)
at valium.plugin.Valium$ValiumCoercePhaseObj$.afterCoerce(Valium.scala:100)
at valium.plugin.transform.coerce.ValiumCoerceTreeTransformer$CoercePhase.apply(ValiumCoerceTreeTransformer.scala:23)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:430)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:397)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:397)
at scala.collection.Iterator$class.foreach(Iterator.scala:743)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1174)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:397)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1625)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1610)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1605)
at scala.tools.nsc.Global$Run.compile(Global.scala:1703)
at scala.tools.nsc.Driver.doCompile(Driver.scala:34)
at scala.tools.nsc.MainClass.doCompile(Main.scala:23)
at scala.tools.nsc.Driver.process(Driver.scala:55)
at scala.tools.nsc.Driver.main(Driver.scala:68)
at scala.tools.nsc.Main.main(Main.scala)
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$ ../va-scalac C.scala Test.scala
sun@sun-cpu:/mnt/data1/Work/Workspace/dev-2.11/valium/sandbox(master)$
It's because in Scalac they're inserted before pickler, and now we're adding them after pickler.
In the meantime, you need to recompile everything from scratch to get the exentsion methods working: