diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-07-24 18:11:43 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-07-24 18:11:43 +0200 |
| commit | 5dc1e4c991efae2e0dd96b59bc57b2cd81a8c5fb (patch) | |
| tree | f18cee693c72e6d7bfa2684bb522e52cd1a08033 /include | |
| parent | bb4f474cb2247e0e314beab5d7d72e673ff4e8b6 (diff) | |
| download | elna-5dc1e4c991efae2e0dd96b59bc57b2cd81a8c5fb.tar.gz | |
Check the compound statement condition is a boolean
Diffstat (limited to 'include')
| -rw-r--r-- | include/elna/boot/type_check.h | 8 | ||||
| -rw-r--r-- | include/elna/gcc/elna1.h | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/include/elna/boot/type_check.h b/include/elna/boot/type_check.h index e500007..f95c72b 100644 --- a/include/elna/boot/type_check.h +++ b/include/elna/boot/type_check.h @@ -96,7 +96,8 @@ namespace elna::boot enum class kind { record_base, - for_loop + for_loop, + condition }; type_kind_error(const source_position position, kind type_kind, const type& actual); @@ -227,6 +228,8 @@ namespace elna::boot static bool check_unresolved_symbol(const std::shared_ptr<alias_type>& alias, std::vector<std::string>& path); + void visit_and_validate_condition(expression& condition); + public: explicit type_analysis_visitor(symbol_bag bag, const target_info& target); @@ -239,6 +242,9 @@ namespace elna::boot void visit(procedure_call *call) override; void visit(case_statement *statement) override; void visit(for_statement *statement) override; + void visit(repeat_statement *statement) override; + void visit(while_statement *statement) override; + void visit(if_statement *statement) override; void visit(record_constructor_expression *expression) override; void visit(array_constructor_expression *expression) override; void visit(slicing_expression *expression) override; diff --git a/include/elna/gcc/elna1.h b/include/elna/gcc/elna1.h index 34cf091..580526a 100644 --- a/include/elna/gcc/elna1.h +++ b/include/elna/gcc/elna1.h @@ -27,7 +27,7 @@ enum elna_tree_index ELNA_TI_FLOAT_TYPE, ELNA_TI_BOOL_TRUE, ELNA_TI_BOOL_FALSE, - ELNA_TI_POINTER_NIL, + ELNA_TI_WORD_ONE, ELNA_TI_MAX }; @@ -43,7 +43,8 @@ extern std::vector<std::string> elna_include_dirs; #define elna_float_type_node elna_global_trees[ELNA_TI_FLOAT_TYPE] #define elna_bool_true_node elna_global_trees[ELNA_TI_BOOL_TRUE] #define elna_bool_false_node elna_global_trees[ELNA_TI_BOOL_FALSE] -#define elna_pointer_nil_node elna_global_trees[ELNA_TI_POINTER_NIL] +#define elna_word_one_node elna_global_trees[ELNA_TI_WORD_ONE] + /* Language-dependent contents of a type. */ struct GTY (()) lang_type { |
