pike.git / src / pike_types.c

version» Context lines:

pike.git/src/pike_types.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: pike_types.c,v 1.76 1999/11/25 04:25:42 hubbe Exp $"); + RCSID("$Id: pike_types.c,v 1.77 1999/11/25 19:27:07 grubba Exp $");   #include <ctype.h>   #include "svalue.h"   #include "pike_types.h"   #include "stralloc.h"   #include "stuff.h"   #include "array.h"   #include "program.h"   #include "constants.h"   #include "object.h"   #include "multiset.h"
pike.git/src/pike_types.c:1884:       if(EXTRACT_UCHAR(a) != EXTRACT_UCHAR(b)) return 0;       ret=1;    switch(EXTRACT_UCHAR(a))    {    case T_FUNCTION:    /*    * function(A...:B) <= function(C...:D) iff C <= A && B <= D    */ +  /* +  * function(:int) <= function(int:int) +  * function(int|string:int) <= function(int:int) +  * function(string:int) != function(int:int) +  * function(int:int) != function(:int) +  */    a++;    b++;    while(EXTRACT_UCHAR(a)!=T_MANY || EXTRACT_UCHAR(b)!=T_MANY)    {    char *a_tmp,*b_tmp;    if(EXTRACT_UCHAR(a)==T_MANY)    {    a_tmp=a+1;    }else{    a_tmp=a;
pike.git/src/pike_types.c:1905:    }       if(EXTRACT_UCHAR(b)==T_MANY)    {    b_tmp=b+1;    }else{    b_tmp=b;    b+=type_length(b);    }    -  if(!low_pike_types_le(b_tmp, a_tmp)) return 0; +  if (EXTRACT_UCHAR(a_tmp) != T_VOID) { +  if (EXTRACT_UCHAR(b_tmp) == T_VOID) return 0; +  if (!low_pike_types_le(b_tmp, a_tmp)) return 0;    } -  +  }    /* check the 'many' type */    a++;    b++; -  +  if (EXTRACT_UCHAR(a) != T_VOID) {    if (!low_pike_types_le(b, a))    return 0; -  +  }       a+=type_length(a);    b+=type_length(b);       /* check the returntype */    if(!low_pike_types_le(a,b)) return 0;    break;       case T_MAPPING:    /*