diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-10-09 14:43:11 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-10-09 14:43:11 +0200 |
| commit | 134d3ac4caff6d87c79b0892e57073594cb0064c (patch) | |
| tree | e93c73d59ee50f3bdaa073bb5908ae3c74f7a985 /boot/type_check.cc | |
| parent | 244449004fb62adbfd43b81e8dfce7500ca4a7e4 (diff) | |
| download | elna-134d3ac4caff6d87c79b0892e57073594cb0064c.tar.gz | |
Remove Pointer and nil support
Diffstat (limited to 'boot/type_check.cc')
| -rw-r--r-- | boot/type_check.cc | 52 |
1 files changed, 4 insertions, 48 deletions
diff --git a/boot/type_check.cc b/boot/type_check.cc index 31e10f1..797282c 100644 --- a/boot/type_check.cc +++ b/boot/type_check.cc @@ -406,8 +406,7 @@ namespace elna::boot /* * Scaling an offset needs the pointee size, which neither an opaque type - * nor a type parameter has. Only a pointer_type scales; the generic - * Pointer advances byte-wise. + * nor a type parameter has. */ static std::optional<type> find_arithmetic_violation(binary_operator operation, const type& lhs, const type& rhs) @@ -505,45 +504,11 @@ namespace elna::boot } } - assign_check::verdict assign_check::guard_const_laundering() const - { - if (!is_primitive_type(ctx.aliased_assignee, "Pointer")) - { - return verdict::pass; - } - if (const auto ptr = ctx.aliased_assignment.get<pointer_type>(); - ptr != nullptr && resolve_aliases(ptr->base).get<constant_type>() != nullptr) - { - return verdict::reject; - } - if (const auto const_assign = ctx.aliased_assignment.get<constant_type>(); - const_assign != nullptr && is_primitive_type(const_assign->unqualified, "Pointer")) - { - return verdict::reject; - } - return verdict::pass; - } - assign_check::verdict assign_check::check_exact_match() const { return ctx.resolved_assignee == ctx.resolved_assignment ? verdict::accept : verdict::pass; } - assign_check::verdict assign_check::check_pointer_hatch() const - { - if (is_primitive_type(ctx.resolved_assignee, "Pointer") - && is_any_pointer_type(ctx.resolved_assignment)) - { - return verdict::accept; - } - if (is_primitive_type(ctx.resolved_assignment, "Pointer") - && is_any_pointer_type(ctx.resolved_assignee)) - { - return verdict::accept; - } - return verdict::pass; - } - assign_check::verdict assign_check::check_pointer_conversion() const { const std::shared_ptr<pointer_type> assignee_ptr = ctx.resolved_assignee.get<pointer_type>(); @@ -637,11 +602,9 @@ namespace elna::boot bool assign_check::run() { const std::initializer_list assign_handlers = { - &assign_check::guard_const_laundering, &assign_check::check_exact_match, &assign_check::check_slice_conversion, &assign_check::check_array_conversion, - &assign_check::check_pointer_hatch, &assign_check::check_pointer_conversion }; for (const auto handler : assign_handlers) @@ -1153,17 +1116,10 @@ namespace elna::boot } else if (const auto left_pointer = left.get<pointer_type>()) { - if (is_primitive_type(right, "Pointer")) - { - return true; - } - else - { - const std::shared_ptr<pointer_type> right_pointer = right.get<pointer_type>(); + const std::shared_ptr<pointer_type> right_pointer = right.get<pointer_type>(); - return right_pointer != nullptr - && bind_arguments(parameters, bindings, left_pointer->base, right_pointer->base); - } + return right_pointer != nullptr + && bind_arguments(parameters, bindings, left_pointer->base, right_pointer->base); } else if (const auto left_slice = left.get<slice_type>()) { |
