De-duplicate code in get_resolved_ty, make recursive, add a case for tup.
This commit is contained in:
parent
d2e7c1a5dc
commit
0b252a96b1
1 changed files with 9 additions and 28 deletions
|
@ -1528,42 +1528,23 @@ let process_crate (cx:ctxt) (crate:Ast.crate) : unit =
|
||||||
| _ -> bug () "check_auto_tyvar: no slot defn"
|
| _ -> bug () "check_auto_tyvar: no slot defn"
|
||||||
in
|
in
|
||||||
|
|
||||||
let get_resolved_ty tv id =
|
let rec get_resolved_ty tv id =
|
||||||
let ts = !(resolve_tyvar tv) in
|
let ts = !(resolve_tyvar tv) in
|
||||||
match ts with
|
match ts with
|
||||||
TYSPEC_resolved ([||], ty) -> ty
|
TYSPEC_resolved ([||], ty) -> ty
|
||||||
| TYSPEC_exterior tv ->
|
| TYSPEC_exterior tv ->
|
||||||
begin
|
Ast.TY_exterior (get_resolved_ty tv id)
|
||||||
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
|
|
||||||
|
|
||||||
| TYSPEC_mutable tv ->
|
| TYSPEC_mutable tv ->
|
||||||
begin
|
Ast.TY_mutable (get_resolved_ty tv id)
|
||||||
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
|
|
||||||
|
|
||||||
| TYSPEC_vector tv ->
|
| TYSPEC_vector tv ->
|
||||||
begin
|
Ast.TY_vec (get_resolved_ty tv id)
|
||||||
match !(resolve_tyvar tv) with
|
|
||||||
TYSPEC_resolved ([||], ty) ->
|
| TYSPEC_tuple tvs ->
|
||||||
(Ast.TY_vec ty)
|
Ast.TY_tup
|
||||||
| _ ->
|
(Array.map
|
||||||
err (Some id)
|
(fun tv -> get_resolved_ty tv id) tvs)
|
||||||
"unresolved vector-element type in %s (%d)"
|
|
||||||
(tyspec_to_str ts) (int_of_node id)
|
|
||||||
end
|
|
||||||
|
|
||||||
| _ -> err (Some id)
|
| _ -> err (Some id)
|
||||||
"unresolved type %s (%d)"
|
"unresolved type %s (%d)"
|
||||||
|
|
Loading…
Add table
Reference in a new issue