diff options
author | Martin Odersky <odersky@gmail.com> | 2009-10-28 14:41:00 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-10-28 14:41:00 +0000 |
commit | 0ce248ef65575dce910c82e5714d808851557669 (patch) | |
tree | 289a451fe6a621cd4fbc7345f1ec3094c3e819d2 /src/compiler/scala/tools/nsc/ast/TreeGen.scala | |
parent | cf53536f9e1b668e9e05c280db84ef2eb502765c (diff) | |
download | scala-0ce248ef65575dce910c82e5714d808851557669.tar.gz scala-0ce248ef65575dce910c82e5714d808851557669.tar.bz2 scala-0ce248ef65575dce910c82e5714d808851557669.zip |
Fixed #1342.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeGen.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/TreeGen.scala | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala index 89762ce258..db5c2f2afe 100644 --- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala +++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala @@ -271,7 +271,6 @@ abstract class TreeGen DefDef(accessor setFlag lateDEFERRED, EmptyTree) def mkRuntimeCall(meth: Name, args: List[Tree]): Tree = { - assert(meth.toString != "boxArray") // !!! can be removed once arrays are in. Apply(Select(mkAttributedRef(ScalaRunTimeModule), meth), args) } @@ -302,6 +301,19 @@ abstract class TreeGen def mkForwarder(target: Tree, vparamss: List[List[Symbol]]) = (target /: vparamss)((fn, vparams) => Apply(fn, vparams map paramToArg)) + /** Applies a wrapArray call to an array, making it a WrappedArray + */ + def mkWrapArray(tree: Tree, elemtp: Type) = { + val predef = mkAttributedRef(PredefModule) + val meth = + if ((elemtp <:< AnyRefClass.tpe) && !isPhantomClass(elemtp.typeSymbol) || + isValueClass(elemtp.typeSymbol)) + Select(predef, "wrapArray") + else + TypeApply(Select(predef, "genericWrapArray"), List(TypeTree(elemtp))) + Apply(meth, List(tree)) + } + /** Used in situations where you need to access value of an expression several times */ def evalOnce(expr: Tree, owner: Symbol, unit: CompilationUnit)(within: (() => Tree) => Tree): Tree = { |