ERR_N(exp_self(bin)->pos, _("array depths do not match."))
}
if(bin->rhs->exp_type == ae_exp_decl) {
- SET_FLAG(bin->rhs->d.exp_decl.td, late);// ???
if(bin->rhs->d.exp_decl.list->self->array &&
bin->rhs->d.exp_decl.list->self->array->exp)
ERR_N(exp_self(bin)->pos, _("do not provide array for 'xxx @=> declaration'."))
OP_CHECK(opck_new) {
const Exp_Unary* unary = (Exp_Unary*)data;
- SET_FLAG(unary->td, late);
DECL_ON(const Type, t, = check_new_td(env, unary->td))
if(isa(t, env->gwion->type[et_object]) < 0)
ERR_N(exp_self(unary)->pos, _("can't use 'new' on non-object types...\n"))
ERR_N(td_pos(unary->td), _("can't use 'new' on ref type '%s'\n"), t->name)
if(GET_FLAG(t, abstract))
ERR_N(td_pos(unary->td), _("can't use 'new' on abstract type '%s'\n"), t->name)
- UNSET_FLAG(unary->td, late);
if(unary->td->array)
CHECK_BN(check_subscripts(env, unary->td->array, 1))
return t;
OP_EMIT(opem_new) {
const Exp_Unary* unary = (Exp_Unary*)data;
CHECK_BO(emit_instantiate_object(emit, exp_self(unary)->info->type,
- unary->td->array, GET_FLAG(unary->td, late)))
+ unary->td->array, 0))
return emit_gc(emit, -SZ_INT);
}
if(!decl->td->xid)
return no_xid(env, decl);
if(decl->td->xid == insert_symbol("auto")) { // should be better
- SET_FLAG(decl->td, late);
CHECK_BO(scan1_exp(env, exp_self(decl)))
CHECK_BO(scan2_exp(env, exp_self(decl)))
}