Exp_Unary *unary = (Exp_Unary *)data;
const Array_Sub array = unary->ctor.td->array;
DECL_ON(const Type, t, = known_type(env, unary->ctor.td));
- if(array) {
+ if(array && !unary->ctor.exp) {
const Type base = array_base(t);
if(GET_FLAG(base, abstract)) CHECK_BN(abstract_array(env, array));
}
}
if(bin->rhs->exp_type == ae_exp_call && !bin->rhs->d.exp_call.tmpl)
bin->rhs->d.exp_call.other = bin->lhs;
- const m_uint scope = env->scope->depth;
CHECK_OO(check_exp(env, bin->rhs));
if (is_auto) {
assert(bin->rhs->type == bin->lhs->type);
ERR_B(decl->td->pos, _("arrays with no expressions should be declared `late`"));
if (GET_FLAG(decl->td, late) && decl->td->array->exp)
ERR_B(decl->td->array->exp->pos, _("late array should have no size"));
- if (GET_FLAG(base, abstract)) CHECK_BB(abstract_array(env, decl->td->array));
+ if (!decl->args && GET_FLAG(base, abstract)) CHECK_BB(abstract_array(env, decl->td->array));
}
const Value v = vd->value =
vd->value ?: new_value(env, t, s_name(vd->xid), vd->pos);