Source

ocamlspot / spoteval.ml

Diff from to

spoteval.ml

   module Binding = struct
     type t = binding
     let error () = failwith "Binding: premature"
-    let with_check f t = 
-      match !t with
+    let with_check f t = match !t with
       | None -> error ()
       | Some str -> f str
     let domain = with_check (List.map fst) 
           :: !items
       in
       Predef.build_initial_env 
-        (fun id _ _ -> add_predefined Kind.Type id)
+        (fun id decl _ -> 
+          add_predefined Kind.Type id;
+          match decl.Types.type_kind with
+          | Types.Type_abstract -> ()
+          | Types.Type_record (l, _) -> List.iter (fun (id, _, _) -> add_predefined Kind.Type id) l
+          | Types.Type_variant l     -> List.iter (fun (id, _, _) -> add_predefined Kind.Type id) l
+        )
         (fun id _ _ -> add_predefined Kind.Exception id) 
         ();
       List.iter (fun (_, id) -> add_predefined Kind.Value id) Predef.builtin_values;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.