summaryrefslogtreecommitdiff
path: root/test/pending/run/reify_timeofday.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2011-12-05 17:00:55 +0100
committerEugene Burmako <xeno.by@gmail.com>2011-12-05 17:00:55 +0100
commit6e9ae187a05b1ca4fe748d8a7b45440a55ceb589 (patch)
treeecf9aadb4d8e122ebc4be30997bc3b52880b2521 /test/pending/run/reify_timeofday.scala
parenta289465c70630719cbd3a74edf5502a156ef83c4 (diff)
downloadscala-6e9ae187a05b1ca4fe748d8a7b45440a55ceb589.tar.gz
scala-6e9ae187a05b1ca4fe748d8a7b45440a55ceb589.tar.bz2
scala-6e9ae187a05b1ca4fe748d8a7b45440a55ceb589.zip
Another test pack for reflection
Also see https://github.com/scala/scala/pull/25.
Diffstat (limited to 'test/pending/run/reify_timeofday.scala')
-rw-r--r--test/pending/run/reify_timeofday.scala48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/pending/run/reify_timeofday.scala b/test/pending/run/reify_timeofday.scala
new file mode 100644
index 0000000000..6bd11b0d30
--- /dev/null
+++ b/test/pending/run/reify_timeofday.scala
@@ -0,0 +1,48 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ class DateError extends Exception
+
+ /** Simulating properties in Scala
+ * (example 4.2.1 in ScalaReference.pdf)
+ */
+ class TimeOfDayVar {
+ private var h, m, s: Int = 0
+
+ def hours = h
+
+ /** A method 'ident_=' is a setter for 'ident'. 'code.ident = ...' will
+ * be translated to a call to 'ident_='
+ */
+ def hours_= (h: Int) =
+ if (0 <= h && h < 24) this.h = h
+ else throw new DateError()
+
+ def minutes = m
+ def minutes_= (m: Int) =
+ if (0 <= m && m < 60) this.m = m
+ else throw new DateError()
+
+ def seconds = s
+ def seconds_= (s: Int) =
+ if (0 <= s && s < 60) this.s = s
+ else throw new DateError()
+ }
+
+ val d = new TimeOfDayVar
+ d.hours = 8; d.minutes = 30; d.seconds = 0
+ try { d.hours = 25 // throws a DateError exception
+ } catch {
+ case de: DateError => println("DateError")
+ case e: Exception => println("Exception")
+ }
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}