let (_typedef : (string, identkind) Common.scoped_h_env ref) =
ref (Common.empty_scoped_h_env ())
-let is_typedef s = if !_handle_typedef || !_always_look_typedef then
+let is_typedef s =
+ if !_handle_typedef || !_always_look_typedef then
(match (Common.optionise (fun () -> Common.lookup_h_env s !_typedef)) with
| Some TypeDefI -> true
| Some IdentI -> false
let new_scope() = Common.new_scope_h _typedef
let del_scope() = Common.del_scope_h _typedef
-let add_typedef s = Common.add_in_scope_h _typedef (s, TypeDefI)
+let add_typedef s =
+ Common.add_in_scope_h _typedef (s, TypeDefI)
let add_ident s = Common.add_in_scope_h _typedef (s, IdentI)
let add_typedef_root s =
-let lexer_reset_typedef () =
+let lexer_reset_typedef saved_typedefs =
begin
- _handle_typedef := true;
- _typedef := Common.empty_scoped_h_env ();
- _lexer_hint := (default_hint ());
+ _handle_typedef := true;
+ (match saved_typedefs with
+ None -> _typedef := Common.empty_scoped_h_env ()
+ | Some t -> _typedef := t);
+ _lexer_hint := (default_hint ());
end
-