File: ExceptionDecl.sml

package info (click to toggle)
smlsharp 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 123,732 kB
  • sloc: ansic: 16,725; sh: 4,347; makefile: 2,191; java: 742; haskell: 493; ruby: 305; cpp: 284; pascal: 256; ml: 255; lisp: 141; asm: 97; sql: 74
file content (84 lines) | stat: -rw-r--r-- 2,014 bytes parent folder | download | duplicates (2)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
structure ExceptionDecl =
struct
open SMLUnit.Test SMLUnit.Assert

  fun testExceptionDecl () =
      let
        exception Exn1
        exception Exn2 of int
        val _ = (raise Exn1)
                handle Exn1 => () 
                     | _ => fail "NG"
        val _ = (raise Exn2 1)
                handle Exn2 1 => () 
                     | _ => fail "NG"
      in
        ()
      end

  fun testExceptionDeclEq () =
      let
        exception Exn1 of int
        exception Exn2 = Exn1
        val _ = (raise Exn1 1)
                handle Exn2 1 => () 
                     | _ => fail "NG"
      in
        ()
      end

  structure S1 = struct
      exception Exn1 of int
  end

  fun testExceptionDeclEqLongVID () =
      let
        exception Exn1 of int
        exception Exn2 = S1.Exn1
        val _ = (raise S1.Exn1 1)
                handle Exn1 _ => fail "NG"
                     | Exn2 1 => ()
                     | _ => fail "NG"
      in
        ()
      end

  fun testExceptionDeclAnd () =
      let
        exception Exn1
        fun f1 x = (raise x)
                   handle Exn1 => true
                        | _ => false
        exception Exn1
              and Exn2 = Exn1
        val _ = assertFalse (f1 Exn1)
        val _ = assertTrue (f1 Exn2)
      in
        ()
      end


  fun testExceptionDeclCaseOf () =
      let
        exception Exn1
        exception Exn2 of int
        val _ = case Exn1 of
                     Exn1 => ()
                   | _ => fail "NG"
        val _ = case Exn2 1 of
                     Exn2 2 => fail "NG"
                   | Exn2 1 => ()
                   | _ => fail "NG"
      in
        ()
      end

  val tests = TestList [
    Test ("testExceptionDecl", testExceptionDecl),
    Test ("testExceptionDeclEq", testExceptionDeclEq),
    Test ("testExceptionDeclEqLongVID", testExceptionDeclEqLongVID),
    Test ("testExceptionDeclAnd", testExceptionDeclAnd),
    Test ("testExceptionDeclCaseOf", testExceptionDeclCaseOf)
  ]

end