From c25ba0d8ee9e4e6a0432fba2e8606c7e0a35d1cd Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 14 Oct 2008 21:10:31 +0000 Subject: added a scope debug flag --- src/core/scope.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/core') diff --git a/src/core/scope.c b/src/core/scope.c index 0c65c1d..1eaac8f 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -36,6 +36,9 @@ #include "scope.h" #include "symbol.h" +#define _SCOPE_ERROR(m) \ + ERROR("%s: Scope error", m) + Scope* scope_new(Hash *p_hash_syms) { Scope *p_scope = malloc(sizeof(Scope)); @@ -58,14 +61,42 @@ scope_delete(Scope *p_scope) { void scope_up(Scope *p_scope) { +#ifdef EXTRA_CHECKS + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#elif DEBUG_SCOPE_UPDOWN + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#endif stack_push(p_scope->p_stack_scopes, hash_new(24)); +#ifdef DEBUG_SCOPE_UPDOWN + printf("SCOPE UPPED %d => %d\n", + i_before, + (int) stack_size(p_scope->p_stack_scopes)); +#endif /* DEBUG_SCOPE_UPDOWN */ +#ifdef EXTRA_CHECKS + if (i_before >= (int) stack_size(p_scope->p_stack_scopes)) + _SCOPE_ERROR("Scope should be higher"); +#endif /* EXTRA_CHECKS */ } void scope_down(Scope *p_scope) { +#ifdef EXTRA_CHECKS + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#elif DEBUG_SCOPE_UPDOWN + int i_before = (int) stack_size(p_scope->p_stack_scopes); +#endif Hash *p_hash_syms = stack_pop(p_scope->p_stack_scopes); hash_iterate(p_hash_syms, symbol_cleanup_hash_syms_cb); hash_delete(p_hash_syms); +#ifdef DEBUG_SCOPE_UPDOWN + printf("SCOPE DOWNED %d => %d\n", + i_before, + (int) stack_size(p_scope->p_stack_scopes)); +#endif /* DEBUG_SCOPE_UPDOWN */ +#ifdef EXTRA_CHECKS + if (i_before <= (int) stack_size(p_scope->p_stack_scopes)) + _SCOPE_ERROR("Scope should be lower"); +#endif /* EXTRA_CHECKS */ } static Hash* -- cgit v1.2.3