-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
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)$
Metadata
Metadata
Assignees
Labels
No labels