diff --git a/src/oberon.c b/src/oberon.c
index 58823246bde98fb0e9ebedd171d7fe24e85659c4..5abb2090477536027219f41e2e0b9e78b69d9ab5 100644 (file)
--- a/src/oberon.c
+++ b/src/oberon.c
@@ -2631,9 +2631,8 @@ oberon_field_list(oberon_context_t * ctx, oberon_type_t * rec, oberon_scope_t *
static void
oberon_type_record_body(oberon_context_t * ctx, oberon_type_t * rec)
{
- oberon_scope_t * modscope = ctx -> mod -> decl;
oberon_scope_t * oldscope = ctx -> decl;
- ctx -> decl = modscope;
+ ctx -> decl = oldscope;
if(ctx -> token == LPAREN)
{
this_scope -> parent = NULL;
this_scope -> parent_type = rec;
- oberon_field_list(ctx, rec, modscope);
+ oberon_field_list(ctx, rec, oldscope);
while(ctx -> token == SEMICOLON)
{
oberon_assert_token(ctx, SEMICOLON);
- oberon_field_list(ctx, rec, modscope);
+ oberon_field_list(ctx, rec, oldscope);
}
rec -> scope = this_scope;
static void
oberon_decl_seq(oberon_context_t * ctx)
{
- if(ctx -> token == CONST)
+ while(ctx -> token >= CONST && ctx -> token <= VAR)
{
- oberon_assert_token(ctx, CONST);
- while(ctx -> token == IDENT)
+ if(ctx -> token == CONST)
{
- oberon_const_decl(ctx);
- oberon_assert_token(ctx, SEMICOLON);
+ oberon_assert_token(ctx, CONST);
+ while(ctx -> token == IDENT)
+ {
+ oberon_const_decl(ctx);
+ oberon_assert_token(ctx, SEMICOLON);
+ }
}
- }
-
- if(ctx -> token == TYPE)
- {
- oberon_assert_token(ctx, TYPE);
- while(ctx -> token == IDENT)
+ else if(ctx -> token == TYPE)
{
- oberon_type_decl(ctx);
- oberon_assert_token(ctx, SEMICOLON);
+ oberon_assert_token(ctx, TYPE);
+ while(ctx -> token == IDENT)
+ {
+ oberon_type_decl(ctx);
+ oberon_assert_token(ctx, SEMICOLON);
+ }
}
- }
-
- if(ctx -> token == VAR)
- {
- oberon_assert_token(ctx, VAR);
- while(ctx -> token == IDENT)
+ else if(ctx -> token == VAR)
{
- oberon_var_decl(ctx);
- oberon_assert_token(ctx, SEMICOLON);
+ oberon_assert_token(ctx, VAR);
+ while(ctx -> token == IDENT)
+ {
+ oberon_var_decl(ctx);
+ oberon_assert_token(ctx, SEMICOLON);
+ }
}
}