pike.git / src / language.yacc

version» Context lines:

pike.git/src/language.yacc:3141:      create_arguments: /* empty */ optional_comma { $$=0; }    | create_arguments2 optional_comma    ;      optional_create_arguments: /* empty */ { $$ = 0; }    | start_lambda '(' create_arguments ')'    {    node *n = NULL;    int e = $3; +  struct pike_type *t;       type_stack_mark();    push_type(T_VOID);       if (Pike_compiler->num_create_args < 0) {    e--;    push_finished_type(Pike_compiler->compiler_frame->variable[e].type);    pop_type_stack(T_ARRAY);    compiler_discard_top_type();   
pike.git/src/language.yacc:3241:    n);    add_ref(def);    }       push_type(T_FUNCTION);    }       n = mknode(F_COMMA_EXPR, n,    mknode(F_RETURN, mkintnode(0), NULL));    -  define_function(lfun_strings[LFUN___CREATE__], peek_type_stack(), +  t = pop_unfinished_type(); +  +  define_function(lfun_strings[LFUN___CREATE__], t,    ID_PROTECTED|ID_LOCAL,    IDENTIFIER_PIKE_FUNCTION |    ((Pike_compiler->num_create_args < 0)?    IDENTIFIER_VARARGS:0),    0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);    -  dooptcode(lfun_strings[LFUN___CREATE__], n, peek_type_stack(), -  ID_PROTECTED|ID_LOCAL); +  dooptcode(lfun_strings[LFUN___CREATE__], n, t, ID_PROTECTED|ID_LOCAL);    -  compiler_discard_type(); +  free_type(t);      #ifdef PIKE_DEBUG    if (Pike_compiler->compiler_frame != $1) {    Pike_fatal("Lost track of compiler_frame!\n"    " Got: %p (Expected: %p) Previous: %p\n",    Pike_compiler->compiler_frame, $1,    Pike_compiler->compiler_frame->previous);    }   #endif    pop_compiler_frame();