donnelly@cs.tcd.ie (Alexis Donnelly) (12/20/89)
We have received version 2.2 Level A, of Eiffel for a Microvax running
Ultrix Version 3.0, and are evaluating the language. We have found the
following few bugs, which I'm posting for the benefit of other Eiffel
users out there.
Anybody else encountered similar problems ? If you have, I would
greatly appreciate an e-mail, if not a posting to this newsgroup. Many
thanks in advance. Here goes with the bug-list:
1. Hash sign as a character constant is not accepted.
This bug has previously been reported to comp.lang.eiffel, but
not fixed yet. (Message-ID: <4503@vlot.cs.vu.nl> from jos@cs.vu.nl
<Jos Warmer>.) It causes the "cc-compilation" to fail.
2. Compiler accepts the illegal character constant '\"'.
The construct is accepted and appears to be valued as a backslash, except
in inspect statements. (see 5 below)
3. _Deepcopy and _Deepequal are missing from
$INSTALLATION/Eiffel/files/_run_time.a
The loader (ld) fails during the final part of the compilation (even of
a simple hello world program), because it can't find the global symbols
_Deepcopy and _Deepequal.
_run_time.a is supposed to supply these. These symbols are the names of
externally visible routines in the support library (source file
$INSTALLATION/Eiffel/files/_deep.c). If compiled correctly, _deep.c
should export these symbols as entry-points. However, they are not
in _run_time.a !!! _run_time.a in fact exports _DeepCopy and _DeepEqual !
CURE:
I deleted _deep.o from a copy of _run_time.a (using ar), and added the
new _deep.o (again with ar). (_deep.o was cc-compiled from _deep.c).
I then used ranlib to re-build a
random-acces library. The new _run_time.a was placed in
$INSTALLATION/Eiffel/files and subsequent compiles have not failed in
this way since.
I phoned ISE and spoke to John Sarkela. A mail describing how to fix
this (and other bugs they know of) is supposed to be underway. To date
I have not received anything yet !!!!! What's happening guys ???
BTW, the run-time library can be fully re-built using make -f _makeD,
which can be found in the same sub-directory.
4. The .out function of ANY doesn't appear to work for character constants.
It works fine for variables though.
Pass 4 cancels when it encouters the .out function invoked on a
character constant:
===================source: hello.e==================================
class HELLO feature
Quote_char : CHARACTER is '\'';
Backslash_char : CHARACTER is '\\';
s : STRING;
c : CHARACTER;
Create is
-- Print Hello World
do
io.putstring("Hello World");
io.new_line;
io.putstring(Backslash_char.out); -- pass 4 cancels
s.Create(3);
s := Backslash_char.out; -- pass 4 cancels
c := '?'; io.putstring(c.out); -- works fine
end -- Create
end -- class HELLO
===================session log:=====================================
Eiffel compilation manager
(version 2.2 level A)
Pass 1 on class hello
class hello: pass 2 output is older than pass 1 output
Pass 2 on class hello
Interface may have changed.
class hello: pass 3 output is older than pass 2 output
Pass 3 on class hello
class hello: pass 4 output is older than pass 3 output
Pass 4 on class hello
es: pass4 canceled
====================================================================
The language manual seems to imply that this should work (p173).
5. The compiler (pass 4) complains about when-constants in an inspect
being identical, when one of the when-constants is an illegal
character constant, but is accepted by the compiler and appears
to work in many other situations. First noticed when compiling
$INSTALLATION/Eiffel/lexical/high_builder.e. (line 302)
=======================source: hello.e============================
class HELLO feature
TC1 : CHARACTER is '\"'; -- compiler accepts this illegal syntax
Quote_char : CHARACTER is '\'';
Backslash_char : CHARACTER is '\\';
scanning_char : CHARACTER;
c : CHARACTER;
Create is
-- Print Hello World
do
io.putstring("Hello World");
io.putchar(TC1); -- Double quote printed
io.putchar(Quote_char); -- Single quote printed
io.new_line;
inspect scanning_char
when Backslash_char then
io.putstring("Got a backslash\n")
when '\"' then -- complains here
io.putstring("Got a double-quote\n")
else io.putstring("Got something else\n")
end;
if Backslash_char = TC1 then -- everything else works OK
io.putstring("They're the same\n")
else
io.putstring("They're different\n")
end;
if Backslash_char = '\"' then
io.putstring("They're the same\n")
else
io.putstring("They're different\n")
end;
c := TC1; io.putstring(c.out);
io.putchar(TC1); io.new_line;
c := Backslash_char; io.putstring(c.out);
io.putchar(Backslash_char); io.new_line;
c := Quote_char; io.putstring(c.out);
io.putchar(Quote_char); io.new_line;
end -- Create
end -- class HELLO
=======================session log:===============================
Eiffel compilation manager
(version 2.2 level A)
Pass 1 on class hello
class hello: pass 2 output is not available
Pass 2 on class hello
Interface may have changed.
class hello: pass 3 output is older than pass 2 output
Pass 3 on class hello
class hello: pass 4 output is not available
Pass 4 on class hello
"hello", 19: Inspect values appearing in different When clauses
of an inspect instruction must be different.
es: error in pass4
==================================================================
6. "canceled" is spelt wrong in the output when ec cancels a particular
compilation pass. It should be "cancelled" !!!
I have been in contact with Interactive Software Engineering (ISE)
re one of these bugs, but have not yet received a promised fix.
I'd also like to know when the next release (with these bugs fixed) will
be available, I have to date received no updates from the french distributor
(SOL in Paris), as per our maintenance agreement.
Despite, these implementation bugs I still think Eiffel is in many respects
an elegant language. The tools supplied with it are quite useful too.
Happy Christmas Eiffel NetLanders....
Alex Donnelly,
Distributed Systems Group,
Department of Computer Science,
Trinity College Dublin.
Newsgroups: comp.lang.eiffel
Subject: Bugs
Expires:
References:
Sender:
Reply-To: donnelly@cs.tcd.ie (Alexis Donnelly)
Followup-To:
Distribution: world
Organization: DSG, Dept. of Comp.Sc., Trinity College, Dublin, Ireland.
Keywords: bertrand@eiffel.UUCP (Bertrand Meyer) (12/22/89)
<1989Dec19.165420.7477@cs.tcd.ie>, by donnelly@cs.tcd.ie (Alexis Donnelly) includes a comment which is too tempting to pass: > 6. "canceled" is spelt wrong in the output when ec cancels a particular > compilation pass. It should be "cancelled" !!! > Both the Unix ``spell'' command (which I wouldn't, however, trust as the final arbiter) and my big ``Webster's Deluxe Unabridged Dictionary'', Dorset & Baber, Second Edition, accept both ``cancelled'' and ``canceled''. (As an aside, the dictionary accepts ``spelt'' but the Unix command rejects it!) This may be a case of British vs. American spelling, although ``spell -b'' (``British usage'') also accepts both. This option of ``spell'' is openly advertized as a fake, however. I don't have a trustworthy British dictionary within reach of hand. This nitpicking is not a device to avoid answering the other (non-grammatical) aspects of Prof. Donnelly's message. I or someone else will post an answer shortly. -- -- Bertrand Meyer bertrand@eiffel.com
sommar@enea.se (Erland Sommarskog) (12/23/89)
Alexis Donnelly (donnelly@cs.tcd.ie) writes: > 6. "canceled" is spelt wrong in the output when ec cancels a particular > compilation pass. It should be "cancelled" !!! If I am to believe my grammar, "canceled" is perfectly correct American English. -- Erland Sommarskog - ENEA Data, Stockholm - sommar@enea.se Mail me your votes on comp.lang.cobol.
kim@helios.enea.se (Kim Wald`n) (01/03/90)
My reference "Engelsk universitetsgrammatik" by Svartvik and Sager, which is the standard reference grammar used by the Swedish universities, states (p 435): [... for verbs with non-stressed last syllable and for the adjective `cruel', the ending `l' is doubled in British English, but NOT in American English: cancel cancelling cancelled travel travelling travelled cruel crueller cruellest ] So according to this work `canceled' is the correct spelling for Eiffel, being developed in Santa Barbara, US, and `cancelled' would be inconsistent. -- Kim Walden Enea Data, Sweden kim@enea.se