diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2016-03-16 16:37:59 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2016-03-26 22:49:15 -0700 |
commit | 1acfc70b038b09018d3ba1cc4b8c968e2a93d33c (patch) | |
tree | 02dc96cbe07eb98c94e5ca74631c3f0124be9711 /src/compiler/scala/tools/nsc/ast/TreeGen.scala | |
parent | ad90614c391328bdc9d13795d26f339f67e7f4d5 (diff) | |
download | scala-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.scala | 8 |
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))) } } |