SmartEiffel 2 patches

SmartEiffel 2 has, at the time of writing, some bugs which prevent the use of the compiler with some Eiffel libraries, such as that of the Gobo project. It may be useful to anyone with code that needs to be portable to other Eiffel compilers, or whose code depends on the bugs patched.

This patch set provides fixes and workarounds for these problems with SmartEiffel. All of the problems patched so far are documented in SmartEiffel's bug database, and will be referred to here by their number in the database.

The aim is to get the problems fixed so that this patch set is no longer necessary in the future. Unfortunately, most patches are ugly workarounds rather than proper fixes, and so not acceptable for integration in the compiler.

Feedback can be sent via email. Feedback about the SE bugs themselves can be sent to the SE mailing list.

How to apply

An installed copy of the corresponding version of SmartEiffel is needed.

From a unix shell, this translates to:

You may want to keep a copy of the old executable.

Patch list

Current patch (2005-01-08): fa1.

SE version Patch version Bugs patched Description
2.1beta5 fa1 392, 431 New SE version. 395 fixed in SE. 430 worked around in Gobo, but problem still there.
2.1beta2 fa1 392, 395, 430, 431 Port to new SE version, 433 removed
2.1beta1 fa2 392, 395, 430, 431, 433 Fixed <<1>> and added basic_flush patch
2.1beta1 fa1 392, 395, 430, 431 First patch

Patched bugs list

This list the bugs that are patched by this patch sed. Accepted means that the SmartEiffel authors have accepted that this is a bug, and so are likely to fix it properly in the future. Bugs that are not accepted as bugs will not be fixed by them, and you are welcome to ask them to reconsider if you agree the issue is worth fixing.

Smartzilla number Title Accepted Comments
392 ANY.same_type no ELKS-non compliance, regression from SE1, replacement routine is a catall. Patch does type name comparison which is not optimal.
430 manifest ARRAY[INTEGER] no Patch should be quite safe. Refused by SE because it's legacy. There is no known way to write manifest integer arrays that compile with SE and another Eiffel compiler.
431 export merging yes The patch removes all export checking, so this must be checked with another compiler, e.g. SE1.

Fixed bugs

These SE bugs were included in previous versions of the patch set but have now been fixed.

Smartzilla number Title Comments
395 Precursor called twice Workaround patch, proper patch would require that the collection of Precursor calls does not add duplicates in the list of precursor routines.
433 missing basic_flush The patch only adds an empty function so that the compilation works, so files will not really be flushed.