aboutsummaryrefslogtreecommitdiff
path: root/boot/evaluator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'boot/evaluator.cc')
-rw-r--r--boot/evaluator.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/boot/evaluator.cc b/boot/evaluator.cc
index 7eb612b..990f358 100644
--- a/boot/evaluator.cc
+++ b/boot/evaluator.cc
@@ -399,7 +399,8 @@ namespace elna::boot
{
type const resolved = resolve_underlying_type(subject);
- if (is_primitive_type(resolved, "Int"))
+ if (is_primitive_type(resolved, "Int")
+ || resolved.get<enumeration_type>() != nullptr)
{
return target.int_size;
}
@@ -415,6 +416,15 @@ namespace elna::boot
{
return target.float_size;
}
+ else if (is_primitive_type(resolved, "Bool"))
+ {
+ return target.bool_size;
+ }
+ else if (is_primitive_type(resolved, "String")
+ || resolved.get<slice_type>() != nullptr)
+ {
+ return target.pointer_size + target.word_size;
+ }
else if (is_primitive_type(resolved, "Pointer")
|| resolved.get<pointer_type>() != nullptr)
{