diff options
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index f0353e25b..b7318ca1d 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -2668,6 +2668,22 @@ void check_binary_expr(CheckerContext *c, Operand *x, Ast *node, Type *type_hint return; } + if (op.kind == Token_Quo || op.kind == Token_QuoEq) { + Type *bt = base_type(x->type); + if (bt->kind == Type_Basic) switch (bt->Basic.kind) { + case Basic_complex64: add_package_dependency(c, "runtime", "quo_complex64"); break; + case Basic_complex128: add_package_dependency(c, "runtime", "quo_complex128"); break; + case Basic_quaternion128: add_package_dependency(c, "runtime", "quo_quaternion128"); break; + case Basic_quaternion256: add_package_dependency(c, "runtime", "quo_quaternion256"); break; + } + } else if (op.kind == Token_Mul || op.kind == Token_MulEq) { + Type *bt = base_type(x->type); + if (bt->kind == Type_Basic) switch (bt->Basic.kind) { + case Basic_quaternion128: add_package_dependency(c, "runtime", "mul_quaternion128"); break; + case Basic_quaternion256: add_package_dependency(c, "runtime", "mul_quaternion256"); break; + } + } + x->mode = Addressing_Value; } |