diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/syntax/type_of.ml | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/lib/syntax/type_of.ml b/lib/syntax/type_of.ml index b991e43..d0437c9 100644 --- a/lib/syntax/type_of.ml +++ b/lib/syntax/type_of.ml @@ -454,9 +454,15 @@ module Instruction = struct      let report' = Option.map snd variable.index |> Option.value ~default:[] in      let report = List.rev_append report' report in -    match right_expression.empty with -    | true -> report -    | false -> ( +    match +      ( right_expression.empty, +        Get_type.get_type (Lazy.force right_expression.result) ) +    with +    | true, _ +    (* It’s allowed to assign an integer in any kind of variable *) +    | _, Get_type.(Integer) -> +        report +    | false, _ -> (          let var_type = Lazy.from_val (Get_type.ident variable) in          let op1 = arg_of_repr var_type variable.pos in          let op2 = arg_of_repr right_expression.result right_expression.pos in | 
