}
static OP_EMIT(opem_ptr_assign) {
- emit_add_instr(emit, GWOP_EXCEPT);
+ const Exp_Binary* bin = (Exp_Binary*)data;
+ if(!GET_FLAG(bin->rhs->type, nonnull))
+ emit_add_instr(emit, GWOP_EXCEPT);
return emit_add_instr(emit, instr_ptr_assign);
}
do {
CHECK_OB(check_exp(env, l->self))
if(isa(l->self->type, t_object) > 0) {
- if(!GET_FLAG(l->self->d.exp_decl.td, ref) && !GET_FLAG(udef->type, template))
- ERR_B(l->self->pos, _("In union, Objects must be declared as reference (use '@')"))
-// SET_FLAG(l->self->d.exp_decl.td, ref);
Var_Decl_List list = l->self->d.exp_decl.list;
do SET_FLAG(list->self->value, pure);
while((list = list->next));