[SCM] Lisaac compiler branch, master, updated. lisaac-0.12-386-g5e57d4f

Benoit Sonntag sonntag at icps.u-strasbg.fr
Mon Aug 10 00:00:44 UTC 2009


The following commit has been merged in the master branch:
commit 5e57d4fabd019b8852422739508cb309d46ecc3c
Author: Benoit Sonntag <sonntag at icps.u-strasbg.fr>
Date:   Mon Aug 10 02:00:20 2009 +0200

    bug mildred

diff --git a/example/base/hello_world.li b/example/base/hello_world.li
index 89f2958..e1f666c 100644
--- a/example/base/hello_world.li
+++ b/example/base/hello_world.li
@@ -33,7 +33,6 @@ Section Inherit
 Section Public  
     
   - main <-
-  ( + t:STRING;
+  ( 
     "Hello world !\n".print;
-    t.print;
   );
diff --git a/example/lip/make.lip b/example/lip/make.lip
index 143aba6..30647cb 100755
--- a/example/lip/make.lip
+++ b/example/lip/make.lip
@@ -199,7 +199,7 @@ Section Private
     };
     " : ".print;
     val := get_integer;
-    ((val < 0) | (val > 7)).if {
+    ((val < 1) | (val > 7)).if {
       "Error !\n".print; 
       message;
     } else {
diff --git a/lib2/collection/low_level/native_array.li b/lib2/collection/low_level/native_array.li
index e6635a3..e90c0a4 100644
--- a/lib2/collection/low_level/native_array.li
+++ b/lib2/collection/low_level/native_array.li
@@ -64,7 +64,7 @@ Section Public
     + p:POINTER;
     + result  :NATIVE_ARRAY(V);
     
-    capacity := nb_elements * element_sizeof;    
+    capacity := nb_elements * element_sizeof;                
     //p := `malloc(@capacity)`:POINTER; 
     p := MEMORY.alloc_dynamic (capacity.to_pointer);
     result := CONVERT(POINTER,NATIVE_ARRAY(V)).on p;
diff --git a/lib2/kernel/object.li b/lib2/kernel/object.li
index 3c8937b..3e3f1e6 100644
--- a/lib2/kernel/object.li
+++ b/lib2/kernel/object.li
@@ -124,16 +124,16 @@ Section Public
       result := Self;
     } else {      
       typ_id := type_id_intern;      
-      //ptr := `malloc((@sz + 3)&0xFFFFFFFC)`:POINTER;                  
-      clone_allocation_size := clone_allocation_size + sz;                                       
+      //ptr := `malloc(((unsigned long)(@sz + 3)) & 0xFFFFFFFC)`:POINTER;                  
+      clone_allocation_size := clone_allocation_size + sz;      
       (typ_id = -1).if {
 	ptr := MEMORY.alloc_size sz;
       } else {        
 	ptr := MEMORY.alloc_type (typ_id.to_uinteger_32) size sz;
       };                                               
       result := CONVERT(POINTER,SELF).on ptr;            
-      //OLD MEMORY.copy to_pointer to ptr size sz;
-      copy_intern_in result;      
+      //MEMORY.copy to_pointer to ptr size (CONVERT(POINTER,UINTEGER_32).on sz);
+      copy_intern_in result;            
       (is_cop_type).if {        
         `((lith_object *)@result)->first = NULL`;
         `((lith_object *)@result)->last  = NULL`;
diff --git a/lib2_os/unix/video/video.li b/lib2_os/unix/video/video.li
index 075ad8a..6b4a452 100644
--- a/lib2_os/unix/video/video.li
+++ b/lib2_os/unix/video/video.li
@@ -25,7 +25,12 @@ Section Header
   - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
   
   - comment     := "X11 Driver video - Xlib -";
-
+/*  
+  - lip      <-
+  (
+    add_lib "-lX11";
+  );
+  */
   - external := 
 `
 #include <X11/Xlib.h>
diff --git a/lib2_os/unix/video/video.li~ b/lib2_os/unix/video/video.li~
old mode 100755
new mode 100644
index 26a82ff..22b5858
--- a/lib2_os/unix/video/video.li~
+++ b/lib2_os/unix/video/video.li~
@@ -25,7 +25,12 @@ Section Header
   - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
   
   - comment     := "X11 Driver video - Xlib -";
-
+  
+  - lip      := 
+  (
+    add_lib "-lX11";
+  );
+  
   - external := 
 `
 #include <X11/Xlib.h>
@@ -38,7 +43,7 @@ XImage  *ximage=NULL;
 
 Section Inherit
   
-  + parent_bitmap:Expanded BITMAP[PIXEL_24];
+  + parent_bitmap:Expanded BITMAP(PIXEL_24);
   
 Section Public //VIDEO
   
@@ -63,7 +68,7 @@ Section Public
   );
   
   - make (w,h:INTEGER) <-
-  ( + data:NATIVE_ARRAY[UINTEGER_8];
+  ( + data:NATIVE_ARRAY(UINTEGER_8);
     + w_max:INTEGER;
     
     // Init BITMAP:
@@ -96,22 +101,22 @@ Section Public
     
     planes
     .when 15 then {
-      line_tmp := BMP_LINE[PIXEL_15].create w_max;
+      line_tmp := BMP_LINE(PIXEL_15).create w_max;
       data := line_tmp.get_storage;
       `ximage = XCreateImage(display,None,15,ZPixmap,0,(char *)@data, at w_max,1,16,0)`;
     }
     .when 16 then { 
-      line_tmp := BMP_LINE[PIXEL_16].create w_max; 
+      line_tmp := BMP_LINE(PIXEL_16).create w_max; 
       data := line_tmp.get_storage;
       `ximage = XCreateImage(display,None,16,ZPixmap,0,(char *)@data, at w_max,1,16,0)`;
     }
     .when 24 then { 
-      line_tmp := BMP_LINE[PIXEL_32].create w_max; 
+      line_tmp := BMP_LINE(PIXEL_32).create w_max; 
       data := line_tmp.get_storage;
       `ximage = XCreateImage(display,None,24,ZPixmap,0,(char *)@data, at w_max,1,32,0)`;
     }
     .when 32 then { 
-      line_tmp := BMP_LINE[PIXEL_32].create w_max; 
+      line_tmp := BMP_LINE(PIXEL_32).create w_max; 
       data := line_tmp.get_storage;
       `ximage = XCreateImage(display,None,32,ZPixmap,0,(char *)@data, at w_max,1,32,0)`;
     };
diff --git a/src/code_life/switch.li b/src/code_life/switch.li
index f9f04dd..3a78eb4 100644
--- a/src/code_life/switch.li
+++ b/src/code_life/switch.li
@@ -254,8 +254,7 @@ Section Public
     + typ_first:TYPE;
     + typ_id:TYPE_ID;
     + wrt:WRITE;
-    + i:INTEGER;
-    
+        
     (
       (list.first.id = TYPE_NULL) && 
       {debug_level_option = 0} && 
@@ -267,6 +266,7 @@ Section Public
     ).if {
       list.remove_first;
     };
+    /*
     i := list.upper;
     {i >= list.lower}.while_do {
       (list.item i.code.is_empty).if {
@@ -274,8 +274,9 @@ Section Public
       };
       i := i - 1;
     };      
+    */
     //
-    (list.is_empty).if_false {
+    //(list.is_empty).if_false {
       typ_first := list.first.id;
       typ_id ?= typ_first;    
       ((list.count <= 2) || {typ_first = TYPE_NULL}).if {
@@ -299,14 +300,16 @@ Section Public
         first_case := 1;
         //
         (list.count = 2).if {
-          lst := list.second.code;          
-          buffer.append " else ";
+          lst := list.second.code;                    
+          (! list.second.code.is_empty).if {
+            buffer.append " else ";
             
-          buffer.append "/* ";
-          buffer.append (list.second.id.name);
-          buffer.append " */ ";
+            buffer.append "/* ";
+            buffer.append (list.second.id.name);
+            buffer.append " */ ";
             
-          list.second.genere buffer;          
+            list.second.genere buffer;          
+          };
           first_case := 2;
         }.elseif {list.count > 2} then {
           buffer.append " else {\n";
@@ -320,32 +323,16 @@ Section Public
         list.item first_case.id.put_access_id expr in buffer;
         buffer.append ") {\n";
         (first_case).to (list.upper) do { j:INTEGER;
-          buffer.append indent; 
-          buffer.append "case ";
-          list.item j.id.put_id buffer;
-          buffer.append ": ";          
-          list.item j.genere buffer;        
-          buffer.add_last ' ';	
-          buffer.append "break;\n";
-        };	
-        
-        ( + code:STRING_CONSTANT;
-          buffer.append indent;
-          buffer.append "default: ";
-          (debug_level_option != 0).if {
-            code := 
-            "stack_print(top_context); \
-            \print_string(\"Call on Twilight Zone\\n\"); \
-            \die_with_code(1);";
-          } else {
-            code := 
-            "print_string(\"Call on Twilight Zone\\n\
-            \(Use `debug' option)\\n\"); \ 
-            \die_with_code(1);";
+          (! list.item j.code.is_empty).if {
+            buffer.append indent; 
+            buffer.append "case ";
+            list.item j.id.put_id buffer;
+            buffer.append ": ";          
+            list.item j.genere buffer;        
+            buffer.add_last ' ';	
+            buffer.append "break;\n";
           };
-          buffer.append code;
-        );
-            
+        };	      
         buffer.append indent;
         buffer.add_last '}';
         (first_case != 0).if {
@@ -355,9 +342,9 @@ Section Public
           buffer.add_last '}';
         };
       };
-    };
+    //};
   );
-  
+      
   //
   // Display.
   //
diff --git a/src/lip/lip_call.li b/src/lip/lip_call.li
index 27caddc..152e8d7 100644
--- a/src/lip/lip_call.li
+++ b/src/lip/lip_call.li
@@ -135,8 +135,15 @@ Section Public
       res := ENVIRONMENT.execute_command string_tmp; 
       result := LIP_INTEGER.get res;
     }.elseif {name = ALIAS_STR.slot_get_integer} then {
-      IO.read_integer;
-      result := LIP_INTEGER.get (IO.last_integer);      
+      {
+        IO.read_line;
+        (IO.last_string.is_integer).if_false {
+          "Error INTEGER needed.\n".print;
+        };
+      }.do_until {IO.last_string.is_integer};      
+      result := LIP_INTEGER.get (IO.last_string.to_integer);      
+      //IO.read_integer;
+      //result := LIP_INTEGER.get (IO.last_integer);      
     }.elseif {name = ALIAS_STR.slot_get_string} then {
       IO.read_line;
       result := LIP_STRING.get (ALIAS_STR.get (IO.last_string));
diff --git a/src/type/type_full.li b/src/type/type_full.li
index e0fa9f4..caebd27 100644
--- a/src/type/type_full.li
+++ b/src/type/type_full.li
@@ -33,27 +33,27 @@ Section Inherit
   
 Section Private
     
-  + parent_type:TYPE; // BSBS: Passer en héritage + Insert mode.
+  + the_parent_type:TYPE; // BSBS: Passer en héritage + Insert mode.
   
 Section TYPE, TYPE_FULL
   
-  - get_with flg:UINTEGER_8 :TYPE_FULL <- parent_type.get_with flg;
+  - get_with flg:UINTEGER_8 :TYPE_FULL <- the_parent_type.get_with flg;
   
 Section Public  
   
-  - get_slot n:STRING_CONSTANT :SLOT <- parent_type.get_slot n;
+  - get_slot n:STRING_CONSTANT :SLOT <- the_parent_type.get_slot n;
     
   - hash_code:INTEGER <- raw.name.hash_code;
   
-  - size:INTEGER <- parent_type.size;
+  - size:INTEGER <- the_parent_type.size;
   
-  - prototype:PROTOTYPE <- parent_type.prototype;
+  - prototype:PROTOTYPE <- the_parent_type.prototype;
   
-  - is_sub_type other:TYPE_FULL :BOOLEAN <- parent_type.is_sub_type (other.raw);
+  - is_sub_type other:TYPE_FULL :BOOLEAN <- the_parent_type.is_sub_type (other.raw);
       
-  - slot_run:FAST_ARRAY[SLOT] <- parent_type.slot_run;
+  - slot_run:FAST_ARRAY[SLOT] <- the_parent_type.slot_run;
   
-  - is_late_binding:BOOLEAN <- parent_type.is_late_binding;
+  - is_late_binding:BOOLEAN <- the_parent_type.is_late_binding;
 
 Section TYPE
       
@@ -83,7 +83,7 @@ Section TYPE
   
   - make typ:TYPE with code:UINTEGER_8 <-
   (
-    parent_type := typ;
+    the_parent_type := typ;
     flag := code;       
     ((raw != NULL) && {raw.name != NULL} && {raw.name == "INTEGER"} && {! is_expanded}).if {
       crash;
@@ -95,7 +95,7 @@ Section Public
   
   - is_parameter_type:BOOLEAN <- FALSE;
   
-  - raw:TYPE <- parent_type;
+  - raw:TYPE <- the_parent_type;
    
   //
   // Set.
diff --git a/src2/code_life/switch.li b/src2/code_life/switch.li
index aac2d42..dd1cc8a 100644
--- a/src2/code_life/switch.li
+++ b/src2/code_life/switch.li
@@ -254,7 +254,6 @@ Section Public
     + typ_first:TYPE;
     + typ_id:TYPE_ID;
     + wrt:WRITE;
-    + i:INTEGER;
     
     (
       (list.first.id = TYPE_NULL) && 
@@ -267,6 +266,7 @@ Section Public
     ).if {
       list.remove_first;
     };
+    /*
     i := list.upper;
     {i >= list.lower}.while_do {
       (list.item i.code.is_empty).if {
@@ -274,8 +274,9 @@ Section Public
       };
       i := i - 1;
     };      
+    */
     //
-    (list.is_empty).if_false {
+    //(list.is_empty).if_false {
       typ_first := list.first.id;
       typ_id ?= typ_first;    
       ((list.count <= 2) || {typ_first = TYPE_NULL}).if {
@@ -299,14 +300,16 @@ Section Public
         first_case := 1;
         //
         (list.count = 2).if {
-          lst := list.second.code;          
-          buffer.append " else ";
+          lst := list.second.code;                    
+          (! list.second.code.is_empty).if {
+            buffer.append " else ";
             
-          buffer.append "/* ";
-          buffer.append (list.second.id.name);
-          buffer.append " */ ";
+            buffer.append "/* ";
+            buffer.append (list.second.id.name);
+            buffer.append " */ ";
             
-          list.second.genere buffer;          
+            list.second.genere buffer;          
+          };
           first_case := 2;
         }.elseif {list.count > 2} then {
           buffer.append " else {\n";
@@ -320,32 +323,16 @@ Section Public
         list.item first_case.id.put_access_id expr in buffer;
         buffer.append ") {\n";
         (first_case).to (list.upper) do { j:INTEGER;
-          buffer.append indent; 
-          buffer.append "case ";
-          list.item j.id.put_id buffer;
-          buffer.append ": ";          
-          list.item j.genere buffer;        
-          buffer.add_last ' ';	
-          buffer.append "break;\n";
-        };	
-                
-        ( + code:STRING_CONSTANT;
-          buffer.append indent;
-          buffer.append "default: ";
-          (debug_level_option != 0).if {
-            code := 
-            "stack_print(top_context); \
-            \print_string(\"Call on Twilight Zone\\n\"); \
-            \die_with_code(1),";
-          } else {
-            code := 
-            "print_string(\"Call on Twilight Zone\\n\
-            \(Use `debug' option)\\n\"); \ 
-            \die_with_code(1);";
+          (! list.item j.code.is_empty).if {
+            buffer.append indent; 
+            buffer.append "case ";
+            list.item j.id.put_id buffer;
+            buffer.append ": ";          
+            list.item j.genere buffer;        
+            buffer.add_last ' ';	
+            buffer.append "break;\n";
           };
-          buffer.append code;
-        );
-                
+        };	      
         buffer.append indent;
         buffer.add_last '}';
         (first_case != 0).if {
@@ -355,7 +342,7 @@ Section Public
           buffer.add_last '}';
         };
       };
-    };
+    //};
   );
   
   //
diff --git a/src2/code_life/write_slot.li b/src2/code_life/write_slot.li
index f77f6d9..9497f4d 100644
--- a/src2/code_life/write_slot.li
+++ b/src2/code_life/write_slot.li
@@ -134,6 +134,28 @@ Section Public
       } else {
         buffer.add_last '=';    
         genere_value buffer;
+        
+        /*
+        buffer.add_last ';';
+        tf := receiver.static_type;    
+        ((tf.is_strict) || {tf.is_expanded_ref}).if {
+          receiver.genere buffer;
+          buffer.append "->";
+        }.elseif {tf.is_expanded} then {      
+          receiver.genere buffer;
+          buffer.add_last '.';          
+        } else {
+          buffer.append "((";
+          t := slot.receiver_type;
+          t.put_reference_declaration buffer;	
+          buffer.add_last ' ';
+          t.put_reference_star_declaration buffer;	
+          buffer.add_last ')';
+          receiver.genere buffer;
+          buffer.append ")->";          
+        };
+        */
+        
       };
     };
   );
diff --git a/src2/lip/lip_binary.li b/src2/lip/lip_binary.li
index 801f3b8..29921aa 100644
--- a/src2/lip/lip_binary.li
+++ b/src2/lip/lip_binary.li
@@ -80,7 +80,10 @@ Section Public
     .when '+' then { result := lv +   rv; }
     .when '-' then { result := lv -   rv; };
     (result = NULL).if {
-      semantic_error (position,"Incorrect type.");      
+      operator.print; '\n'.print;
+      lv.print; '\n'.print;
+      rv.print; '\n'.print;
+      semantic_error (position,"Incorrect type operator.");      
     };
     result    
   );
diff --git a/src2/lip/lip_boolean.li b/src2/lip/lip_boolean.li
index 9787d3f..f55af7e 100644
--- a/src2/lip/lip_boolean.li
+++ b/src2/lip/lip_boolean.li
@@ -73,7 +73,7 @@ Section Public
   
   - name:STRING_CONSTANT <- "BOOLEAN";
   
-  - Self:SELF '!' :LIP_CONSTANT <- get (! value);
+  - '!' Self:SELF :LIP_CONSTANT <- get (! value);
   
   - copy:LIP_CONSTANT <- Self;
   
diff --git a/src2/lip/lip_call.li b/src2/lip/lip_call.li
index 27caddc..a7bb0b3 100644
--- a/src2/lip/lip_call.li
+++ b/src2/lip/lip_call.li
@@ -135,8 +135,13 @@ Section Public
       res := ENVIRONMENT.execute_command string_tmp; 
       result := LIP_INTEGER.get res;
     }.elseif {name = ALIAS_STR.slot_get_integer} then {
-      IO.read_integer;
-      result := LIP_INTEGER.get (IO.last_integer);      
+      {
+        IO.read_line;
+        (IO.last_string.is_integer).if_false {
+          "Error INTEGER needed.\n".print;
+        };
+      }.do_until {IO.last_string.is_integer};      
+      result := LIP_INTEGER.get (IO.last_string.to_integer);      
     }.elseif {name = ALIAS_STR.slot_get_string} then {
       IO.read_line;
       result := LIP_STRING.get (ALIAS_STR.get (IO.last_string));
diff --git a/src2/lip/lip_integer.li b/src2/lip/lip_integer.li
index 8ca1c00..18c1d6e 100644
--- a/src2/lip/lip_integer.li
+++ b/src2/lip/lip_integer.li
@@ -71,13 +71,13 @@ Section Public
   
   - name:STRING_CONSTANT <- "INTEGER";
   
-  - Self:SELF '-' :LIP_CONSTANT <-
+  - '-' Self:SELF :LIP_CONSTANT <-
   ( 
     value := - value;
     Self
   );
 
-  - Self:SELF '!' :LIP_CONSTANT <-
+  - '!' Self:SELF :LIP_CONSTANT <-
   ( 
     value := ~ value;
     Self
diff --git a/src2/lip/lip_slot_data.li b/src2/lip/lip_slot_data.li
index 19af1fa..d52391b 100644
--- a/src2/lip/lip_slot_data.li
+++ b/src2/lip/lip_slot_data.li
@@ -64,7 +64,7 @@ Section Public
     value    := v;    
     (is_arg).if_false {
       list_data.add Self to n;
-    };
+    };    
   );
   
   //
@@ -76,8 +76,8 @@ Section Public
     
     new_val := value.copy_of v;
     (new_val != NULL).if {     
-      value := new_val;      
-    }
+      value := new_val;            
+    }    
   );
     
   - get_value:LIP_CONSTANT <-
