rewrite scope implementation

* now there are not extra unused hash tables
 * each variable declaration opens a new scope inside a function
This commit is contained in:
Andrew Kelley
2016-12-01 21:08:12 -05:00
parent c6ace9720c
commit f6cbb73c74
7 changed files with 425 additions and 271 deletions

View File

@@ -817,7 +817,7 @@ static TypeTableEntry *resolve_enum_decl(Context *c, const EnumDecl *enum_decl)
const EnumDecl *enum_def = enum_decl->getDefinition();
if (!enum_def) {
TypeTableEntry *enum_type = get_partial_container_type(c->codegen, c->import,
c->import->scope,
&c->import->decls_scope->base,
ContainerKindEnum, c->source_node, buf_ptr(full_type_name));
c->enum_type_table.put(bare_name, enum_type);
c->decl_table.put(enum_decl, enum_type);
@@ -842,7 +842,7 @@ static TypeTableEntry *resolve_enum_decl(Context *c, const EnumDecl *enum_decl)
if (pure_enum) {
TypeTableEntry *enum_type = get_partial_container_type(c->codegen, c->import,
c->import->scope,
&c->import->decls_scope->base,
ContainerKindEnum, c->source_node, buf_ptr(full_type_name));
c->enum_type_table.put(bare_name, enum_type);
c->decl_table.put(enum_decl, enum_type);
@@ -1002,7 +1002,7 @@ static TypeTableEntry *resolve_record_decl(Context *c, const RecordDecl *record_
TypeTableEntry *struct_type = get_partial_container_type(c->codegen, c->import,
c->import->scope, ContainerKindStruct, c->source_node, buf_ptr(full_type_name));
&c->import->decls_scope->base, ContainerKindStruct, c->source_node, buf_ptr(full_type_name));
c->struct_type_table.put(bare_name, struct_type);
c->decl_table.put(record_decl, struct_type);