[RFC 3028]
| 2.5. Tests
|
| Tests are given as arguments to commands in order to control their
| actions. In this document, tests are given to if/elsif/else to
| decide which block of code is run.
|
| Tests MUST NOT have side effects. That is, a test cannot affect the
| state of the filter or message. No tests in this specification have
| side effects, and side effects are forbidden in extension tests as
| well.
it's interesting to see that in the discussion leading up to this in
late 1998 Tim Showalter wrote:
4. Request: Short-circuit evaluation should be either MAY or MUST, and
must be discussed in case it matters in the future.
(I have heard contradictory opinions on this. Someone (I forget
who) wanted it removed since it doesn't yet matter. Chris (and
probably others) want it in there because it will probably
eventually matter. I propose that it has to be discussed, is a MAY
for implementations, and a MUST if extensions offer tests with side
effects.)
in the end the consensus was to sidestep the short-circuit requirement
by outlawing side effects.
when Marc Mutz brought up the conflict between the base specification
and the variables extension, Ned replied:
We have to reach consensus to revise the specification and remove the
MUST.
must this be done before submitting "variables" to IESG?
Coincident with it would be OK.
Ned