Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/sml-mode/testcases.sml
ViewVC logotype

Diff of /sml/trunk/sml-mode/testcases.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 886, Thu Jul 19 20:16:51 2001 UTC revision 887, Thu Jul 19 20:18:58 2001 UTC
# Line 2  Line 2 
2  (* monnier@cs.yale.edu *)  (* monnier@cs.yale.edu *)
3    
4  (let val a = 1 val b = 2  (let val a = 1 val b = 2
5       val c = 3       val c = 3
6   in 1   in 1
7   end)   end);
8    
9  (x := 1;  (x := 1;
10   case x of   case x of
11       FOO => 1       FOO => 1
12     | BAR => 2;     | BAR =>
13         2;
14   case x of   case x of
15       FOO => 1       FOO => 1
16     | BAR =>     | BAR =>
17       (case y of       (case y of
18            FAR => 2            FAR => 2
19          | FRA => 3);          | FRA => 3);
20   hello)   hello);
21    
22  let datatype foobar  let datatype foobar
23        = FooB of int        = FooB of int
24        | FooA of bool * int        | FooA of bool * int
   
25      datatype foo = FOO | BAR of baz      datatype foo = FOO | BAR of baz
26           and baz = BAZ | QUUX of foo           and baz = BAZ | QUUX of foo
27    
28      datatype foo = FOO      datatype foo = FOO
29                   | BAR of baz                   | BAR of baz
30           and baz = BAZ        and baz = BAZ                     (* fixindent *)
31                   | QUUX of foo                   | QUUX of foo
32          and b = g
33    
34      datatype foo = datatype M.foo      datatype foo = datatype M.foo
35      val _ = 42      val _ = 42 val x = 5
36    
37      signature S = S' where type foo = int      signature S = S' where type foo = int
38      val _ = 42      val _ = 42
39    
40        val foo = [
41            "blah"
42          , let val x = f 42 in g (x,x,44) end
43        ]
44    
45      val foo = [ "blah"      val foo = [ "blah"
46                , let val x = f 42 in g (x,x,44) end                , let val x = f 42 in g (x,x,44) end
47                , foldl (fn ((p,q),s) => g (p,q,Vector.length q) ^ ":" ^ s)                , foldl (fn ((p,q),s) => g (p,q,Vector.length q) ^ ":" ^ s)
# Line 46  Line 52 
52      fun foo (true::rest)      fun foo (true::rest)
53        = 1 + 2 * foo rest        = 1 + 2 * foo rest
54        | foo (false::rest)        | foo (false::rest)
55        = 0 + 2 * foo rest        = let val _ = 1 in 2 end
56            + 2 * foo rest
57    
58      val x = if foo then      val x = if foo then
59                  1                  1
# Line 59  Line 66 
66              else if foo              else if foo
67              then 2              then 2
68              else 3              else 3
69    
70      ; val yt = 4
71    
72  in  in
73      if a then b else c;      if a then b else c;
74      case M.find(m,f)      case M.find(m,f)
# Line 69  Line 79 
79      (case foo      (case foo
80        of a => f        of a => f
81       )       )
82  end  end;
83    
84  let  let
85  in a;  in a;
86     b     foo("(*")
87  end     * 2;
88    end;
89    
90  let  let
91  in a  in a
92  ; b  ; b
93  end  end;
94    
95  let  let
96  in  in
97      a      a
98    ; b    ; b
99  end  end;
100    
101  let  let
102  in if a then  in if a then
103         b         b
104     else     else
105         c         c
106  end  end;
107    
108  let  let
109  in case a of  in case a of
     (* Do I really want that ? *)  
110      F => 1      F => 1
111    | D => 2    | D => 2
112  end  end;
113    
114    let
115    in case a
116     of F => 1
117      | D => 2
118    end;
119    
120  let  let
121  in if a then b else  in if a then b else
122     c     c
123  end  end;
124    
125  structure Foo = struct  structure Foo = struct
126  val x = 1  val x = 1
# Line 287  Line 303 
303                            known=true, isrec=NONE}                            known=true, isrec=NONE}
304                 val argsI =                 val argsI =
305                     (map (fn lv => (lv, getLty(F.VAR lv))) fvbIs) @ args                     (map (fn lv => (lv, getLty(F.VAR lv))) fvbIs) @ args
                (* val argI = mklv()  
                   val argsI = (argI, LT.ltc_str(map (getLty o F.VAR) fvbIs))::args  
   
                   val (_,bodyI) = foldl (fn (lv,(n,le)) =>  
                                             (n+1, F.SELECT(F.VAR argI, n, lv, le)))  
                                         (0, bodyI) fvbIs *)  
306                 val fdecI as (_,fI,_,_) = FU.copyfdec(fkI,f,argsI,bodyI)                 val fdecI as (_,fI,_,_) = FU.copyfdec(fkI,f,argsI,bodyI)
307                 val _ = addpurefun fI                 val _ = addpurefun fI
308    
# Line 354  Line 364 
364                 (* tfdecI *)                 (* tfdecI *)
365                 val tfkI = {inline=F.IH_ALWAYS}                 val tfkI = {inline=F.IH_ALWAYS}
366                 val argsI = map (fn (v,k) => (cplv v, k)) args                 val argsI = map (fn (v,k) => (cplv v, k)) args
367                 val tmap = ListPair.map (fn (a1,a2) =>                 (* val tmap = ListPair.map (fn (a1,a2) =>
368                                          (#1 a1, LT.tcc_nvar(#1 a2)))                  *                               (#1 a1, LT.tcc_nvar(#1 a2)))
369                                         (args, argsI)                  *                              (args, argsI) *)
370                 val bodyI = FU.copy tmap M.empty                 val bodyI = FU.copy tmap M.empty
371                                     (F.LET(fvbIs, F.TAPP(F.VAR tfE, map #2 tmap),                                     (F.LET(fvbIs, F.TAPP(F.VAR tfE, map #2 tmap),
372                                            bodyI))                                            bodyI))

Legend:
Removed from v.886  
changed lines
  Added in v.887

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0