moj@tucos.UUCP (Matti Jokinen) (06/08/89)
Description: The compiler believes that istream$can_read and
istream$can_write are undefined and that istream$set_date has only
one argument. The bug is in the machine-independent part of the
compiler and presumably occurs in all implementations.
Repeat-by: Compile the following program:
p = proc(s: istream)
if istream$can_write(s) cor istream$can_read(s) then
s.date := now()
end
end p
Fix: The bug is in the file ~clu/cmp/basic.types. The module itself,
defined in ~clu/lib/clu/istream, is correct. Make the following changes
to ~clu/cmp/basic.types and reinitialize the compiler:
1254,1255c1254,1256
< istream = cluster is open, empty, reset, flush, get_date, set_date,
< get_name, close, abort, is_closed, equal, similar, copy
---
> istream = cluster is open, can_read, can_write, empty, reset, flush,
> get_date, set_date, get_name, close, abort,
> is_closed, equal, similar, copy
1262a1264,1269
> can_read = proc (ist: istream) returns (bool)
> end can_read
>
> can_write = proc (ist: istream) returns (bool)
> end can_write
>
1275c1282
< set_date = proc (ist: istream) signals (not_possible(string))
---
> set_date = proc (ist: istream, new_date: date) signals (not_possible(string))
In Unix systems you don't need to recompile or relink anything. Remove
~clu/cmp/state.N, where N is the version number, type `clu' and when the
prompt appears type `kill'. In DEC-20 you must first relink the compiler
unless you saved the uninitialized version when you rebuilt the compiler
last time.