Fix constraining

This commit is contained in:
Ayaz Hafiz 2022-11-21 18:15:19 -06:00
parent e2b30e5301
commit 25693f8ffe
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58

View file

@ -483,12 +483,22 @@ pub fn constrain_expr(
constraints.exists(vars, and_constraint)
}
Expr::Crash { msg, ret_var } => {
let expected_msg = Expected::ForReason(Reason::CrashArg, str_type(), msg.region);
let expected_ret = constraints.push_expected_type(expected);
let str_index = constraints.push_type(types, Types::STR);
let expected_msg = constraints.push_expected_type(Expected::ForReason(
Reason::CrashArg,
str_index,
msg.region,
));
let msg_is_str = constrain_expr(constraints, env, msg.region, &msg.value, expected_msg);
let magic =
constraints.equal_types_var(*ret_var, expected_ret, Category::Crash, region);
let msg_is_str = constrain_expr(
types,
constraints,
env,
msg.region,
&msg.value,
expected_msg,
);
let magic = constraints.equal_types_var(*ret_var, expected, Category::Crash, region);
let and = constraints.and_constraint([msg_is_str, magic]);