pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:4763:    if (tmp) {    type_stack_mark();    push_finished_type(tmp);    push_assign_type(marker);    free_type(tmp);    return pop_unfinished_type();    }    free_marker(remap, CAR_TO_INT(a), remap_flags);    return NULL;    } -  -  case '0': case '1': case '2': case '3': case '4': -  case '5': case '6': case '7': case '8': case '9': -  { -  int marker = remap_marker(remap, a->type, remap_flags); -  if (!marker) return NULL; -  -  tmp = remap_markers(b, NULL, remap, -  remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS); -  if (!tmp) return NULL; -  type_stack_mark(); -  push_finished_type(tmp); -  push_type(marker); -  push_reverse_type(T_AND); -  free_type(tmp); -  return pop_unfinished_type(); +     } -  } +     switch(b->type) {    case T_ASSIGN:    {    int marker = alloc_remap_marker(remap, CAR_TO_INT(b),    remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS);    tmp = low_intersect_types(a, b->cdr, remap, aflags, bflags, remap_flags);    if (tmp) {    type_stack_mark();    push_finished_type(tmp);    push_assign_type(marker);    free_type(tmp);    return pop_unfinished_type();    }       free_marker(remap, CAR_TO_INT(b),    remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS);    return NULL;    } -  -  case '0': case '1': case '2': case '3': case '4': -  case '5': case '6': case '7': case '8': case '9': -  { -  int marker = remap_marker(remap, b->type, -  remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS); -  if (!marker) return NULL; -  -  tmp = remap_markers(a, NULL, remap, remap_flags); -  if (!tmp) return NULL; -  type_stack_mark(); -  push_finished_type(tmp); -  push_type(marker); -  push_reverse_type(T_AND); -  free_type(tmp); -  return pop_unfinished_type(); +     } -  } +        /* Attributes and names. */    switch(a->type) {    case PIKE_T_NAME:    tmp = low_intersect_types(a->cdr, b, remap, aflags, bflags, remap_flags);    if (!tmp) return NULL;    type_stack_mark();    push_finished_type(tmp);    push_type_name((struct pike_string *)(a->car));    free_type(tmp);
pike.git/src/pike_types.cmod:5287:    return pop_unfinished_type();    }    /* NB: Swapped argument order! */    return low_subtract_types(b, a->car, remap, bflags, aflags,    remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS);    }    if (b->type == T_NOT) {    return low_subtract_types(a, b->car, remap, aflags, bflags, remap_flags);    }    +  switch(a->type) { +  case '0': case '1': case '2': case '3': case '4': +  case '5': case '6': case '7': case '8': case '9': +  { +  int marker = remap_marker(remap, a->type, remap_flags); +  if (!marker) return NULL; +  +  tmp = remap_markers(b, NULL, remap, +  remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS); +  if (!tmp) return NULL; +  type_stack_mark(); +  push_finished_type(tmp); +  push_type(marker); +  push_reverse_type(T_AND); +  free_type(tmp); +  return pop_unfinished_type(); +  } +  } +  switch(b->type) { +  case '0': case '1': case '2': case '3': case '4': +  case '5': case '6': case '7': case '8': case '9': +  { +  int marker = remap_marker(remap, b->type, +  remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS); +  if (!marker) return NULL; +  +  tmp = remap_markers(a, NULL, remap, remap_flags); +  if (!tmp) return NULL; +  type_stack_mark(); +  push_finished_type(tmp); +  push_type(marker); +  push_reverse_type(T_AND); +  free_type(tmp); +  return pop_unfinished_type(); +  } +  } +     if (a->type != b->type) {    if (((a->type & PIKE_T_MASK) == PIKE_T_OPERATOR) ||    ((b->type & PIKE_T_MASK) == PIKE_T_OPERATOR)) {    type_stack_mark();    push_remap_markers(a, NULL, remap, remap_flags);    push_remap_markers(b, NULL, remap,    remap_flags ^ PT_FLAG_REMAP_SWAP_MARKERS);    push_reverse_type(T_AND);    return pop_unfinished_type();    }