pike.git / src / language.yacc

version» Context lines:

pike.git/src/language.yacc:1777:    push_type(T_MIXED);    push_type(T_VOID);    push_type(T_OR);       push_type(T_ZERO);    push_type(T_VOID);    push_type(T_OR);       push_type(T_MANY);    -  if (!(THIS_COMPILATION->lex.pragmas & ID_STRICT_TYPES)) { +  if (!(THIS_COMPILATION->lex.pragmas & ID_STRICT_TYPES) || +  TEST_COMPAT(8, 0)) {    /* For type validation we also need this.    * Otherwise code like    *    * function foo;    * function(string:void) bar = foo;    *    * will fail.    */    push_type(PIKE_T_UNKNOWN);   
pike.git/src/language.yacc:1855:      name_list: new_name    | name_list ',' new_name    ;      new_name: TOK_IDENTIFIER    {    struct pike_type *type;    node *n;    -  push_finished_type(Pike_compiler->compiler_frame->current_type); +  type = Pike_compiler->compiler_frame->current_type; +  push_finished_type(type); +  if ((Pike_compiler->compiler_pass == COMPILER_PASS_LAST) && +  (!type || (type->type != PIKE_T_AUTO))) { +  if (!pike_types_le(zero_type_string, type, 0, 0)) {    if (!TEST_COMPAT(8,0) && -  (THIS_COMPILATION->lex.pragmas & ID_STRICT_TYPES) && -  (Pike_compiler->compiler_frame->current_type->type != PIKE_T_AUTO)) { -  if (!pike_types_le(zero_type_string, -  Pike_compiler->compiler_frame->current_type, 0, 0)) { -  if (Pike_compiler->compiler_pass == COMPILER_PASS_LAST) { +  (THIS_COMPILATION->lex.pragmas & ID_STRICT_TYPES)) {    ref_push_string($1->u.sval.u.string);    yytype_report(REPORT_WARNING, NULL, 0, zero_type_string, -  NULL, 0, Pike_compiler->compiler_frame->current_type, +  NULL, 0, type,    1, "Type does not contain zero for variable without "    "initializer %s. Type adjusted.");    }    push_type(PIKE_T_ZERO);    push_type(T_OR);    }    }    n = Pike_compiler->current_attributes;    while(n) {    push_type_attribute(CDR(n)->u.sval.u.string);
pike.git/src/language.yacc:1998:    } else {    struct compilation *c = THIS_COMPILATION;       type_stack_mark();    push_finished_type(Pike_compiler->compiler_frame->current_type);    push_type(PIKE_T_ZERO);    push_type(T_OR);    type = pop_unfinished_type();       if ((Pike_compiler->compiler_pass == COMPILER_PASS_LAST) && -  (c->lex.pragmas & ID_STRICT_TYPES)) { +  (c->lex.pragmas & ID_STRICT_TYPES) && !TEST_COMPAT(8, 0)) {    ref_push_string($1->u.sval.u.string);    yytype_report(REPORT_WARNING, NULL, 0, zero_type_string,    NULL, 0, Pike_compiler->compiler_frame->current_type,    1, "Type does not contain zero for variable without "    "initializer %s. Type adjusted.");    }    }    id = add_local_name($1->u.sval.u.string, type, 0);    if( type->type == PIKE_T_AUTO )    {