From 0b252a96b1a69b7724cf3676e6a89c7134f5fe86 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 30 Jun 2010 21:01:28 -0700 Subject: [PATCH] De-duplicate code in get_resolved_ty, make recursive, add a case for tup. --- src/boot/me/type.ml | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/src/boot/me/type.ml b/src/boot/me/type.ml index f8566d8757d..5e7d22eca78 100644 --- a/src/boot/me/type.ml +++ b/src/boot/me/type.ml @@ -1528,42 +1528,23 @@ let process_crate (cx:ctxt) (crate:Ast.crate) : unit = | _ -> bug () "check_auto_tyvar: no slot defn" in - let get_resolved_ty tv id = + let rec get_resolved_ty tv id = let ts = !(resolve_tyvar tv) in match ts with TYSPEC_resolved ([||], ty) -> ty | TYSPEC_exterior tv -> - begin - match !(resolve_tyvar tv) with - TYSPEC_resolved ([||], ty) -> - (Ast.TY_exterior ty) - | _ -> - err (Some id) - "unresolved exterior type in %s (%d)" - (tyspec_to_str ts) (int_of_node id) - end + Ast.TY_exterior (get_resolved_ty tv id) | TYSPEC_mutable tv -> - begin - match !(resolve_tyvar tv) with - TYSPEC_resolved ([||], ty) -> - (Ast.TY_mutable ty) - | _ -> - err (Some id) - "unresolved mutable type in %s (%d)" - (tyspec_to_str ts) (int_of_node id) - end + Ast.TY_mutable (get_resolved_ty tv id) | TYSPEC_vector tv -> - begin - match !(resolve_tyvar tv) with - TYSPEC_resolved ([||], ty) -> - (Ast.TY_vec ty) - | _ -> - err (Some id) - "unresolved vector-element type in %s (%d)" - (tyspec_to_str ts) (int_of_node id) - end + Ast.TY_vec (get_resolved_ty tv id) + + | TYSPEC_tuple tvs -> + Ast.TY_tup + (Array.map + (fun tv -> get_resolved_ty tv id) tvs) | _ -> err (Some id) "unresolved type %s (%d)"