1.4-related cleanup and reorganization.

Removed a bunch of now useless 1.4 code, merged
back jvm5-specific partest tests into the
general jvm tests, documentation updates.



git-svn-id: http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk@17742 5e8d7ff9-d8ef-0310-90f0-a4852d11357a
This commit is contained in:
cunei 2009-05-15 15:44:54 +00:00
parent 7761a46fdc
commit f7375edf9f
94 changed files with 26 additions and 528 deletions

View File

@ -1490,7 +1490,6 @@ BOOTRAPING TEST AND TEST SUITE
<include name="run/**/*.scala"/>
<include name="jvm/**/*.scala"/>
</runtests>
<jvm5tests dir="${test.dir}/files/jvm5" includes="*.scala"/>
</partest>
</target>
@ -1502,13 +1501,11 @@ BOOTRAPING TEST AND TEST SUITE
<fileset dir="${test.dir}/files/lib" includes="*.jar"/>
</classpath>
<postests dir="${test.dir}/files/pos" includes="*.scala"/>
<pos5tests dir="${test.dir}/files/pos5" includes="*.scala"/>
<negtests dir="${test.dir}/files/neg" includes="*.scala"/>
<runtests dir="${test.dir}/files">
<include name="run/**/*.scala"/>
</runtests>
<jvmtests dir="${test.dir}/files/jvm" includes="*.scala"/>
<jvm5tests dir="${test.dir}/files/jvm5" includes="*.scala"/>
<residenttests dir="${test.dir}/files/res" includes="*.res"/>
<!-- <scripttests dir="${test.dir}/files/script" includes="*.scala"/> -->
<shootouttests dir="${test.dir}/files/shootout" includes="*.scala"/>
@ -1527,7 +1524,6 @@ BOOTRAPING TEST AND TEST SUITE
<fileset dir="${test.dir}/files/lib" includes="*.jar"/>
</classpath>
<postests dir="${test.dir}/files/pos" includes="*.scala"/>
<pos5tests dir="${test.dir}/files/pos5" includes="*.scala"/>
<negtests dir="${test.dir}/files/neg" includes="*.scala"/>
<runtests dir="${test.dir}/files">
<include name="run/**/*.scala"/>
@ -1696,26 +1692,6 @@ STABLE REFERENCE (STARR)
<target name="starr.done" depends="starr.libs"/>
<!-- ===========================================================================
FORWARDED TARGETS FOR JVM 1.4 BUILD
============================================================================ -->
<target name="four" depends="pack.done">
<ant antfile="${src.dir}/build/four.xml" target="four-pack.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="fourtest" depends="pack.done">
<ant antfile="${src.dir}/build/four.xml" target="four-test.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="fourdist" depends="pack.done">
<ant antfile="${src.dir}/build/four.xml" target="four-all.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="fourclean">
<ant antfile="${src.dir}/build/four.xml" target="four-all.clean" inheritall="yes" inheritrefs="yes"/>
</target>
<!-- ===========================================================================
FORWARDED TARGETS FOR MSIL BUILD
============================================================================ -->
@ -1742,19 +1718,14 @@ FORWARDED TARGETS FOR PACKAGING
<ant antfile="${src.dir}/build/pack.xml" target="pack-all.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="fourdistpack" depends="pack.done">
<ant antfile="${src.dir}/build/four.xml" target="four-dist.done" inheritall="yes" inheritrefs="yes"/>
<ant antfile="${src.dir}/build/pack.xml" target="fourpack-all.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="msildistpack" depends="pack.done">
<ant antfile="${src.dir}/build/msil.xml" target="msil-dist.done" inheritall="yes" inheritrefs="yes"/>
<ant antfile="${src.dir}/build/pack.xml" target="msilpack-all.done" inheritall="yes" inheritrefs="yes"/>
</target>
<!-- Used by the scala-installer script -->
<target name="alldistpack" depends="distpack, fourdistpack, msildistpack"/>
<target name="allallclean" depends="all.clean, fourclean, msilclean"/>
<target name="alldistpack" depends="distpack, msildistpack"/>
<target name="allallclean" depends="all.clean, msilclean"/>
<!-- ===========================================================================
FORWARDED TARGETS FOR NIGHTLY BUILDS
@ -1764,15 +1735,6 @@ FORWARDED TARGETS FOR NIGHTLY BUILDS
<ant antfile="${src.dir}/build/pack.xml" target="pack-all.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="fournightly" depends="pack.done">
<ant antfile="${src.dir}/build/four.xml" target="four-all.done" inheritall="yes" inheritrefs="yes"/>
<ant antfile="${src.dir}/build/pack.xml" target="fourpack-all.done" inheritall="yes" inheritrefs="yes"/>
</target>
<target name="fourfournightly">
<ant antfile="${src.dir}/build/four.xml" target="fourfour-test.done"/>
</target>
<target name="msilnightly" depends="pack.done">
<ant antfile="${src.dir}/build/msil.xml" target="msil-all.done" inheritall="yes" inheritrefs="yes"/>
<ant antfile="${src.dir}/build/pack.xml" target="msilpack-all.done" inheritall="yes" inheritrefs="yes"/>

