aboutsummaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
Diffstat (limited to 'boot')
-rw-r--r--boot/semantic.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/boot/semantic.cc b/boot/semantic.cc
index d8a3c41..3486830 100644
--- a/boot/semantic.cc
+++ b/boot/semantic.cc
@@ -749,6 +749,17 @@ namespace elna::boot
case binary_operator::greater_equal:
expression->type_decoration = lookup_primitive_type("Bool");
break;
+ case binary_operator::subtraction:
+ if (expression->lhs().type_decoration.get<pointer_type>()
+ && expression->rhs().type_decoration.get<pointer_type>())
+ {
+ expression->type_decoration = lookup_primitive_type("Int");
+ }
+ else
+ {
+ expression->type_decoration = expression->lhs().type_decoration;
+ }
+ break;
default:
expression->type_decoration = expression->lhs().type_decoration;
break;