pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/docode.c:1:
/*\ ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License) ||| See the files COPYING and DISCLAIMER for more information. \*/ /**/ #include "global.h"
-
RCSID("$Id: docode.c,v 1.
63
2000/01/04 01:
29
:
11
grubba Exp $");
+
RCSID("$Id: docode.c,v 1.
64
2000/01/04 01:
32
:
04
grubba Exp $");
#include "las.h" #include "program.h" #include "language.h" #include "pike_types.h" #include "stralloc.h" #include "interpret.h" #include "constants.h" #include "array.h" #include "pike_macros.h" #include "error.h"
pike.git/src/docode.c:866:
DO_CODE_BLOCK(CDR(n)); #ifdef PIKE_DEBUG if(sp-save_sp != cases) fatal("Count cases is wrong!\n"); #endif f_aggregate(cases); order=get_switch_order(sp[-1].u.array);
+
if (!num_parse_error) {
/* Check for cases inside a range */ for(e=0; e<cases-1; e++) { if(order[e] < cases-1) { int o1=order[e]*2+2; if(current_switch_jumptable[o1]==current_switch_jumptable[o1+1] && current_switch_jumptable[o1]==current_switch_jumptable[o1+2]) { if(order[e]+1 != order[e+1]) yyerror("Case inside range."); e++; } } }
-
+
}
if(current_switch_default < 0) current_switch_default = ins_label(-1); for(e=1;e<cases*2+2;e++) if(current_switch_jumptable[e]==-1) current_switch_jumptable[e]=current_switch_default; order_array(sp[-1].u.array,order);