summaryrefslogtreecommitdiff
path: root/test/files/neg/t8104/Macros_1.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-12-28 02:40:44 +0300
committerEugene Burmako <xeno.by@gmail.com>2013-12-28 22:24:16 +0300
commit4b9e8e34171e2162af2b1ce7faef45c31814a477 (patch)
treec5acfe4e0659228bdf45c917af42c48644537f9b /test/files/neg/t8104/Macros_1.scala
parent9f0594c57716ed551918e15be6da843982e8ba12 (diff)
downloadscala-4b9e8e34171e2162af2b1ce7faef45c31814a477.tar.gz
scala-4b9e8e34171e2162af2b1ce7faef45c31814a477.tar.bz2
scala-4b9e8e34171e2162af2b1ce7faef45c31814a477.zip
codifies the state of the art wrt SI-8104
As it was discovered in SI-8104, whiteboxity doesn’t apply equally to type parameters and type members of materialized type classes. During implicit search and subsequent type inference, whitebox type parameters are consistently erased to wildcards, whereas whitebox type members sometimes remain as is and get in the way of signature conformance checks.
Diffstat (limited to 'test/files/neg/t8104/Macros_1.scala')
-rw-r--r--test/files/neg/t8104/Macros_1.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/files/neg/t8104/Macros_1.scala b/test/files/neg/t8104/Macros_1.scala
new file mode 100644
index 0000000000..21d81a3687
--- /dev/null
+++ b/test/files/neg/t8104/Macros_1.scala
@@ -0,0 +1,11 @@
+import scala.reflect.macros.WhiteboxContext
+
+object Macros {
+ def impl[T](c: WhiteboxContext)(implicit T: c.WeakTypeTag[T]) = {
+ import c.universe._
+ 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))
+ q"new Generic[$T]{ type Repr = $Repr }"
+ }
+} \ No newline at end of file