summaryrefslogtreecommitdiff
path: root/test/files/neg/t8104a
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/neg/t8104a')
-rw-r--r--test/files/neg/t8104a/Macros_1.scala23
-rw-r--r--test/files/neg/t8104a/Test_2.scala20
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)]]
-}