diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-21 12:44:03 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-21 12:44:03 +0100 |
commit | b6755f6927c07337b0819d7503f2c7b1674d892f (patch) | |
tree | 1758dff616c91e4d52e26cd3e407651aa3034fe1 /tests/pending/pos | |
parent | 7d513b4f3342c17e8b603a43c40770d0f97424de (diff) | |
download | dotty-b6755f6927c07337b0819d7503f2c7b1674d892f.tar.gz dotty-b6755f6927c07337b0819d7503f2c7b1674d892f.tar.bz2 dotty-b6755f6927c07337b0819d7503f2c7b1674d892f.zip |
tests reorgs
Move some tests into proper slots + comments what they are.
Diffstat (limited to 'tests/pending/pos')
-rw-r--r-- | tests/pending/pos/annotated-original/C_2.scala | 7 | ||||
-rw-r--r-- | tests/pending/pos/annotated-original/M_1.scala | 7 | ||||
-rw-r--r-- | tests/pending/pos/annotated-treecopy/Impls_Macros_1.scala | 54 | ||||
-rw-r--r-- | tests/pending/pos/annotated-treecopy/Test_2.scala | 5 | ||||
-rw-r--r-- | tests/pending/pos/annotations.scala | 2 |
5 files changed, 2 insertions, 73 deletions
diff --git a/tests/pending/pos/annotated-original/C_2.scala b/tests/pending/pos/annotated-original/C_2.scala deleted file mode 100644 index 36a09ffe0..000000000 --- a/tests/pending/pos/annotated-original/C_2.scala +++ /dev/null @@ -1,7 +0,0 @@ -object Bug { - M.m { - def s = "" - M.m(s): @unchecked // error: macro has not been expanded. - ??? - } -} diff --git a/tests/pending/pos/annotated-original/M_1.scala b/tests/pending/pos/annotated-original/M_1.scala deleted file mode 100644 index 84a01bcce..000000000 --- a/tests/pending/pos/annotated-original/M_1.scala +++ /dev/null @@ -1,7 +0,0 @@ -import language.experimental.macros -import scala.reflect.macros.blackbox.Context - -object M { - def impl(c: Context)(a: c.Expr[Any]) = c.Expr[Any](c.untypecheck(a.tree)) - def m(a: Any) = macro impl -} diff --git a/tests/pending/pos/annotated-treecopy/Impls_Macros_1.scala b/tests/pending/pos/annotated-treecopy/Impls_Macros_1.scala deleted file mode 100644 index 986287dfa..000000000 --- a/tests/pending/pos/annotated-treecopy/Impls_Macros_1.scala +++ /dev/null @@ -1,54 +0,0 @@ -import scala.language.experimental.macros -import scala.reflect.macros.blackbox.Context -import collection.mutable.ListBuffer -import collection.mutable.Stack - -object Macros { - trait TypedFunction { - def tree: scala.reflect.runtime.universe.Tree - val typeIn: String - val typeOut: String - } - - def tree[T,U](f:Function1[T,U]): Function1[T,U] = macro tree_impl[T,U] - - def tree_impl[T:c.WeakTypeTag,U:c.WeakTypeTag](c: Context) - (f:c.Expr[Function1[T,U]]): c.Expr[Function1[T,U]] = { - import c.universe._ - import internal._ - val ttag = c.weakTypeTag[U] - f match { - case Expr(Function(List(ValDef(_,n,tp,_)),b)) => - // normalize argument name - var b1 = new Transformer { - override def transform(tree: Tree): Tree = tree match { - case Ident(x) if (x==n) => Ident(TermName("_arg")) - case tt: TypeTree if tt.original != null => setOriginal(TypeTree(tt.tpe), transform(tt.original)) - // without the fix to LazyTreeCopier.Annotated, we would need to uncomment the line below to make the macro work - // that's because the pattern match in the input expression gets expanded into Typed(<x>, TypeTree(<Int @unchecked>)) - // with the original of the TypeTree being Annotated(<@unchecked>, Ident(<x>)) - // then the macro tries to replace all Ident(<x>) trees with Ident(<_arg>), recurs into the original of the TypeTree, changes it, - // but leaves the <@unchecked> part untouched. this signals the misguided LazyTreeCopier that the Annotated tree hasn't been modified, - // so the original tree should be copied over and returned => crash when later <x: @unchecked> re-emerges from TypeTree.original - // case Annotated(annot, arg) => treeCopy.Annotated(tree, transform(annot).duplicate, transform(arg)) - case _ => super.transform(tree) - } - }.transform(b) - - val reifiedTree = c.reifyTree(gen.mkRuntimeUniverseRef, EmptyTree, b1) - val reifiedExpr = c.Expr[scala.reflect.runtime.universe.Expr[T => U]](reifiedTree) - val template = - c.universe.reify(new (T => U) with TypedFunction { - override def toString = c.Expr[String](q"""${tp+" => "+ttag.tpe+" { "+b1.toString+" } "}""").splice // DEBUG - def tree = reifiedExpr.splice.tree - val typeIn = c.Expr[String](q"${tp.toString}").splice - val typeOut = c.Expr[String](q"${ttag.tpe.toString}").splice - def apply(_arg: T): U = c.Expr[U](b1)(ttag.asInstanceOf[c.WeakTypeTag[U]]).splice - }) - val untyped = c.untypecheck(template.tree) - - c.Expr[T => U](untyped) - case _ => sys.error("Bad function type") - } - } -} diff --git a/tests/pending/pos/annotated-treecopy/Test_2.scala b/tests/pending/pos/annotated-treecopy/Test_2.scala deleted file mode 100644 index 1c6b862ef..000000000 --- a/tests/pending/pos/annotated-treecopy/Test_2.scala +++ /dev/null @@ -1,5 +0,0 @@ -object Test extends App { - import Macros._ - // tree { (x:((Int,Int,Int),(Int,Int,Int))) => { val y=x; val ((r1,m1,c1),(r2,m2,c2))=y; (r1, m1 + m2 + r1 * c1 * c2, c2) } } - tree { (x:((Int,Int,Int),(Int,Int,Int))) => { val ((r1,m1,c1),(r2,m2,c2))=x; (r1, m1 + m2 + r1 * c1 * c2, c2) } } -} diff --git a/tests/pending/pos/annotations.scala b/tests/pending/pos/annotations.scala index 9235a1ee6..be15a3dcb 100644 --- a/tests/pending/pos/annotations.scala +++ b/tests/pending/pos/annotations.scala @@ -1,3 +1,5 @@ +// Needs an implementation of beanproperty to work + class ann(i: Int) extends scala.annotation.Annotation class cfann(x: String) extends annotation.ClassfileAnnotation |