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 /include | |
| parent | 244449004fb62adbfd43b81e8dfce7500ca4a7e4 (diff) | |
| download | elna-134d3ac4caff6d87c79b0892e57073594cb0064c.tar.gz | |
Remove Pointer and nil support
Diffstat (limited to 'include')
| -rw-r--r-- | include/elna/boot/ast.h | 11 | ||||
| -rw-r--r-- | include/elna/boot/evaluator.h | 2 | ||||
| -rw-r--r-- | include/elna/boot/materialization.h | 6 | ||||
| -rw-r--r-- | include/elna/boot/name_analysis.h | 1 | ||||
| -rw-r--r-- | include/elna/boot/result.h | 16 | ||||
| -rw-r--r-- | include/elna/boot/type_check.h | 8 | ||||
| -rw-r--r-- | include/elna/gcc/elna-generic.h | 1 |
7 files changed, 18 insertions, 27 deletions
diff --git a/include/elna/boot/ast.h b/include/elna/boot/ast.h index e7a77ac..8f8da13 100644 --- a/include/elna/boot/ast.h +++ b/include/elna/boot/ast.h @@ -99,15 +99,9 @@ namespace elna::boot }; template<> - struct literal_type_id<std::nullptr_t> - { - static constexpr int value = 5; - }; - - template<> struct literal_type_id<std::string> { - static constexpr int value = 6; + static constexpr int value = 5; }; template<typename T> @@ -219,7 +213,6 @@ namespace elna::boot virtual void visit(literal<float_literal> *) = 0; virtual void visit(literal<bool> *) = 0; virtual void visit(literal<std::uint32_t> *) = 0; - virtual void visit(literal<std::nullptr_t> *) = 0; virtual void visit(literal<std::string> *) = 0; }; @@ -271,7 +264,6 @@ namespace elna::boot [[noreturn]] void visit(literal<float_literal> *) override; [[noreturn]] void visit(literal<bool> *) override; [[noreturn]] void visit(literal<std::uint32_t> *) override; - [[noreturn]] void visit(literal<std::nullptr_t> *) override; [[noreturn]] void visit(literal<std::string> *) override; }; @@ -321,7 +313,6 @@ namespace elna::boot void visit(literal<float_literal> *) override; void visit(literal<bool> *) override; void visit(literal<std::uint32_t> *) override; - void visit(literal<std::nullptr_t> *) override; void visit(literal<std::string> *) override; }; diff --git a/include/elna/boot/evaluator.h b/include/elna/boot/evaluator.h index 6dc204f..72e1f21 100644 --- a/include/elna/boot/evaluator.h +++ b/include/elna/boot/evaluator.h @@ -97,7 +97,7 @@ namespace elna::boot static std::optional<constant_value> cast_to_char(const constant_value& source_expression); static std::optional<constant_value> cast_to_enumeration(const constant_value& source_expression, const enumeration_type& enumeration, std::size_t target_size); - static std::optional<constant_value> cast_to_pointer(const constant_value& source_expression); + std::optional<constant_value> cast_to_pointer(const constant_value& source_expression) const; public: std::optional<std::size_t> evaluate_index(expression& subject); diff --git a/include/elna/boot/materialization.h b/include/elna/boot/materialization.h index c4abb11..74b4133 100644 --- a/include/elna/boot/materialization.h +++ b/include/elna/boot/materialization.h @@ -30,9 +30,7 @@ namespace elna::boot real_overflow, local_export, local_extern, - field_export, - variable_generic, - field_generic + variable_generic }; materialization_error(const source_position position, kind error_kind); @@ -55,8 +53,6 @@ namespace elna::boot void visit(procedure_declaration *declaration) override; void visit(variable_declaration *declaration) override; - void visit(record_type_expression *expression) override; - void visit(literal<integer_literal> *literal) override; void visit(literal<float_literal> *literal) override; }; diff --git a/include/elna/boot/name_analysis.h b/include/elna/boot/name_analysis.h index 16734cd..62b91b4 100644 --- a/include/elna/boot/name_analysis.h +++ b/include/elna/boot/name_analysis.h @@ -399,7 +399,6 @@ namespace elna::boot void visit(literal<float_literal> *literal) override; void visit(literal<bool> *literal) override; void visit(literal<std::uint32_t> *literal) override; - void visit(literal<std::nullptr_t> *literal) override; void visit(literal<std::string> *literal) override; }; diff --git a/include/elna/boot/result.h b/include/elna/boot/result.h index 540307c..2239413 100644 --- a/include/elna/boot/result.h +++ b/include/elna/boot/result.h @@ -865,6 +865,14 @@ namespace elna::boot template<template<typename, typename> typename C, template<typename> typename Alloc = std::allocator> class constant_aggregate; + struct pointer_literal + { + integer_literal address; + + bool operator==(const pointer_literal& that) const = default; + auto operator<=>(const pointer_literal& that) const = default; + }; + /** * Typed constant value produced by the constant expression evaluator. * @@ -876,7 +884,7 @@ namespace elna::boot float_literal, bool, std::uint32_t, - std::nullptr_t, + pointer_literal, std::string, constant_aggregate<ordered_map>, constant_aggregate<std::vector> @@ -1014,6 +1022,12 @@ struct std::hash<elna::boot::constant_aggregate<elna::boot::ordered_map>> }; template<> +struct std::hash<elna::boot::pointer_literal> +{ + std::size_t operator()(const elna::boot::pointer_literal& key) const noexcept; +}; + +template<> struct std::hash<elna::boot::integer_literal> { std::size_t operator()(const elna::boot::integer_literal& key) const noexcept; diff --git a/include/elna/boot/type_check.h b/include/elna/boot/type_check.h index d9a07b9..98db843 100644 --- a/include/elna/boot/type_check.h +++ b/include/elna/boot/type_check.h @@ -248,15 +248,7 @@ namespace elna::boot }; context ctx; - /** - * Checks whether derived has base in its record parent chain. - * - * Base record type must not be null. Derived record type may be null. - */ - verdict guard_const_laundering() const; - verdict check_exact_match() const; - verdict check_pointer_hatch() const; verdict check_pointer_conversion() const; verdict check_slice_conversion() const; verdict check_array_conversion() const; diff --git a/include/elna/gcc/elna-generic.h b/include/elna/gcc/elna-generic.h index 54f320e..f942f81 100644 --- a/include/elna/gcc/elna-generic.h +++ b/include/elna/gcc/elna-generic.h @@ -89,7 +89,6 @@ namespace elna::gcc void visit(boot::literal<boot::float_literal> *literal) override; void visit(boot::literal<bool> *boolean) override; void visit(boot::literal<std::uint32_t> *character) override; - void visit(boot::literal<std::nullptr_t> *) override; void visit(boot::literal<std::string> *string) override; void visit(boot::traits_expression *trait) override; void visit(boot::binary_expression *expression) override; |