View File

@ -53,7 +53,7 @@ Scala Environment Options
In the following example, simply replace <jdk> by
"java-1.4", "java-1.5", "java-1.6", "java-1.7" or
"java-1.5", "java-1.6", "java-1.7" or
"java-ibm-1.5" to experiment with different Java VMs:
> env JAVACMD=/home/linuxsoft/apps/<jdk>/bin/java \

View File

@ -125,7 +125,7 @@ object scalac extends Command {
Definition(
CmdOption("target:", Argument("target")),
SeqPara(
"Specify which backend to use (" & Mono("jvm-1.5,jvm-1.4," &
"Specify which backend to use (" & Mono("jvm-1.5," &
"msil,cldc") & ").",
"The default value is " & Mono("\"jvm-1.5\"") & " (was " &
Mono("\"jvm-1.4\"") & " up to Scala version 2.6.1).")),

View File

@ -4,9 +4,6 @@ How partest choses the compiler / library:
''lib'' directory of given path
* ''--pack'' -> will set ''scalatest.build=build/pack'', and run all tests.
add ''--[kind]'' to run a selected set of tests.
* ''--[four]'' -> will set ''scalatest.build=build-four-pack'' and
''scalatest.scalac_opts=-target:jvm-1.4'', and run all tests.
add ''--kind'' to run a selected set of tests.
* auto detection:
- scalatest.build property -> ''bin'' / ''lib'' directories
- distribution (''dists/latest'')
@ -26,10 +23,9 @@ Other arguments:
* --neg next files test a compilation failure
* --run next files test the interpreter and all backends
* --jvm next files test the JVM backend
* --jvm5 next files test the JVM backend
* --res next files test the resident compiler
* --shootout next files are shootout tests
* --script next files test the script runner
* ''-Dscalatest.scalac_opts=-target:jvm-1.4'' -> add compiler options
* ''-Dscalatest.scalac_opts=...'' -> add compiler options
* ''--verbose'' -> print verbose messages
* ''-Dpartest.debug=true'' -> print debug messages

View File

@ -40,10 +40,6 @@ class PartestTask extends Task {
jvmFiles = Some(input)
}
def addConfiguredJvm5Tests(input: FileSet) {
jvm5Files = Some(input)
}
def addConfiguredResidentTests(input: FileSet) {
residentFiles = Some(input)
}
@ -119,7 +115,6 @@ class PartestTask extends Task {
private var negFiles: Option[FileSet] = None
private var runFiles: Option[FileSet] = None
private var jvmFiles: Option[FileSet] = None
private var jvm5Files: Option[FileSet] = None
private var residentFiles: Option[FileSet] = None
private var scriptFiles: Option[FileSet] = None
private var shootoutFiles: Option[FileSet] = None
@ -159,7 +154,6 @@ class PartestTask extends Task {
private def getNegFiles = getFiles(negFiles)
private def getRunFiles = getFiles(runFiles)
private def getJvmFiles = getFilesAndDirs(jvmFiles)
private def getJvm5Files = getFilesAndDirs(jvm5Files)
private def getResidentFiles = getFiles(residentFiles)
private def getScriptFiles = getFiles(scriptFiles)
private def getShootoutFiles = getFiles(shootoutFiles)
@ -263,13 +257,6 @@ class PartestTask extends Task {
allFailures += failures
}
if (getJvm5Files.size > 0) {
log("Compiling and running files")
val (successes, failures) = runTestsForFiles(getJvm5Files, "jvm5")
allSucesses += successes
allFailures += failures
}
if (getResidentFiles.size > 0) {
log("Running resident compiler scenarii")
val (successes, failures) = runTestsForFiles(getResidentFiles, "res")

View File

@ -103,7 +103,6 @@ class DirectCompiler(val fileManager: FileManager) extends SimpleCompiler {
case "neg" => NegTestFile(files(0), fileManager, out.isEmpty)
case "run" => RunTestFile(files(0), fileManager, out.isEmpty)
case "jvm" => JvmTestFile(files(0), fileManager, out.isEmpty)
case "jvm5" => Jvm5TestFile(files(0), fileManager, out.isEmpty)
case "shootout" => ShootoutTestFile(files(0), fileManager, out.isEmpty)
case "scalap" => ScalapTestFile(files(0), fileManager, out.isEmpty)
case "scalacheck" =>

View File

@ -29,7 +29,6 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
"Testing compiler (on files whose compilation should fail)"),
TestSet("run", fileFilter, "run", "Testing JVM backend"),
TestSet("jvm", fileFilter, "jvm", "Testing JVM backend"),
TestSet("jvm5", fileFilter, "jvm5", "Testing JVM backend"),
TestSet("res", Some((".res", false)), "res",
"Testing resident compiler"),
TestSet("shootout", fileFilter, "shootout", "Testing shootout tests"),
@ -80,9 +79,6 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
else if (args contains "--pack") {
args = args.remove(_ == "--pack") // will create a result file '--pack' otherwise
new ConsoleFileManager("build/pack")
} else if (args contains "--four") {
args = args.remove(_ == "--four")
new ConsoleFileManager("build/four-pack", false, "-target:jvm-1.4")
} else // auto detection, see ConsoleFileManager.findLatest
new ConsoleFileManager
@ -206,12 +202,8 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
NestUI.failure("invalid test file: "+firstName+"\n")
Predef.exit(1)
} else {
val k = firstName.substring(filesPos+len+1, filesPos+len+1+3)
val short = if (k == "jvm") {
if (firstName.substring(filesPos+len+1, filesPos+len+1+4) == "jvm5") "jvm5"
else k
} else k
val shortKinds = List("pos", "neg", "run", "jvm", "jvm5", "res")
val short = firstName.substring(filesPos+len+1, filesPos+len+1+3)
val shortKinds = List("pos", "neg", "run", "jvm", "res")
if (shortKinds contains short) short
else short match {
case "sho" => "shootout"

View File

@ -74,14 +74,12 @@ object NestUI {
println(" --neg run compilation tests (failure)")
println(" --run run interpreter and backend tests")
println(" --jvm run JVM backend tests")
println(" --jvm5 run JVM backend tests (-target:jvm-1.5)")
println(" --res run resident compiler tests")
println(" --script run script runner tests")
println(" --shootout run shootout tests")
println
println(" Other options:")
println(" --pack pick compiler/library in build/pack, and run all tests")
println(" --four pick compiler/library in build/four-pack, and run all tests")
println(" --show-log show log")
println(" --show-diff show diff between log and check file")
println(" --failed run only those tests that failed during the last run")

View File

@ -38,8 +38,6 @@ class ReflectiveRunner extends RunnerUtils {
new ConsoleFileManager(classPath.get, true)
else if (argList contains "--pack")
new ConsoleFileManager("build/pack")
else if (argList contains "--four")
new ConsoleFileManager("build/four-pack", false, "-target:jvm-1.4")
else // auto detection
new ConsoleFileManager

View File

@ -89,15 +89,6 @@ case class JvmTestFile(override val file: File, override val fileManager: FileMa
}
}
case class Jvm5TestFile(override val file: File, override val fileManager: FileManager, createOutDir: Boolean) extends TestFile("jvm5", file, fileManager, createOutDir) {
override def defineSettings(settings: Settings) {
baseSettings(settings)
settings.classpath.value = settings.classpath.value+
File.pathSeparator+fileManager.CLASSPATH
settings.target.value = "jvm-1.5"
}
}
case class ShootoutTestFile(override val file: File, override val fileManager: FileManager, createOutDir: Boolean) extends TestFile("shootout", file, fileManager, createOutDir) {
override def defineSettings(settings: Settings) {
baseSettings(settings)

View File

@ -513,9 +513,6 @@ class Worker(val fileManager: FileManager) extends Actor {
case "jvm" =>
runJvmTest(file, kind)
case "jvm5" =>
runJvmTest(file, kind)
case "res" => {
// when option "--failed" is provided
// execute test only if log file is present

View File

@ -22,7 +22,6 @@
<excludeFolder url="file://$MODULE_DIR$/android-library" />
<excludeFolder url="file://$MODULE_DIR$/cldc-library" />
<excludeFolder url="file://$MODULE_DIR$/dotnet-library" />
<excludeFolder url="file://$MODULE_DIR$/jvm14-library" />
<excludeFolder url="file://$MODULE_DIR$/mono" />
</content>
<content url="file://$MODULE_DIR$/../test" />

2
test/files/jvm/typerep.check Normal file → Executable file
View File

@ -9,10 +9,12 @@ Float
Double
String
Unit
Class[Int]
Some[Int]
Some[Int]
Some[Some[Int]]
Some[List[Int]]
None
None

25
test/files/jvm/typerep.scala Normal file → Executable file
View File

@ -49,7 +49,7 @@ object testPrimitives {
println(getType(0.0d))
println(getType("abc"))
println(getType(())) // Unit
// println(getType(classOf[Int])) // Class
println(getType(classOf[Int])) // Class
println
}
@ -58,6 +58,8 @@ object testOptions {
val x: Option[Int] = Some(2)
println(getType(x))
println(getType(Some(Some(3))))
println(getType(Some(List(3))))
//println(getType(Some(None: List[Int]))) // error: no implicit argument matching parameter type TypeRep[object None] was foun
println(getType(None: Option[Int]))
val y: Option[Int] = None
println(getType(y))
@ -156,7 +158,7 @@ object TypeRep {
def getType[A](x: Option[A])(implicit rep: TypeRep[A]): TypeRep[Option[A]] = (x match {
case Some(v) => SomeRep(rep)
case None => NoneRep // or NoneRep(rep)
case None => NoneRep
}).asInstanceOf[TypeRep[Option[A]]]
def getType[A](x: List[A])(implicit rep: TypeRep[A]): TypeRep[List[A]] = (x match {
@ -174,12 +176,14 @@ object TypeRep {
implicit def doubleRep: TypeRep[Double] = DoubleRep
implicit def unitRep: TypeRep[Unit] = UnitRep
// implicit def classRep: TypeRep[Class] = ClassRep
implicit def stringRep: TypeRep[String] = StringRep
implicit def noneRep: TypeRep[Option[Nothing]] = NoneRep[Nothing](NothingRep.asInstanceOf[TypeRep[Nothing]])
//implicit def noneRep: TypeRep[None.type] = NoneRep//[Nothing](NothingRep.asInstanceOf[TypeRep[Nothing]])
implicit def anyRep: TypeRep[Any] = AnyRep
implicit def nothingRep: TypeRep[Nothing] = NothingRep
implicit def classRep[A](implicit elemrep: TypeRep[A]): TypeRep[Class[A]] =
ClassRep(elemrep)
implicit def someRep[A](implicit elemrep: TypeRep[A]): TypeRep[Some[A]] =
SomeRep(elemrep)
@ -189,9 +193,10 @@ object TypeRep {
implicit def arrayRep[A](implicit elemrep: TypeRep[A]): TypeRep[Array[A]] =
ArrayRep(elemrep)
implicit def tuple2Rep[A1, A2](implicit _1: TypeRep[A1], _2: TypeRep[A2]): TypeRep[Tuple2[A1, A2]] =
implicit def tuple2Rep[A1, A2](implicit _1: TypeRep[A1], _2: TypeRep[A2]): TypeRep[(A1, A2)] =
Tuple2Rep(_1, _2)
implicit def tuple3Rep[A1, A2, A3](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3]): TypeRep[Tuple3[A1, A2, A3]] =
implicit def tuple3Rep[A1, A2, A3](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3]): TypeRep[(A1, A2, A3)] =
Tuple3Rep(_1, _2, _3)
implicit def tuple4Rep[A1, A2, A3, A4](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4]): TypeRep[Tuple4[A1, A2, A3, A4]] =
Tuple4Rep(_1, _2, _3, _4)
@ -263,7 +268,7 @@ object TypeRep {
case object StringRep extends TypeRep[String] {
override def toString = "String"
}
case object NoneRep extends TypeRep[Option[Nothing]] {
case object NoneRep extends TypeRep[None.type] {
override def toString = "None"
}
case object NilRep extends TypeRep[Nil.type] {
@ -276,6 +281,10 @@ object TypeRep {
override def toString = "Nothing"
}
@serializable
case class ClassRep[A](elemRep: TypeRep[A]) extends TypeRep[Class[A]] {
override def toString = "Class[" + elemRep + "]"
}
@serializable
case class SomeRep[A](elemRep: TypeRep[A]) extends TypeRep[Some[A]] {
override def toString = "Some[" + elemRep + "]"
@ -296,7 +305,7 @@ object TypeRep {
}
@serializable
case class Tuple2Rep[A1, A2](_1: TypeRep[A1], _2: TypeRep[A2]) extends TypeRep[Tuple2[A1, A2]] {
case class Tuple2Rep[A1, A2](_1: TypeRep[A1], _2: TypeRep[A2]) extends TypeRep[(A1, A2)] {
override def toString = "Tuple2[" + _1 + ", " + _2 + "]"
}
@serializable

View File

@ -1,49 +0,0 @@
Boolean
Boolean
true
Byte
Char
Int
Long
Float
Double
String
Unit
Class[Int]
Some[Int]
Some[Int]
Some[Some[Int]]
Some[List[Int]]
None
None
List[Int]
List[Int]
List[List[Int]]
Nil
List[Any]
Array[Int]
Array[Array[Int]]
Array[Int]
Array[Int]
Array[Int]
Array[Int]
Tuple2[Int, String]
Tuple3[Char, Char, String]
Tuple2[Tuple2[Int, String], Tuple2[Int, String]]
Tuple2[Tuple2[Some[Char], Int], Tuple2[Some[Char], Int]]
Function1[Int, Int]
Int
Function1[Int, Int]
Int
Function1[Int, Function1[Int, Int]]
Function1[Int, Int]
Int
Function3[Boolean, List[Char], Int, Int]
Function2[Function1[Int, Int], Int, Int]
Int

View File

@ -1,383 +0,0 @@
//############################################################################
// Type Representation at runtime
//############################################################################
// $Id: $
import TypeRep._
object Test extends Application {
testPrimitives
testOptions
testLists
testArrays
testTuples
testFuncs
testClasses
}
object serialize {
import java.io._
@throws(classOf[IOException])
def write[A](o: A): Array[Byte] = {
val ba = new ByteArrayOutputStream(512)
val out = new ObjectOutputStream(ba)
out.writeObject(o)
out.close()
ba.toByteArray()
}
@throws(classOf[IOException])
@throws(classOf[ClassNotFoundException])
def read[A](buffer: Array[Byte]): A = {
val in =
new ObjectInputStream(new ByteArrayInputStream(buffer))
in.readObject().asInstanceOf[A]
}
}
object testPrimitives {
println(getType(true))
val b = false; val bt = getType(b)
println(bt)
val bt1: TypeRep[Boolean] = serialize.read(serialize.write(bt))
println(bt1 == bt)
println(getType(16.toByte))
println(getType('a'))
println(getType(3))
println(getType(3l))
println(getType(0.0f))
println(getType(0.0d))
println(getType("abc"))
println(getType(())) // Unit
println(getType(classOf[Int])) // Class
println
}
object testOptions {
println(getType(Some(2)))
val x: Option[Int] = Some(2)
println(getType(x))
println(getType(Some(Some(3))))
println(getType(Some(List(3))))
//println(getType(Some(None: List[Int]))) // error: no implicit argument matching parameter type TypeRep[object None] was foun
println(getType(None: Option[Int]))
val y: Option[Int] = None
println(getType(y))
println
}
object testLists {
println(getType(List(3)))
println(getType(3 :: Nil))
println(getType(List(List(3))))
println(getType(Nil: List[Int]))
println(getType(List(1, "abc")))
println
}
object testArrays {
println(getType(Array(3)))
println(getType(Array(Array(3), Array(4))))
println(getType(new Array[Int](0)))
println(getType(List(1).toArray))
println(getType(List[Int]().toArray))
println(getType(Array(3).drop(1).toArray)) // empty
println
}
object testTuples {
println(getType((3, "abc")))
println(getType(Triple('a', 'b', "c")))
println(getType(((3, "abc"), (4, "xyz"))))
println(getType(((Some('b'), 3), (Some('a'), 4))))
//println(getType(((Some('b'), 3), (None, 4))))
println
}
object testFuncs {
def f1(x: Int): Int = 2 * x
println(getType(f1 _))
println(getType(f1(2)))
val f2 = (x: Int) => 2 * x
println(getType(f2))
println(getType(f2(2)))
val f3 = (x: Int) => (y: Int) => x + y
println(getType(f3))
println(getType(f3(2)))
println(getType(f3(2)(2)))
def f4(b: Boolean, c: List[Char], i: Int): Int = i
println(getType(f4 _))
def f5(f: Int => Int, x: Int) = f(x)
println(getType(f5 _))
println(getType(f5(f1, 1)))
println
}
class Foo {
class Bar(x: Int)
}
object foo extends Foo
package pkg1 {
class C1
object c1 extends C1
}
object testClasses {
/*
case object FooRep extends TypeRep[Foo] {
override def toString = "Foo"
}
implicit def fooRep[A](x: A)(implicit rep: TypeRep[foo.type]): TypeRep[foo.type] = rep
println(getType(foo))
println(getType(new foo.Bar(0)))
val foo2 = new Foo
println(getType(foo2))
println(getType(new foo2.Bar(1)))
println
println(getType(pkg1.c1))
val c1 = new pkg1.C1
println(getType(c1))
println
*/
}
/**
* @author Stephane Micheloud
* @version 1.0
*/
abstract class TypeRep[A]
object TypeRep {
def getType[A](x: A)(implicit rep: TypeRep[A]): TypeRep[A] = rep
def getType[A](x: Option[A])(implicit rep: TypeRep[A]): TypeRep[Option[A]] = (x match {
case Some(v) => SomeRep(rep)
case None => NoneRep
}).asInstanceOf[TypeRep[Option[A]]]
def getType[A](x: List[A])(implicit rep: TypeRep[A]): TypeRep[List[A]] = (x match {
case h :: t => ListRep(getType(h))
case Nil => NilRep
}).asInstanceOf[TypeRep[List[A]]]
implicit def boolRep: TypeRep[Boolean] = BooleanRep
implicit def byteRep: TypeRep[Byte] = ByteRep
implicit def charRep: TypeRep[Char] = CharRep
implicit def shortRep: TypeRep[Short] = ShortRep
implicit def intRep: TypeRep[Int] = IntRep
implicit def longRep: TypeRep[Long] = LongRep
implicit def floatRep: TypeRep[Float] = FloatRep
implicit def doubleRep: TypeRep[Double] = DoubleRep
implicit def unitRep: TypeRep[Unit] = UnitRep
implicit def stringRep: TypeRep[String] = StringRep
//implicit def noneRep: TypeRep[None.type] = NoneRep//[Nothing](NothingRep.asInstanceOf[TypeRep[Nothing]])
implicit def anyRep: TypeRep[Any] = AnyRep
implicit def nothingRep: TypeRep[Nothing] = NothingRep
implicit def classRep[A](implicit elemrep: TypeRep[A]): TypeRep[Class[A]] =
ClassRep(elemrep)
implicit def someRep[A](implicit elemrep: TypeRep[A]): TypeRep[Some[A]] =
SomeRep(elemrep)
implicit def listRep[A](implicit elemrep: TypeRep[A]): TypeRep[List[A]] =
ListRep(elemrep)
implicit def arrayRep[A](implicit elemrep: TypeRep[A]): TypeRep[Array[A]] =
ArrayRep(elemrep)
implicit def tuple2Rep[A1, A2](implicit _1: TypeRep[A1], _2: TypeRep[A2]): TypeRep[(A1, A2)] =
Tuple2Rep(_1, _2)
implicit def tuple3Rep[A1, A2, A3](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3]): TypeRep[(A1, A2, A3)] =
Tuple3Rep(_1, _2, _3)
implicit def tuple4Rep[A1, A2, A3, A4](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4]): TypeRep[Tuple4[A1, A2, A3, A4]] =
Tuple4Rep(_1, _2, _3, _4)
implicit def tuple5Rep[A1, A2, A3, A4, A5](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4], _5: TypeRep[A5]): TypeRep[Tuple5[A1, A2, A3, A4, A5]] =
Tuple5Rep(_1, _2, _3, _4, _5)
implicit def tuple6Rep[A1, A2, A3, A4, A5, A6](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4], _5: TypeRep[A5], _6: TypeRep[A6]): TypeRep[Tuple6[A1, A2, A3, A4, A5, A6]] =
Tuple6Rep(_1, _2, _3, _4, _5, _6)
implicit def tuple7Rep[A1, A2, A3, A4, A5, A6, A7](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4], _5: TypeRep[A5], _6: TypeRep[A6], _7: TypeRep[A7]): TypeRep[Tuple7[A1, A2, A3, A4, A5, A6, A7]] =
Tuple7Rep(_1, _2, _3, _4, _5, _6, _7)
implicit def tuple8Rep[A1, A2, A3, A4, A5, A6, A7, A8](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4], _5: TypeRep[A5], _6: TypeRep[A6], _7: TypeRep[A7], _8: TypeRep[A8]): TypeRep[Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]] =
Tuple8Rep(_1, _2, _3, _4, _5, _6, _7, _8)
implicit def tuple9Rep[A1, A2, A3, A4, A5, A6, A7, A8, A9](implicit _1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4], _5: TypeRep[A5], _6: TypeRep[A6], _7: TypeRep[A7], _8: TypeRep[A8], _9: TypeRep[A9]): TypeRep[Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]] =
Tuple9Rep(_1, _2, _3, _4, _5, _6, _7, _8, _9)
implicit def func1Rep[A1, B](implicit a1: TypeRep[A1], b: TypeRep[B]): TypeRep[Function1[A1, B]] =
Function1Rep(a1, b)
implicit def func2Rep[A1, A2, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], b: TypeRep[B]): TypeRep[Function2[A1, A2, B]] =
Function2Rep(a1, a2, b)
implicit def func3Rep[A1, A2, A3, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], b: TypeRep[B]): TypeRep[Function3[A1, A2, A3, B]] =
Function3Rep(a1, a2, a3, b)
implicit def func4Rep[A1, A2, A3, A4, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], b: TypeRep[B]): TypeRep[Function4[A1, A2, A3, A4, B]] =
Function4Rep(a1, a2, a3, a4, b)
implicit def func5Rep[A1, A2, A3, A4, A5, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], b: TypeRep[B]): TypeRep[Function5[A1, A2, A3, A4, A5, B]] =
Function5Rep(a1, a2, a3, a4, a5, b)
implicit def func6Rep[A1, A2, A3, A4, A5, A6, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], b: TypeRep[B]): TypeRep[Function6[A1, A2, A3, A4, A5, A6, B]] =
Function6Rep(a1, a2, a3, a4, a5, a6, b)
implicit def func7Rep[A1, A2, A3, A4, A5, A6, A7, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], a7: TypeRep[A7], b: TypeRep[B]): TypeRep[Function7[A1, A2, A3, A4, A5, A6, A7, B]] =
Function7Rep(a1, a2, a3, a4, a5, a6, a7, b)
implicit def func8Rep[A1, A2, A3, A4, A5, A6, A7, A8, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], a7: TypeRep[A7], a8: TypeRep[A8], b: TypeRep[B]): TypeRep[Function8[A1, A2, A3, A4, A5, A6, A7, A8, B]] =
Function8Rep(a1, a2, a3, a4, a5, a6, a7, a8, b)
implicit def func9Rep[A1, A2, A3, A4, A5, A6, A7, A8, A9, B](implicit a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], a7: TypeRep[A7], a8: TypeRep[A8], a9: TypeRep[A9], b: TypeRep[B]): TypeRep[Function9[A1, A2, A3, A4, A5, A6, A7, A8, A9, B]] =
Function9Rep(a1, a2, a3, a4, a5, a6, a7, a8, a9, b)
/*
implicit def objectRep[A <: AnyRef](obj: A)(implicit rep: TypeRep[A]): TypeRep[AnyClass] =
ObjectRep(obj.getClass)
*/
case object BooleanRep extends TypeRep[Boolean] {
override def toString = "Boolean"
}
case object ByteRep extends TypeRep[Byte] {
override def toString = "Byte"
}
case object CharRep extends TypeRep[Char] {
override def toString = "Char"
}
case object ShortRep extends TypeRep[Short] {
override def toString = "Short"
}
case object IntRep extends TypeRep[Int] {
override def toString = "Int"
}
case object LongRep extends TypeRep[Long] {
override def toString = "Long"
}
case object FloatRep extends TypeRep[Float] {
override def toString = "Float"
}
case object DoubleRep extends TypeRep[Double] {
override def toString = "Double"
}
case object UnitRep extends TypeRep[Unit] {
override def toString = "Unit"
}
// case object ClassRep extends TypeRep[AnyClass] {
// override def toString = "Class"
// }
case object StringRep extends TypeRep[String] {
override def toString = "String"
}
case object NoneRep extends TypeRep[None.type] {
override def toString = "None"
}
case object NilRep extends TypeRep[Nil.type] {
override def toString = "Nil"
}
case object AnyRep extends TypeRep[Any] {
override def toString = "Any"
}
case object NothingRep extends TypeRep[Nothing] {
override def toString = "Nothing"
}
@serializable
case class ClassRep[A](elemRep: TypeRep[A]) extends TypeRep[Class[A]] {
override def toString = "Class[" + elemRep + "]"
}
@serializable
case class SomeRep[A](elemRep: TypeRep[A]) extends TypeRep[Some[A]] {
override def toString = "Some[" + elemRep + "]"
}
@serializable
case class NoneRep[A](elemRep: TypeRep[A]) extends TypeRep[Option[A]] {
override def toString = "None[" + elemRep + "]"
}
@serializable
case class ListRep[A](elemRep: TypeRep[A]) extends TypeRep[List[A]] {
override def toString = "List[" + elemRep + "]"
}
@serializable
case class ArrayRep[A](elemRep: TypeRep[A]) extends TypeRep[Array[A]] {
override def toString = "Array[" + elemRep + "]"
}
@serializable
case class Tuple2Rep[A1, A2](_1: TypeRep[A1], _2: TypeRep[A2]) extends TypeRep[(A1, A2)] {
override def toString = "Tuple2[" + _1 + ", " + _2 + "]"
}
@serializable
case class Tuple3Rep[A1, A2, A3](_1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3]) extends TypeRep[Tuple3[A1, A2, A3]] {
override def toString = "Tuple3[" + _1 + ", " + _2 + ", " + _3 + "]"
}
@serializable
case class Tuple4Rep[A1, A2, A3, A4](_1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4]) extends TypeRep[Tuple4[A1, A2, A3, A4]] {
override def toString = "Tuple4[" + _1 + ", " + _2 + ", " + _3 + ", " + _4 + "]"
}
@serializable
case class Tuple5Rep[A1, A2, A3, A4, A5](_1: TypeRep[A1], _2: TypeRep[A2], _3: TypeRep[A3], _4: TypeRep[A4], _5: TypeRep[A5]) extends TypeRep[Tuple5[A1, A2, A3, A4, A5]] {
override def toString = "Tuple5[" + _1 + ", " + _2 + ", " + _3 + ", " + _4 + ", " + _5 + "]"
}
@serializable
case class Tuple6Rep[A1, A2, A3, A4, A5, A6](val _1: TypeRep[A1], val _2: TypeRep[A2], val _3: TypeRep[A3], val _4: TypeRep[A4], val _5: TypeRep[A5], val _6: TypeRep[A6]) extends TypeRep[Tuple6[A1, A2, A3, A4, A5, A6]] {
override def toString = "Tuple6[" + _1 + ", " + _2 + ", " + _3 + ", " + _4 + ", " + _5 + ", " + _6 + "]"
}
@serializable
case class Tuple7Rep[A1, A2, A3, A4, A5, A6, A7](val _1: TypeRep[A1], val _2: TypeRep[A2], val _3: TypeRep[A3], val _4: TypeRep[A4], val _5: TypeRep[A5], val _6: TypeRep[A6], val _7: TypeRep[A7]) extends TypeRep[Tuple7[A1, A2, A3, A4, A5, A6, A7]] {
override def toString = "Tuple7[" + _1 + ", " + _2 + ", " + _3 + ", " + _4 + ", " + _5 + ", " + _6 + ", " + _7 + "]"
}
@serializable
case class Tuple8Rep[A1, A2, A3, A4, A5, A6, A7, A8](val _1: TypeRep[A1], val _2: TypeRep[A2], val _3: TypeRep[A3], val _4: TypeRep[A4], val _5: TypeRep[A5], val _6: TypeRep[A6], val _7: TypeRep[A7], val _8: TypeRep[A8]) extends TypeRep[Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]] {
override def toString = "Tuple8[" + _1 + ", " + _2 + ", " + _3 + ", " + _4 + ", " + _5 + ", " + _6 + ", " + _7 + ", " + _8 + "]"
}
@serializable
case class Tuple9Rep[A1, A2, A3, A4, A5, A6, A7, A8, A9](val _1: TypeRep[A1], val _2: TypeRep[A2], val _3: TypeRep[A3], val _4: TypeRep[A4], val _5: TypeRep[A5], val _6: TypeRep[A6], val _7: TypeRep[A7], val _8: TypeRep[A8], val _9: TypeRep[A9]) extends TypeRep[Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]] {
override def toString = "Tuple9[" + _1 + ", " + _2 + ", " + _3 + ", " + _4 + ", " + _5 + ", " + _6 + ", " + _7 + ", " + _8 + ", " + _9 + "]"
}
@serializable
case class Function1Rep[A1, B](a1: TypeRep[A1], b: TypeRep[B]) extends TypeRep[Function1[A1, B]] {
override def toString = "Function1[" + a1 + ", " + b + "]"
}
@serializable
case class Function2Rep[A1, A2, B](a1: TypeRep[A1], a2: TypeRep[A2], b: TypeRep[B]) extends TypeRep[Function2[A1, A2, B]] {
override def toString = "Function2[" + a1 + ", " + a2 + ", " + b + "]"
}
@serializable
case class Function3Rep[A1, A2, A3, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], b: TypeRep[B]) extends TypeRep[Function3[A1, A2, A3, B]] {
override def toString = "Function3[" + a1 + ", " + a2 + ", " + a3 + ", " + b + "]"
}
@serializable
case class Function4Rep[A1, A2, A3, A4, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], b: TypeRep[B]) extends TypeRep[Function4[A1, A2, A3, A4, B]] {
override def toString = "Function4[" + a1 + ", " + a2 + ", " + a3 + ", " + a4 + ", " + b + "]"
}
@serializable
case class Function5Rep[A1, A2, A3, A4, A5, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], b: TypeRep[B]) extends TypeRep[Function5[A1, A2, A3, A4, A5, B]] {
override def toString = "Function5[" + a1 + ", " + a2 + ", " + a3 + ", " + a4 + ", " + a5 + ", " + b + "]"
}
@serializable
case class Function6Rep[A1, A2, A3, A4, A5, A6, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], b: TypeRep[B]) extends TypeRep[Function6[A1, A2, A3, A4, A5, A6, B]] {
override def toString = "Function6[" + a1 + ", " + a2 + ", " + a3 + ", " + a4 + ", " + a5 + ", " + a6 + ", " + b + "]"
}
@serializable
case class Function7Rep[A1, A2, A3, A4, A5, A6, A7, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], a7: TypeRep[A7], b: TypeRep[B]) extends TypeRep[Function7[A1, A2, A3, A4, A5, A6, A7, B]] {
override def toString = "Function7[" + a1 + ", " + a2 + ", " + a3 + ", " + a4 + ", " + a5 + ", " + a6 + ", " + a7 + ", " + b + "]"
}
@serializable
case class Function8Rep[A1, A2, A3, A4, A5, A6, A7, A8, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], a7: TypeRep[A7], a8: TypeRep[A8], b: TypeRep[B]) extends TypeRep[Function8[A1, A2, A3, A4, A5, A6, A7, A8, B]] {
override def toString = "Function8[" + a1 + ", " + a2 + ", " + a3 + ", " + a4 + ", " + a5 + ", " + a6 + ", " + a7 + ", " + a8 + b + "]"
}
@serializable
case class Function9Rep[A1, A2, A3, A4, A5, A6, A7, A8, A9, B](a1: TypeRep[A1], a2: TypeRep[A2], a3: TypeRep[A3], a4: TypeRep[A4], a5: TypeRep[A5], a6: TypeRep[A6], a7: TypeRep[A7], a8: TypeRep[A8], a9: TypeRep[A9], b: TypeRep[B]) extends TypeRep[Function9[A1, A2, A3, A4, A5, A6, A7, A8, A9, B]] {
override def toString = "Function9[" + a1 + ", " + a2 + ", " + a3 + ", " + a4 + ", " + a5 + ", " + a6 + ", " + a7 + ", " + a8 + ", " + b + "]"
}
/*
@serializable
case class ObjectRep[A](c: Class) extends TypeRep[A] {
override def toString = c.getName
}
*/
}