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