aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/elna/boot/ast.h4
-rw-r--r--include/elna/boot/type_check.h6
2 files changed, 6 insertions, 4 deletions
diff --git a/include/elna/boot/ast.h b/include/elna/boot/ast.h
index c12d8e8..cf381fc 100644
--- a/include/elna/boot/ast.h
+++ b/include/elna/boot/ast.h
@@ -322,6 +322,10 @@ namespace elna::boot
void visit(literal<bool> *) override;
void visit(literal<std::uint32_t> *) override;
void visit(literal<std::string> *) override;
+
+ protected:
+ /// Passes needing the scope of a block override this.
+ virtual void traverse_block(const block& body);
};
/**
diff --git a/include/elna/boot/type_check.h b/include/elna/boot/type_check.h
index 98db843..3774311 100644
--- a/include/elna/boot/type_check.h
+++ b/include/elna/boot/type_check.h
@@ -276,7 +276,7 @@ namespace elna::boot
static bool is_assignable_from(const type& assignee, const type& assignment);
static bool is_equality_compatible(const type& left, const type& right);
- void visit_and_validate_condition(expression& condition);
+ void validate_condition(const expression& condition);
void check_arguments(const named_expression& reference, const std::vector<type>& arguments,
const argument_rule rule);
void check_parameters_used(const source_position position, const std::string& name,
@@ -292,7 +292,7 @@ namespace elna::boot
type promote_variadic_argument(const expression& argument);
protected:
- void traverse_block(block& body);
+ void traverse_block(const block& body) override;
public:
explicit type_analysis_visitor(symbol_bag bag, const target_info& target);
@@ -309,8 +309,6 @@ namespace elna::boot
void visit(repeat_statement *statement) override;
void visit(while_statement *statement) override;
void visit(if_statement *statement) override;
- void visit(defer_statement *statement) override;
- void visit(block_statement *statement) override;
void visit(record_constructor_expression *expression) override;
void visit(array_constructor_expression *expression) override;
void visit(traits_expression *trait) override;