~ubuntu-branches/debian/sid/scala/sid

« back to all changes in this revision

Viewing changes to test/files/neg/t8104a/Macros_1.scala

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bourg, Mehdi Dogguy, Lucas Satabin, Frank S. Thomas, Emmanuel Bourg
  • Date: 2015-06-05 23:52:59 UTC
  • mfrom: (1.2.11)
  • Revision ID: package-import@ubuntu.com-20150605235259-wk00vgk83dh8o19g
Tags: 2.10.5-1
* Team upload.

[ Mehdi Dogguy ]
* New upstream release (Closes: #744278).

[ Lucas Satabin ]
* Update patches
* Update the clean target
* Update paths of elements to install
* Update watch file

[ Frank S. Thomas ]
* Remove myself from Uploaders.

[ Emmanuel Bourg ]
* The package has been adopted by the Java Team (Closes: #754935)
* Patched the build to avoid downloading libraries from the Internet
* Replaced the minified JavaScript files with unobfuscated ones
* No longer build scala-partest.jar until diffutils is packaged or replaced
* debian/watch: Fixed the versions matched (x.y.z instead of x.y.z..z)
* debian/rules:
  - Added the missing get-orig-source target (Closes: #724704)
  - Improved the clean target
* debian/control:
  - Build depend on scala (>= 2.10) and bnd
  - Use canonical URLs for the Vcs-* fields
  - Standards-Version updated to 3.9.6 (no changes)
* Switch to debhelper level 9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import scala.reflect.macros.Context
 
2
 
 
3
object Macros {
 
4
  def impl[T](c: Context)(implicit T: c.WeakTypeTag[T]) = {
 
5
    import c.universe._
 
6
    import Flag._
 
7
    import definitions._
 
8
    val fields = T.tpe.declarations.toList.collect{ case x: TermSymbol if x.isVal && x.isCaseAccessor => x }
 
9
    val Repr = appliedType(TupleClass(fields.length).asType.toType, fields.map(_.typeSignature))
 
10
    c.Expr(Block(
 
11
      List(ClassDef(
 
12
        Modifiers(FINAL),
 
13
        newTypeName("$anon"),
 
14
        List(),
 
15
        Template(
 
16
          List(AppliedTypeTree(Ident(newTypeName("Generic")), List(TypeTree(T.tpe)))),
 
17
          emptyValDef,
 
18
          List(
 
19
            DefDef(Modifiers(), nme.CONSTRUCTOR, List(), List(List()), TypeTree(), Block(List(Apply(Select(Super(This(tpnme.EMPTY), tpnme.EMPTY), nme.CONSTRUCTOR), List())), Literal(Constant(())))),
 
20
            TypeDef(Modifiers(), newTypeName("Repr"), List(), TypeTree(Repr)))))),
 
21
      Apply(Select(New(Ident(newTypeName("$anon"))), nme.CONSTRUCTOR), List())))
 
22
  }
 
23
}
 
 
b'\\ No newline at end of file'