pike.git / src / pike_types.c

version» Context lines:

pike.git/src/pike_types.c:4407:    if (b->type == T_FUNCTION)    {    b = b->cdr;    }       if (a_tmp->type != T_VOID) {    /* Note: flags never has grouping at this point. */    if (!low_pike_types_le(b_tmp, a_tmp, 0, flags ^ LE_A_B_SWAPPED)) {    return 0;    } +  } else if (flags & LE_TYPE_SVALUE) { +  /* Note: flags never has grouping at this point. */ +  if (!low_pike_types_le(b_tmp, zero_type_string, 0, +  flags ^ LE_A_B_SWAPPED)) { +  return 0;    }    } -  +  }    /* FALL_THROUGH */    case TWOT(T_MANY, T_MANY):    /* check the 'many' type */    if ((a->car->type != T_VOID) && (b->car->type != T_VOID)) {    /* Note: flags never has grouping at this point. */    if (!low_pike_types_le(b->car, a->car, 0, flags ^ LE_A_B_SWAPPED)) {    return 0;    } -  +  } else if ((flags & LE_TYPE_SVALUE) && (a->car->type != b->car->type)) { +  if (a->car->type == T_VOID) { +  /* Note: flags never has grouping at this point. */ +  if (!low_pike_types_le(b->car, zero_type_string, 0, +  flags ^ LE_A_B_SWAPPED)) { +  return 0;    } -  +  } else { +  /* Note: flags never has grouping at this point. */ +  if (!low_pike_types_le(zero_type_string, a->car, 0, +  flags ^ LE_A_B_SWAPPED)) { +  return 0; +  } +  } +  }       a = a->cdr;    b = b->cdr;       /* check the returntype */    if (flags & LE_TYPE_SVALUE) return 1;    /* FIXME: Check array_cnt */    if ((b->type != T_VOID) && (a->type != T_VOID)) {    if(!low_pike_types_le(a, b, array_cnt, flags)) return 0;    }