pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:7428:    }    add_ref(a);    return a;       case T_ASSIGN:    {    int m = CAR_TO_INT(a);    ret = low_match_types(a->cdr, b, flags);    if(ret && (!a_markers[m] || b->type != T_VOID))    { +  struct pike_type *filtered_b = NULL; +    #ifdef PIKE_DEBUG    if ((m < 0) || (m > 9)) {    Pike_fatal("marker out of range: $%d\n", m);    }   #endif /* PIKE_DEBUG */       type_stack_mark();    push_finished_type_with_markers(b, b_markers, 0);    tmp = pop_unfinished_type();    -  +  filtered_b = type_binop(PT_BINOP_AND, +  tmp, a->cdr, +  PT_FLAG_CMP_NULLABLE, +  PT_FLAG_CMP_NULLABLE, +  PT_FLAG_REMAP_INHIBIT); +  free_type(tmp); +  tmp = filtered_b; +     type_stack_mark();    low_or_pike_types(a_markers[m], tmp, 0);    if(a_markers[m]) free_type(a_markers[m]);    free_type(tmp);    a_markers[m] = pop_unfinished_type();      #ifdef PIKE_TYPE_DEBUG    if (l_flag>2) {    fprintf(stderr, "%*sa_markers[%d]=",    indent*2, "", m);
pike.git/src/pike_types.cmod:7568:    }    add_ref(a);    return a;       case T_ASSIGN:    {    int m = CAR_TO_INT(b);    ret = low_match_types(a, b->cdr, flags);    if(ret && (!b_markers[m] || a->type != T_VOID))    { +  struct pike_type *filtered_a = NULL; +     type_stack_mark();    push_finished_type_with_markers(a, a_markers, 0);    tmp=pop_unfinished_type();    -  +  filtered_a = type_binop(PT_BINOP_AND, +  tmp, b->cdr, +  PT_FLAG_CMP_NULLABLE, +  PT_FLAG_CMP_NULLABLE, +  PT_FLAG_REMAP_INHIBIT); +  free_type(tmp); +  tmp = filtered_a; +     type_stack_mark();    low_or_pike_types(b_markers[m], tmp, 0);    if(b_markers[m]) free_type(b_markers[m]);    free_type(tmp);    b_markers[m] = pop_unfinished_type();   #ifdef PIKE_TYPE_DEBUG    if (l_flag>2) {    fprintf(stderr, "%*sb_markers[%d]=",    indent*2, "", m);    simple_describe_type(b_markers[m]);