[m-dev.] tightening up require_complete_switch
Peter Wang
novalazy at gmail.com
Mon Apr 11 11:31:06 AEST 2016
Hi,
I recently found a bug in my code where the named variable was not
actually the subject of the switch:
require_complete_switch [Op]
(
Obj = foo, ...
;
Obj = bar, ...
;
...
)
In real code the problem may not be as readily apparent, but the
require_complete_switch gives a false sense of security.
Another problem that occurs is where the subgoal is not actually a
switch so the compiler does nothing with it.
require_complete_switch was designed to cope with multi-moded code, but
most code is not multi-moded. Perhaps require_complete_switch can be
more strict in single-moded clauses, i.e. it would report an error
unless the sub-goal is a complete switch on the named variable?
Or simply remove the subtlety in require_complete_switch even if
that means require_complete_switch could no longer be used in some
multi-moded code.
If require_complete_switch were stricter, the VAR part could be made
optional as well.
Peter
More information about the developers
mailing list