blob: 5d7ba32c48d41f2ddb4f06a0d8597f7f2d7529d2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
package org.perl8
package object test {
import language.implicitConversions
implicit def intToPlan (p: Int): Plan =
NumericPlan(p)
implicit def stringToMessage (s: String): Message =
new HasMessage(s)
sealed trait Plan {
val plan: Int
val skipAll: Boolean
val message: Option[String]
}
case class NumericPlan (plan: Int) extends Plan {
val skipAll = false
val message = None
}
case object NoPlan extends Plan {
val plan = 0
val skipAll = false
val message = None
}
case class SkipAll (msg: String) extends Plan {
val plan = 0
val skipAll = true
val message = Some(msg)
}
case object SkipAllNoMessage extends Plan {
val plan = 0
val skipAll = true
val message = None
}
object SkipAll {
def apply () = SkipAllNoMessage
}
sealed trait Message
case class HasMessage (contents: String) extends Message
case object NoMessage extends Message
implicit def messageToOption (message: Message): Option[String] =
message match {
case HasMessage(x) => Some(x)
case NoMessage => None
}
implicit def optionToMessage (option: Option[String]): Message =
option match {
case Some(x) => HasMessage(x)
case None => NoMessage
}
case class BailOutException (message: String)
extends RuntimeException(message)
}
|