diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-07-21 01:55:56 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-07-21 01:55:56 +0200 |
| commit | 44d6e8a27294e5ca7300ab11900011b73d9336d4 (patch) | |
| tree | d21addb0dec93fa8fa376bbd11076b17f3412173 /boot/evaluator.cc | |
| parent | 6b131c925dee7a5f97516edd581e051e08bb52d8 (diff) | |
| download | elna-44d6e8a27294e5ca7300ab11900011b73d9336d4.tar.gz | |
Implement slices
Diffstat (limited to 'boot/evaluator.cc')
| -rw-r--r-- | boot/evaluator.cc | 12 |
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) { |
