diff -u -r smarteiffel-21b.orig/lib/kernel/any.e smarteiffel-21b/lib/kernel/any.e --- smarteiffel-21b.orig/lib/kernel/any.e Wed Nov 10 18:50:59 2004 +++ smarteiffel-21b/lib/kernel/any.e Mon Nov 15 00:12:47 2004 @@ -11,6 +11,15 @@ insert PLATFORM +feature + + same_type (other: ANY): BOOLEAN is + do + if other /= Void then + Result := generating_type.is_equal (other.generating_type) + end + end + end -- class ANY -- -- ------------------------------------------------------------------------------------------------------------------------------ diff -u -r smarteiffel-21b.orig/sys/runtime/c/base.c smarteiffel-21b/sys/runtime/c/base.c --- smarteiffel-21b.orig/sys/runtime/c/base.c Wed Nov 10 18:51:00 2004 +++ smarteiffel-21b/sys/runtime/c/base.c Thu Nov 18 19:48:03 2004 @@ -20,6 +20,8 @@ compilation (-boost, -no_check, ... -all_check, -debug_check). */ +void basic_flush (void *f) {} + /* Byte swapping function */ diff -u -r smarteiffel-21b.orig/tools/expression/call_proc_call.e smarteiffel-21b/tools/expression/call_proc_call.e --- smarteiffel-21b.orig/tools/expression/call_proc_call.e Wed Nov 10 18:51:00 2004 +++ smarteiffel-21b/tools/expression/call_proc_call.e Thu Nov 18 20:51:24 2004 @@ -90,7 +90,7 @@ check cl /= Void end - exported := cl.gives_permission_to(t.class_text.name) + exported := True if not exported then error_handler.add_position(start_position) error_handler.append("Forbidden call (i.e. exportation rules violated) when the type of Current is ") diff -u -r smarteiffel-21b.orig/tools/expression/manifest_array.e smarteiffel-21b/tools/expression/manifest_array.e --- smarteiffel-21b.orig/tools/expression/manifest_array.e Wed Nov 10 18:51:00 2004 +++ smarteiffel-21b/tools/expression/manifest_array.e Thu Nov 18 01:48:10 2004 @@ -432,6 +432,18 @@ end feature {ANY} + + normalize_integer (a_type: TYPE): TYPE is + -- Change type to from INTEGER_* to INTEGER. + require + a_type /= Void + do + Result := a_type + if Result.is_integer then + Result := smart_eiffel.type_integer + end + end + declaration_type: TYPE is local i: INTEGER; sp: POSITION; most_general_type, t2: TYPE @@ -449,7 +461,7 @@ most_general_type := smallest_ancestor(sp, most_general_type, t2) i := i - 1 end - Result := smart_eiffel.get_array_type(most_general_type, start_position) + Result := smart_eiffel.get_array_type(normalize_integer (most_general_type), start_position) declaration_type_memory := Result end end @@ -478,7 +490,7 @@ %%"create%" expression / instruction.)") error_handler.print_as_fatal_error end - Result := smart_eiffel.get_array_type(most_general_type, start_position) + Result := smart_eiffel.get_array_type(normalize_integer (most_general_type), start_position) end collect (type: TYPE): TYPE is @@ -495,6 +507,7 @@ most_general_type := smallest_ancestor(list.item(i).start_position, most_general_type, elt_type) i := i - 1 end + most_general_type := normalize_integer (most_general_type) -- Now notifying the `assignment_handler': from i := list.upper diff -u -r smarteiffel-21b.orig/tools/live_type.e smarteiffel-21b/tools/live_type.e --- smarteiffel-21b.orig/tools/live_type.e Wed Nov 10 18:51:00 2004 +++ smarteiffel-21b/tools/live_type.e Sat Nov 13 03:09:47 2004 @@ -2720,6 +2720,7 @@ canonical_type_mark.is_separate implies smart_eiffel.scoop local i: INTEGER; rf: RUN_FEATURE + dupes: HASHED_SET[STRING] -- Precursor dupe check do compile_to_c_done := True cpp.split_c_file_padding_here @@ -2757,12 +2758,17 @@ i := i + 1 end from + create dupes.make i := precursor_run_features.upper until i < precursor_run_features.lower loop rf := precursor_run_features.item(i) + if not dupes.has (rf.name.complete_name) then + -- do not output Precursor twice + dupes.add (rf.name.complete_name) rf.c_define_or_scoop_define + end i := i - 1 end if class_text.invariant_check and then class_invariant /= Void then diff -u -r smarteiffel-21b.orig/tools/smart_eiffel.e smarteiffel-21b/tools/smart_eiffel.e --- smarteiffel-21b.orig/tools/smart_eiffel.e Wed Nov 10 18:51:00 2004 +++ smarteiffel-21b/tools/smart_eiffel.e Thu Nov 18 20:49:51 2004 @@ -16,7 +16,7 @@ feature {ANY} copyright: STRING is "[ SmartEiffel The GNU Eiffel Compiler, Eiffel tools and libraries - Release 2.1 Beta#1 (Wed november 10th 2004) [Poirot] + Release 2.1 Beta#1 fa2 [Poireau] Copyright (C), 1994-2002 - INRIA - LORIA - ESIAL UHP Nancy 1 - FRANCE Copyright (C), 2003-2004 - INRIA - LORIA - IUT Charlemagne Nancy 2 - FRANCE D.COLNET, P.RIBET, C.ADRIAN, V.CROIZIER F.MERIZEN - SmartEiffel@loria.fr