Skip to content

Commit

Permalink
Number fields within procedures with a depth-first numbering system
Browse files Browse the repository at this point in the history
  • Loading branch information
gingerBill committed Feb 19, 2025
1 parent 827cd45 commit 0bac34e
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/checker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,10 @@ gb_internal void check_open_scope(CheckerContext *c, Ast *node) {
scope->flags |= ScopeFlag_Type;
break;
}
if (c->decl && c->decl->proc_lit) {
// Number the scopes within a procedure body depth-first
scope->index = c->decl->scope_index++;
}
c->scope = scope;
c->state_flags |= StateFlag_bounds_check;
}
Expand Down
4 changes: 4 additions & 0 deletions src/checker.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ struct DeclInfo {

Array<BlockLabel> labels;

i32 scope_index;

Array<VariadicReuseData> variadic_reuses;
i64 variadic_reuse_max_bytes;
i64 variadic_reuse_max_align;
Expand Down Expand Up @@ -273,6 +275,8 @@ struct Scope {
std::atomic<Scope *> next;
std::atomic<Scope *> head_child;

i32 index; // within a procedure

RwMutex mutex;
StringMap<Entity *> elements;
PtrSet<Scope *> imported;
Expand Down
5 changes: 4 additions & 1 deletion src/name_canonicalization.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,10 @@ gb_internal void write_canonical_entity_name(TypeWriter *w, Entity *e) {
if (s->decl_info != nullptr && s->decl_info->entity) {
Entity *parent = s->decl_info->entity;
write_canonical_parent_prefix(w, parent);
type_writer_append_fmt(w, CANONICAL_TYPE_SEPARATOR "[%d]", e->token.pos.offset);
if (e->scope->index > 0) {
type_writer_append_fmt(w, CANONICAL_TYPE_SEPARATOR "[%d]", e->scope->index);
}
// type_writer_append_fmt(w, CANONICAL_TYPE_SEPARATOR "[%d]", e->token.pos.offset);

goto write_base_name;
} else if ((s->flags & ScopeFlag_File) && s->file != nullptr) {
Expand Down

0 comments on commit 0bac34e

Please sign in to comment.