Branch: Tag:

1998-03-01

1998-03-01 11:40:47 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

better type checking implemented (and a bug in the type checking fixed)

Rev: src/builtin_functions.c:1.76
Rev: src/docode.c:1.33
Rev: src/las.c:1.55
Rev: src/operators.c:1.28
Rev: src/pike_types.c:1.34
Rev: src/program.c:1.65
Rev: src/stralloc.c:1.28
Rev: src/svalue.h:1.13

5:   \*/   #include <math.h>   #include "global.h" - RCSID("$Id: operators.c,v 1.27 1998/02/27 19:20:11 hubbe Exp $"); + RCSID("$Id: operators.c,v 1.28 1998/03/01 11:40:46 hubbe Exp $");   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"
1748:    add_efun2("`>", f_gt,CMP_TYPE,OPT_TRY_OPTIMIZE,0,generate_comparison);    add_efun2("`>=",f_ge,CMP_TYPE,OPT_TRY_OPTIMIZE,0,generate_comparison);    -  add_efun2("`+",f_add,"!function(!object...:mixed)&function(mixed...:mixed)|function(int...:int)|!function(int...:mixed)&function(int|float...:float)|!function(int|float...:mixed)&function(string|int|float...:string)|function(array...:array)|function(mapping...:mapping)|function(multiset...:multiset)",OPT_TRY_OPTIMIZE,optimize_binary,generate_sum); +  add_efun2("`+",f_add, +  "!function(!object...:mixed)&function(mixed...:mixed)|" +  "function(int...:int)|" +  "!function(int...:mixed)&function(int|float...:float)|" +  "!function(int|float...:mixed)&function(string|int|float...:string)|" +  "function(0=array...:0)|" +  "function(mapping(1=mixed:2=mixed)...:mapping(1:2))|" +  "function(3=multiset...:3)", +  OPT_TRY_OPTIMIZE,optimize_binary,generate_sum);       add_efun2("`-",f_minus,"!function(!object...:mixed)&function(mixed...:mixed)|function(int:int)|function(float:float)|function(array,array:array)|function(mapping,mapping:mapping)|function(multiset,multiset:multiset)|function(float|int,float:float)|function(float,int:float)|function(int,int:int)|function(string,string:string)",OPT_TRY_OPTIMIZE,0,generate_minus);   
1768:       add_efun2("`*",f_multiply,    "!function(!object...:mixed)&function(mixed...:mixed)|" -  "function(array(array),array:array)|" +  "function(array(1=array),1=array:1)|"    "function(int...:int)|"    "!function(int...:mixed)&function(float|int...:float)|"    "function(string*,string:string)|" -  "function(array,int:array)|" +  "function(0=array,int:0)|"    "function(string,int:string)",    OPT_TRY_OPTIMIZE,optimize_binary,generate_multiply);   
1780:    "!function(!object...:mixed)&function(mixed...:mixed)|"    "function(int,int...:int)|"    "!function(int...:mixed)&function(float|int...:float)|" -  "function(array,array|int|float...:array(array))|" +  "function(0=array,array|int|float...:array(0))|"    "function(string,string|int|float...:array(string))",    OPT_TRY_OPTIMIZE,0,generate_divide);   
1789:    "function(object,mixed:mixed)|"    "function(int,int:int)|"    "function(string,int:string)|" -  "function(array,int:array)|" +  "function(0=array,int:0)|"    "!function(int,int:mixed)&function(int|float,int|float:float)"    ,OPT_TRY_OPTIMIZE,0,generate_mod);