summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-01-28 10:26:00 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-01-28 10:26:00 +0000
commitb08a2a652fa1c436c71356f7ca75017e3fd9fdb8 (patch)
tree1d9e2da453f7c54005a52b8dce708faee2a63bce
parent6a79e29cd85194e4ebf1bb38732caddd88896925 (diff)
downloadscala-b08a2a652fa1c436c71356f7ca75017e3fd9fdb8.tar.gz
scala-b08a2a652fa1c436c71356f7ca75017e3fd9fdb8.tar.bz2
scala-b08a2a652fa1c436c71356f7ca75017e3fd9fdb8.zip
close #2886 (applied patch). no review
-rw-r--r--src/compiler/scala/tools/nsc/transform/Reifiers.scala3
-rw-r--r--test/files/run/t2886.check1
-rw-r--r--test/files/run/t2886.scala7
3 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Reifiers.scala b/src/compiler/scala/tools/nsc/transform/Reifiers.scala
index d4290bff59..a588fccad5 100644
--- a/src/compiler/scala/tools/nsc/transform/Reifiers.scala
+++ b/src/compiler/scala/tools/nsc/transform/Reifiers.scala
@@ -18,11 +18,14 @@ trait Reifiers {
if (sym.isClass) reflect.Class(fullname)
else if (sym.isType) reflect.TypeField(fullname, reify(sym.info))
else if (sym.isMethod) reflect.Method(fullname, reify(sym.info))
+ else if (sym.isValueParameter) reflect.LocalValue(reflect.NoSymbol, fullname, reify(sym.info))
else reflect.Field(fullname, reify(sym.info));
def reify(sym: Symbol): reflect.Symbol = {
if (sym.isRoot || sym.isRootPackage || sym.isEmptyPackageClass || sym.isEmptyPackage)
reflect.RootSymbol
+ else if (sym.isValueParameter)
+ mkGlobalSymbol(sym.name.toString, sym)
else if (sym.owner.isTerm)
reflect.NoSymbol
else reify(sym.owner) match {
diff --git a/test/files/run/t2886.check b/test/files/run/t2886.check
new file mode 100644
index 0000000000..39ee46a3df
--- /dev/null
+++ b/test/files/run/t2886.check
@@ -0,0 +1 @@
+Function(List(LocalValue(NoSymbol,x,PrefixedType(SingleType(ThisType(Class(scala)),Field(scala.Predef,PrefixedType(ThisType(Class(scala)),Class(scala.Predef)))),TypeField(scala.Predef.String,PrefixedType(ThisType(Class(java.lang)),Class(java.lang.String)))))),Block(List(ValDef(LocalValue(NoSymbol,x$1,NoType),Ident(LocalValue(NoSymbol,x,PrefixedType(SingleType(ThisType(Class(scala)),Field(scala.Predef,PrefixedType(ThisType(Class(scala)),Class(scala.Predef)))),TypeField(scala.Predef.String,PrefixedType(ThisType(Class(java.lang)),Class(java.lang.String))))))), ValDef(LocalValue(NoSymbol,x$2,NoType),Ident(LocalValue(NoSymbol,x,PrefixedType(SingleType(ThisType(Class(scala)),Field(scala.Predef,PrefixedType(ThisType(Class(scala)),Class(scala.Predef)))),TypeField(scala.Predef.String,PrefixedType(ThisType(Class(java.lang)),Class(java.lang.String)))))))),Apply(Select(This(Class(Test)),Method(Test.test,MethodType(List(LocalValue(NoSymbol,name,PrefixedType(SingleType(ThisType(Class(scala)),Field(scala.Predef,PrefixedType(ThisType(Class(scala)),Class(scala.Predef)))),TypeField(scala.Predef.String,PrefixedType(ThisType(Class(java.lang)),Class(java.lang.String))))), LocalValue(NoSymbol,address,PrefixedType(SingleType(ThisType(Class(scala)),Field(scala.Predef,PrefixedType(ThisType(Class(scala)),Class(scala.Predef)))),TypeField(scala.Predef.String,PrefixedType(ThisType(Class(java.lang)),Class(java.lang.String)))))),PrefixedType(ThisType(Class(scala)),Class(scala.Null))))),List(Ident(LocalValue(NoSymbol,x$2,NoType)), Ident(LocalValue(NoSymbol,x$1,NoType)))))) \ No newline at end of file
diff --git a/test/files/run/t2886.scala b/test/files/run/t2886.scala
new file mode 100644
index 0000000000..eb392f0c58
--- /dev/null
+++ b/test/files/run/t2886.scala
@@ -0,0 +1,7 @@
+object Test {
+ def test(name: String, address: String) = null
+ def main(args: Array[String]) = {
+ val tree = scala.reflect.Code.lift((x:String) => test(address=x,name=x)).tree
+ println(tree)
+ }
+}