aboutsummaryrefslogtreecommitdiff
path: root/src/checker/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <ginger.bill.22@gmail.com>2016-08-05 00:54:05 +0100
committergingerBill <ginger.bill.22@gmail.com>2016-08-05 00:54:05 +0100
commit2aaef48c5c362bb3e04d0c9cd1e722e21b3755e5 (patch)
treef7b99cda983ce6226384127672abea74459b05b3 /src/checker/checker.cpp
parent19aea1f19895b035e8abb424987f48df6bc52c53 (diff)
String support
Diffstat (limited to 'src/checker/checker.cpp')
-rw-r--r--src/checker/checker.cpp37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/checker/checker.cpp b/src/checker/checker.cpp
index 53ce8ac18..98e371e33 100644
--- a/src/checker/checker.cpp
+++ b/src/checker/checker.cpp
@@ -219,6 +219,23 @@ void destroy_scope(Scope *scope) {
// NOTE(bill): No need to free scope as it "should" be allocated in an arena (except for the global scope)
}
+void add_scope(Checker *c, AstNode *node, Scope *scope) {
+ GB_ASSERT(node != NULL);
+ GB_ASSERT(scope != NULL);
+ map_set(&c->info.scopes, hash_pointer(node), scope);
+}
+
+
+void check_open_scope(Checker *c, AstNode *stmt) {
+ GB_ASSERT(is_ast_node_stmt(stmt) || stmt->kind == AstNode_ProcType);
+ Scope *scope = make_scope(c->context.scope, c->allocator);
+ add_scope(c, stmt, scope);
+ c->context.scope = scope;
+}
+
+void check_close_scope(Checker *c) {
+ c->context.scope = c->context.scope->parent;
+}
void scope_lookup_parent_entity(Scope *s, String name, Scope **scope, Entity **entity) {
u64 key = hash_string(name);
@@ -359,7 +376,6 @@ void init_checker(Checker *c, Parser *parser) {
c->sizes.word_size = 8;
c->sizes.max_align = 8;
-
gb_array_init(c->procedure_stack, a);
gb_array_init(c->procedures, a);
@@ -487,25 +503,6 @@ void check_procedure_later(Checker *c, AstFile *file, Token token, DeclInfo *dec
gb_array_append(c->procedures, info);
}
-
-
-void add_scope(Checker *c, AstNode *node, Scope *scope) {
- GB_ASSERT(node != NULL);
- GB_ASSERT(scope != NULL);
- map_set(&c->info.scopes, hash_pointer(node), scope);
-}
-
-
-void check_open_scope(Checker *c, AstNode *statement) {
- Scope *scope = make_scope(c->context.scope, c->allocator);
- add_scope(c, statement, scope);
- c->context.scope = scope;
-}
-
-void check_close_scope(Checker *c) {
- c->context.scope = c->context.scope->parent;
-}
-
void check_add_deferred_stmt(Checker *c, AstNode *stmt) {
GB_ASSERT(stmt != NULL);
GB_ASSERT(is_ast_node_stmt(stmt));