move synth_branch
This commit is contained in:
parent
f9c8d3e2f9
commit
c98eb70a06
1 changed files with 11 additions and 11 deletions
|
@ -444,6 +444,17 @@ and synth_read
|
||||||
let refty = synth_expression tenv ref in
|
let refty = synth_expression tenv ref in
|
||||||
HopixTypes.destruct_reference_type ref.position refty
|
HopixTypes.destruct_reference_type ref.position refty
|
||||||
|
|
||||||
|
and synth_case
|
||||||
|
: HopixTypes.typing_environment -> expression Position.located
|
||||||
|
-> branch Position.located list -> HopixTypes.aty
|
||||||
|
=
|
||||||
|
fun tenv expr branches ->
|
||||||
|
let casety = synth_expression tenv expr in
|
||||||
|
(* Test les branches *)
|
||||||
|
match List.fold_right (synth_branch tenv casety) branches None with
|
||||||
|
| Some branchesty -> branchesty
|
||||||
|
| None -> HopixTypes.type_error expr.position "No types found."
|
||||||
|
|
||||||
and synth_branch
|
and synth_branch
|
||||||
: HopixTypes.typing_environment -> HopixTypes.aty -> branch Position.located
|
: HopixTypes.typing_environment -> HopixTypes.aty -> branch Position.located
|
||||||
-> HopixTypes.aty option -> HopixTypes.aty option
|
-> HopixTypes.aty option -> HopixTypes.aty option
|
||||||
|
@ -458,17 +469,6 @@ and synth_branch
|
||||||
| Some ty' -> check_equal_types e.position ~expected:ty' ~given:given_branch);
|
| Some ty' -> check_equal_types e.position ~expected:ty' ~given:given_branch);
|
||||||
Some given_branch
|
Some given_branch
|
||||||
|
|
||||||
and synth_case
|
|
||||||
: HopixTypes.typing_environment -> expression Position.located
|
|
||||||
-> branch Position.located list -> HopixTypes.aty
|
|
||||||
=
|
|
||||||
fun tenv expr branches ->
|
|
||||||
let casety = synth_expression tenv expr in
|
|
||||||
(* Test les branches *)
|
|
||||||
match List.fold_right (synth_branch tenv casety) branches None with
|
|
||||||
| Some branchesty -> branchesty
|
|
||||||
| None -> HopixTypes.type_error expr.position "No types found."
|
|
||||||
|
|
||||||
and synth_ifthenelse
|
and synth_ifthenelse
|
||||||
: HopixTypes.typing_environment -> expression Position.located
|
: HopixTypes.typing_environment -> expression Position.located
|
||||||
-> expression Position.located -> expression Position.located -> HopixTypes.aty
|
-> expression Position.located -> expression Position.located -> HopixTypes.aty
|
||||||
|
|
Reference in a new issue