static HRESULT compile_const_statement(compile_ctx_t *ctx, const_statement_t *stat) { const_decl_t *decl, *next_decl = stat->decls; do { decl = next_decl; if(lookup_const_decls(ctx, decl->name, FALSE) || lookup_args_name(ctx, decl->name) || lookup_dim_decls(ctx, decl->name)) { FIXME("%s redefined\n", debugstr_w(decl->name)); return E_FAIL; } if(ctx->func->type == FUNC_GLOBAL) { HRESULT hres; hres = compile_expression(ctx, decl->value_expr); if(FAILED(hres)) return hres; hres = push_instr_bstr(ctx, OP_const, decl->name); if(FAILED(hres)) return hres; } next_decl = decl->next; decl->next = ctx->const_decls; ctx->const_decls = decl; } while(next_decl); return S_OK; }
static HRESULT compile_dim_statement(compile_ctx_t *ctx, dim_statement_t *stat) { dim_decl_t *dim_decl = stat->dim_decls; while(1) { if(lookup_dim_decls(ctx, dim_decl->name) || lookup_args_name(ctx, dim_decl->name)) { FIXME("dim %s name redefined\n", debugstr_w(dim_decl->name)); return E_FAIL; } if(!dim_decl->next) break; dim_decl = dim_decl->next; } dim_decl->next = ctx->dim_decls; ctx->dim_decls = stat->dim_decls; ctx->func->var_cnt++; return S_OK; }