|
@@ -439,7 +439,7 @@ module Instruction = struct
|
|
T.assignation_operator ->
|
|
T.assignation_operator ->
|
|
expression ->
|
|
expression ->
|
|
t =
|
|
t =
|
|
- fun pos variable _ expression ->
|
|
|
|
|
|
+ fun pos variable op expression ->
|
|
let right_expression, report = expression in
|
|
let right_expression, report = expression in
|
|
|
|
|
|
let report' = Option.map snd variable.index |> Option.value ~default:[] in
|
|
let report' = Option.map snd variable.index |> Option.value ~default:[] in
|
|
@@ -447,13 +447,14 @@ module Instruction = struct
|
|
let report = List.rev_append report' report in
|
|
let report = List.rev_append report' report in
|
|
match
|
|
match
|
|
( right_expression.empty,
|
|
( right_expression.empty,
|
|
|
|
+ op,
|
|
Get_type.get_type (Lazy.force right_expression.result) )
|
|
Get_type.get_type (Lazy.force right_expression.result) )
|
|
with
|
|
with
|
|
- | true, _
|
|
|
|
|
|
+ | true, _, _
|
|
(* It’s allowed to assign an integer in any kind of variable *)
|
|
(* It’s allowed to assign an integer in any kind of variable *)
|
|
- | _, Get_type.(Integer) ->
|
|
|
|
|
|
+ | _, T.Eq', Get_type.(Integer) ->
|
|
report
|
|
report
|
|
- | false, _ -> (
|
|
|
|
|
|
+ | false, _, _ -> (
|
|
let var_type = Lazy.from_val (Get_type.ident variable) in
|
|
let var_type = Lazy.from_val (Get_type.ident variable) in
|
|
let op1 = arg_of_repr var_type variable.pos in
|
|
let op1 = arg_of_repr var_type variable.pos in
|
|
let op2 = arg_of_repr right_expression.result right_expression.pos in
|
|
let op2 = arg_of_repr right_expression.result right_expression.pos in
|