diff --git a/src2/lip/lip_string.li b/src2/lip/lip_string.li
index fde456c..04f11a5 100644
--- a/src2/lip/lip_string.li
+++ b/src2/lip/lip_string.li
@@ -54,17 +54,17 @@ Section Public
       result := clone;
     } else {
       result := storage.last;
-      storage.remove_last;
+      storage.remove_last;            
     };
     result.set_value str;
     result
   );
   
   - free <-
-  (
+  (    
     storage.add_last Self;
   );
-  
+    
   //
   // Operation.
   //
@@ -78,7 +78,7 @@ Section Public
   
   - print <-
   ( 
-    string_tmp.clear;
+    string_tmp.clear;    
     append_in string_tmp;
     string_tmp.print;
   );
diff --git a/src2/lip/lip_unary.li b/src2/lip/lip_unary.li
index 27f32e1..979e143 100644
--- a/src2/lip/lip_unary.li
+++ b/src2/lip/lip_unary.li
@@ -62,7 +62,7 @@ Section Public
   - run_expr:LIP_CONSTANT <-
   ( + result:LIP_CONSTANT;
         
-    result := value.run_expr;    
+    result := value.run_expr;        
     (operator)
     .when '-' then { result := - result; }
     .when '!' then { result := ! result; };
diff --git a/src2/parser.li b/src2/parser.li
index 6d1f609..244ccb4 100644
--- a/src2/parser.li
+++ b/src2/parser.li
@@ -2712,7 +2712,7 @@ Section Private
         (cst = NULL).if {
           syntax_error (current_position,"Incorrect expression.");
         };
-        data.set_value cst;
+        data.set_value cst;        
         cst.free;
       };
     }.elseif {read_character '-'} then {
@@ -2771,16 +2771,16 @@ Section Private
   //// TYPE         -> 'BOOLEAN' | 'STRING' | 'INTEGER'
   ( + result:LIP_CONSTANT;
     
-    (read_cap_identifier).if {            
+    (read_cap_identifier).if {                              
       (last_string = ALIAS_STR.prototype_integer).if {
         result := LIP_INTEGER.get 0;
-      }.elseif {last_string = ALIAS_STR.prototype_string} then {
-        result := LIP_STRING.get (ALIAS_STR.get "");
-      }.elseif {last_string = ALIAS_STR.prototype_boolean} then {
+      }.elseif {last_string = ALIAS_STR.prototype_string} then {        
+        result := LIP_STRING.get (ALIAS_STR.get "");        
+      }.elseif {last_string = ALIAS_STR.prototype_boolean} then {        
         result := LIP_BOOLEAN.get FALSE;
       } else {
         syntax_error (current_position,"Incorrect type.");
-      };
+      };     
     };
     result
   );
diff --git a/src2/type/type.li b/src2/type/type.li
index 7935b3c..05aef65 100644
--- a/src2/type/type.li
+++ b/src2/type/type.li
@@ -109,17 +109,28 @@ Section Public
     + base:TYPE;
     + styl:STRING_CONSTANT;    
     + proto:PROTOTYPE;
-        
+    
+    + r:TYPE;
+            
     proto := load_prototype (itm_typ.name) generic_count 0;            
     base := dico_type.fast_reference_at (proto.filename);
-    (base = NULL).if {      
+    (base = NULL).if {          
       base := TYPE.clone;
       dico_type.fast_put base to (proto.filename);
       base.make itm_typ with proto;
+      
+      (base.default.the_parent_type != base).if {      
+        "C'est ici que ca commence!!!\n".print;
+        IO.read_character;
+      };
     };
     //        
+    (base.default.the_parent_type != base).if {      
+      "Oui, il est bien bidon!!!\n".print;
+      IO.read_character;
+    };
     styl := itm_typ.style;
-    (styl = NULL).if {           
+    (styl = NULL).if {                 
       result := base.default;
     } else {
       (styl = ALIAS_STR.keyword_expanded).if {	
@@ -128,6 +139,13 @@ Section Public
 	result := base.default + TYPE_FULL.strict_bit;
       };
     };
+    
+    r := result.the_parent_type;
+    (r != base).if {
+      "the_parent_type est bidon!!!\n".print;
+      IO.read_character;
+    };    
+    
     result
   );
   
@@ -149,14 +167,17 @@ Section Public
       {slot_run.item j.id_section.is_inherit_or_insert} &&
       {result = NULL}	
     }.while_do {
-      ts     ?= slot_run.item j.result_type;
-      typ    := ts.to_run_for Self.raw;      
+      ts  ?= slot_run.item j.result_type;      
+      typ := ts.to_run_for Self.raw;                  
+      
+      /*
       (typ.prototype = NULL).if {
-        `/* ICI BEN */`;
+        
         typ.print; '\n'.print;
         `/* ICI BEN FIN */`;
         crash_with_message "TYPE: BUG Compiler : search_require";
       };
+      */
       result := typ.prototype.slot_list.fast_reference_at n;
       ((result = NULL) || {result.require = NULL}).if {
 	result := typ.search_require n;
diff --git a/src2/type/type_full.li b/src2/type/type_full.li
index cc5cc85..2aab477 100644
--- a/src2/type/type_full.li
+++ b/src2/type/type_full.li
@@ -31,29 +31,29 @@ Section Inherit
   
   - parent_any:ANY := ANY;
   
-Section Private
+Section TYPE, TYPE_FULL // Private after fuck bug 
     
-  + parent_type:TYPE; // BSBS: Passer en héritage + Insert mode.
+  + the_parent_type:TYPE; // BSBS: Passer en héritage + Insert mode.
   
 Section TYPE, TYPE_FULL
   
-  - get_with flg:UINTEGER_8 :TYPE_FULL <- parent_type.get_with flg;
+  - get_with flg:UINTEGER_8 :TYPE_FULL <- the_parent_type.get_with flg;
   
 Section Public  
   
-  - get_slot n:STRING_CONSTANT :SLOT <- parent_type.get_slot n;
+  - get_slot n:STRING_CONSTANT :SLOT <- the_parent_type.get_slot n;
     
   - hash_code:INTEGER <- raw.name.hash_code;
   
-  - size:INTEGER <- parent_type.size;
+  - size:INTEGER <- the_parent_type.size;
   
-  - prototype:PROTOTYPE <- parent_type.prototype;
+  - prototype:PROTOTYPE <- the_parent_type.prototype;
   
-  - is_sub_type other:TYPE_FULL :BOOLEAN <- parent_type.is_sub_type (other.raw);
+  - is_sub_type other:TYPE_FULL :BOOLEAN <- the_parent_type.is_sub_type (other.raw);
       
-  - slot_run:FAST_ARRAY(SLOT) <- parent_type.slot_run;
+  - slot_run:FAST_ARRAY(SLOT) <- the_parent_type.slot_run;
   
-  - is_late_binding:BOOLEAN <- parent_type.is_late_binding;
+  - is_late_binding:BOOLEAN <- the_parent_type.is_late_binding;
 
 Section TYPE
       
@@ -83,7 +83,7 @@ Section TYPE
   
   - make typ:TYPE with code:UINTEGER_8 <-
   (
-    parent_type := typ;
+    the_parent_type := typ;
     flag := code;       
     ((raw != NULL) && {raw.name != NULL} && {raw.name == "INTEGER"} && {! is_expanded}).if {
       crash;
@@ -95,7 +95,7 @@ Section Public
   
   - is_parameter_type:BOOLEAN <- FALSE;
   
-  - raw:TYPE <- parent_type;
+  - raw:TYPE <- the_parent_type;
    
   //
   // Set.
@@ -115,7 +115,7 @@ Section Public
   - is_expanded          :BOOLEAN <- (flag & expanded_bit        ) != 0;
   - is_default_expanded  :BOOLEAN <- (flag & default_expanded_bit) != 0;
   - is_strict            :BOOLEAN <- (flag & strict_bit          ) != 0;
-  - is_default_strict    :BOOLEAN <- (flag & default_expanded_bit) != 0;
+  - is_default_strict    :BOOLEAN <- (flag & default_strict_bit  ) != 0;
   - is_expanded_ref      :BOOLEAN <- (flag & expanded_ref_bit    ) != 0;
   - is_generic           :BOOLEAN <- (flag & generic_bit         ) != 0;
   

-- 
Lisaac compiler



More information about the Lisaac-commits mailing list