pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:11667:    case T_ASSIGN:    case PIKE_T_NAME:    fun_type = fun_type->cdr;    goto loop;       case PIKE_T_ATTRIBUTE:    res = lower_new_check_call(fun_type->cdr, arg_type, flags,    cs, sval CHECK_CALL_ARGS);    if (!res) return NULL;    if (c) { +  if (!cs->m) { +  cs->m = allocate_mapping(0); +  }    ref_push_string((struct pike_string *)fun_type->car);    ref_push_type_value(fun_type->cdr);    ref_push_type_value(arg_type); -  safe_apply_current2(PC_APPLY_TYPE_ATTRIBUTE_FUN_NUM, 3, +  ref_push_mapping(cs->m); +  safe_apply_current2(PC_APPLY_TYPE_ATTRIBUTE_FUN_NUM, 4,    "apply_type_attribute");    if ((TYPEOF(Pike_sp[-1]) == T_INT) &&    (SUBTYPEOF(Pike_sp[-1]) == NUMBER_NUMBER) &&    (!Pike_sp[-1].u.integer)) {    pop_stack();    free_type(res);    return NULL;    }    pop_stack();    }
pike.git/src/pike_types.cmod:12016:       if ((Pike_compiler->compiler_pass == COMPILER_PASS_LAST) && sval) {    while (tmp2 && (tmp2->type == PIKE_T_NAME)) {    tmp2 = tmp2->cdr;    }       if (tmp2 && (tmp2->type == PIKE_T_ATTRIBUTE)) {    struct compilation *c = MAYBE_THIS_COMPILATION;    if (c) {    /* Perform extra argument checking based on the attribute. */ +  if (!cs->m) { +  cs->m = allocate_mapping(0); +  }    ref_push_string((struct pike_string *)tmp2->car);    push_svalue(sval);    ref_push_type_value(tmp2->cdr);    ref_push_type_value(res); -  safe_apply_current(PC_APPLY_ATTRIBUTE_CONSTANT_FUN_NUM, 4); +  ref_push_mapping(cs->m); +  safe_apply_current(PC_APPLY_ATTRIBUTE_CONSTANT_FUN_NUM, 5);    if (TYPEOF(Pike_sp[-1]) == PIKE_T_TYPE) {    type_stack_mark();    push_finished_type(Pike_sp[-1].u.type);    push_finished_type(res);    push_type(T_AND);    free_type(res);    res = pop_unfinished_type();    }    pop_stack();    }