pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:5317:    if (!bi->car) {    /* Common case */    tmp = NULL;    } else {    /* FIXME: Use implicit nullable only for legacy types. */    tmp = low_type_binop(PT_BINOP_MINUS, bi->car, ai->car, remap,    bvoidable | PT_FLAG_CMP_NULLABLE | PT_FLAG_CMP_INSEPARABLE,    avoidable | PT_FLAG_CMP_NULLABLE | PT_FLAG_CMP_INSEPARABLE,    remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS);    if (tmp) { +  if ((ai->car == void_type_string) && (tmp != bi->car) && +  (aflags & PT_FLAG_CMP_IGNORE_EXTRA_ARGS)) { +  /* End of argument list for a, and it is valid to end the +  * argument list here (void matched), and a implicitly +  * ignores any further arguments. +  */ +  free_type(tmp); +  tmp = NULL; +  } else {    push_finished_type(ai);    /* FIXME: What if tmp differs due to remapping? */    if (tmp != bi->car) {    /* Some overlap. */    push_finished_type(bi);    push_type(T_NOT);    push_type(T_AND);    }    free_type(tmp);    return pop_unfinished_type();    }    } -  +  }       /* Advance to the next argument. */    if (ai->type == T_FUNCTION) {    ai = ai->cdr;    }    if (bi->type == T_FUNCTION) {    bi = bi->cdr;    }    if ((ai->type != T_FUNCTION) && (ai->type != T_MANY)) {    if (aret) {