aboutsummaryrefslogtreecommitdiff
path: root/boot/evaluator.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-07-21 01:55:56 +0200
committerEugen Wissner <belka@caraus.de>2026-07-21 01:55:56 +0200
commit44d6e8a27294e5ca7300ab11900011b73d9336d4 (patch)
treed21addb0dec93fa8fa376bbd11076b17f3412173 /boot/evaluator.cc
parent6b131c925dee7a5f97516edd581e051e08bb52d8 (diff)
downloadelna-44d6e8a27294e5ca7300ab11900011b73d9336d4.tar.gz
Implement slices
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)
{