pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:11307:    pop_stack();    free_type(res);    return NULL;    }    pop_stack();    }    type_stack_mark();    push_finished_type(res);    push_type_attribute((struct pike_string *)fun_type->car);    free_type(res); -  return pop_unfinished_type(); +  res = pop_unfinished_type(); +  break;       case T_OR:    res = lower_new_check_call(fun_type->car, arg_type, flags, sval CHECK_CALL_ARGS);    if (!res) {    res = lower_new_check_call(fun_type->cdr, arg_type, flags, sval CHECK_CALL_ARGS);    break;    }    tmp = lower_new_check_call(fun_type->cdr, arg_type, flags, sval CHECK_CALL_ARGS);    if (!tmp) break;    res = or_pike_types(tmp2 = res, tmp, 1);
pike.git/src/pike_types.cmod:11470:    res = lower_new_check_call(tmp, arg_type, flags, sval CHECK_CALL_ARGS);    free_type(tmp);    break;       case PIKE_T_TRANSITIVE:   #if 0    /* NB: In theory we could use expand_transitive() here and recurse,    * but this leads to a combinatorial explosion.    */    tmp = expand_transitive(fun_type, a_markers, 0); -  tmp2 = lower_new_check_call(tmp, arg_type, flags, sval CHECK_CALL_ARGS); +  res = lower_new_check_call(tmp, arg_type, flags, sval CHECK_CALL_ARGS);    free_type(tmp);   #else    /* There are two cases here; arg_type can belong to either    * fun_type->car, or (if fun_type->car can return here) the    * second argument to fun_type->cdr (or both).    */    tmp = new_get_return_type(fun_type->car, 0);    if (tmp) {    tmp2 = low_new_check_call(fun_type->cdr, tmp, 0, NULL);    free_type(tmp);
pike.git/src/pike_types.cmod:11512:    }    }       if (!tmp) return NULL;       type_stack_mark();    push_finished_type(fun_type->cdr);    push_finished_type(tmp);    push_type(PIKE_T_TRANSITIVE);    free_type(tmp); -  tmp2 = pop_unfinished_type(); +  res = pop_unfinished_type();   #endif -  return tmp2; +  break;       case PIKE_T_FUNCTION:    case T_MANY:    /* Special case to detect workarounds for the old    * function call checker.    */    tmp = NULL;    if (arg_type &&    ((arg_type->type != T_NOT) ||    (arg_type->car->type != T_MIXED)) &&