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/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 Fri Nov 12 02:23:54 2004 @@ -90,7 +90,7 @@ check cl /= Void end - exported := cl.gives_permission_to(t.class_text.name) + exported := True --removed cl.gives_permission_to(t.class_text.name) 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 Sun Nov 14 19:19:40 2004 @@ -36,6 +36,10 @@ smallest_ancestor (sp: POSITION; t1: TYPE; t2: TYPE): TYPE is do Result := t1.smallest_ancestor(t2) + -- Force INTEGER instead of INTEGER_xx + if Result.is_integer then + Result := smart_eiffel.type_integer + end if Result = Void then error_handler.add_position(sp) error_handler.append("There is no common conformant parent for ") 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 Sun Nov 14 20:47:49 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 fa1 [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