diff options
Diffstat (limited to 'test/files/neg/t8104a')
-rw-r--r-- | test/files/neg/t8104a/Macros_1.scala | 23 | ||||
-rw-r--r-- | test/files/neg/t8104a/Test_2.scala | 20 |
2 files changed, 0 insertions, 43 deletions
diff --git a/test/files/neg/t8104a/Macros_1.scala b/test/files/neg/t8104a/Macros_1.scala deleted file mode 100644 index 688d0694c0..0000000000 --- a/test/files/neg/t8104a/Macros_1.scala +++ /dev/null @@ -1,23 +0,0 @@ -import scala.reflect.macros.Context - -object Macros { - def impl[T](c: Context)(implicit T: c.WeakTypeTag[T]) = { - import c.universe._ - import Flag._ - import definitions._ - val fields = T.tpe.declarations.toList.collect{ case x: TermSymbol if x.isVal && x.isCaseAccessor => x } - val Repr = appliedType(TupleClass(fields.length).asType.toType, fields.map(_.typeSignature)) - c.Expr(Block( - List(ClassDef( - Modifiers(FINAL), - newTypeName("$anon"), - List(), - Template( - List(AppliedTypeTree(Ident(newTypeName("Generic")), List(TypeTree(T.tpe)))), - emptyValDef, - List( - DefDef(Modifiers(), nme.CONSTRUCTOR, List(), List(List()), TypeTree(), Block(List(Apply(Select(Super(This(tpnme.EMPTY), tpnme.EMPTY), nme.CONSTRUCTOR), List())), Literal(Constant(())))), - TypeDef(Modifiers(), newTypeName("Repr"), List(), TypeTree(Repr)))))), - Apply(Select(New(Ident(newTypeName("$anon"))), nme.CONSTRUCTOR), List()))) - } -}
\ No newline at end of file diff --git a/test/files/neg/t8104a/Test_2.scala b/test/files/neg/t8104a/Test_2.scala deleted file mode 100644 index f601fc3570..0000000000 --- a/test/files/neg/t8104a/Test_2.scala +++ /dev/null @@ -1,20 +0,0 @@ -trait Generic[T] { type Repr } -object Generic { - type Aux[T, Repr0] = Generic[T] { type Repr = Repr0 } - import scala.language.experimental.macros - implicit def materializeGeneric[T]: Generic[T] = macro Macros.impl[T] -} - -object Test extends App { - case class C(x: Int, y: Int) - - def reprify[T, Repr](x: T)(implicit generic: Generic.Aux[T, Repr]) = ??? - reprify(C(40, 2)) - - // this is a compilation error at the moment as explained in SI-8104 - // because matchesPt in implicit search says that depoly(<type of materializeGeneric>) isn't a subtype of Generic.Aux[C, (Int, Int)] - // which is rightfully so, because depoly only replaces type parameters, not type members with wildcard types - // however in the future we might want to relax the matchesPt check, so this might start compiling - // therefore, if you've broken this test, then you should be happy, because most likely you've just enabled an interesting use case! - implicitly[Generic.Aux[C, (Int, Int)]] -} |