summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/TreeGen.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2016-03-16 16:37:59 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2016-03-26 22:49:15 -0700
commit1acfc70b038b09018d3ba1cc4b8c968e2a93d33c (patch)
tree02dc96cbe07eb98c94e5ca74631c3f0124be9711 /src/compiler/scala/tools/nsc/ast/TreeGen.scala
parentad90614c391328bdc9d13795d26f339f67e7f4d5 (diff)
downloadscala-1acfc70b038b09018d3ba1cc4b8c968e2a93d33c.tar.gz
scala-1acfc70b038b09018d3ba1cc4b8c968e2a93d33c.tar.bz2
scala-1acfc70b038b09018d3ba1cc4b8c968e2a93d33c.zip
Set the scene for Sammy.
Go beyond refactoring and introduce some hooks and patch some holes that will become acute when we set Sammy loose. Expanding sam requires class as first parent: `addObjectParent`. (Tested in pos/sam_ctor_arg.scala, coming next.)
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeGen.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreeGen.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
index 7b0216a6d7..b2a54e16d3 100644
--- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
@@ -300,7 +300,7 @@ abstract class TreeGen extends scala.reflect.internal.TreeGen with TreeDSL {
abstractFunctionType(fun.vparams.map(_.symbol.tpe), fun.tpe.typeArgs.last.deconst) // TODO: use `fun.body.tpe.deconst` -- preserving wrong status quo because refactoring-only
def expandFunction(localTyper: analyzer.Typer)(fun: Function, inConstructorFlag: Long): Tree = {
- val parents = addSerializable(functionClassType(fun))
+ val parents = addObjectParent(addSerializable(functionClassType(fun)))
val anonClass = fun.symbol.owner newAnonymousFunctionClass(fun.pos, inConstructorFlag) addAnnotation SerialVersionUIDAnnotation
// The original owner is used in the backend for the EnclosingMethod attribute. If fun is
@@ -309,12 +309,12 @@ abstract class TreeGen extends scala.reflect.internal.TreeGen with TreeDSL {
defineOriginalOwner(anonClass, fun.symbol.originalOwner)
anonClass setInfo ClassInfoType(parents, newScope, anonClass)
- val applyMethodDef = mkMethodFromFunction(localTyper)(anonClass, fun)
- anonClass.info.decls enter applyMethodDef.symbol
+ val samDef = mkMethodFromFunction(localTyper)(anonClass, fun)
+ anonClass.info.decls enter samDef.symbol
localTyper.typedPos(fun.pos) {
Block(
- ClassDef(anonClass, NoMods, ListOfNil, List(applyMethodDef), fun.pos),
+ ClassDef(anonClass, NoMods, ListOfNil, List(samDef), fun.pos),
Typed(New(anonClass.tpe), TypeTree(fun.tpe)))
}
}