aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-01-04 18:04:12 +0000
committergingerBill <bill@gingerbill.org>2020-01-04 18:04:12 +0000
commit5c7d6fcfd08a6e99e6e493e7adc3ef51d10e2fcc (patch)
tree71f00a98bbfd5f43002d9e7fb65911a53590edaf /src/check_expr.cpp
parent5ae924f9886b9bb922499fa1b964bad48363db08 (diff)
Improve minimum dependency for complex numbers and quaternion numbers.
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp16
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;
}