diff options
Diffstat (limited to 'tests/pending/run/reify_timeofday.scala')
-rw-r--r-- | tests/pending/run/reify_timeofday.scala | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/pending/run/reify_timeofday.scala b/tests/pending/run/reify_timeofday.scala new file mode 100644 index 000000000..efeb81deb --- /dev/null +++ b/tests/pending/run/reify_timeofday.scala @@ -0,0 +1,42 @@ +import scala.reflect.runtime.universe._ +import scala.tools.reflect.Eval + +object Test extends App { + reify { + 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") + } + }.eval +}
\ No newline at end of file |