forked from rebolsource/r3
-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rebDid()/Didnt() don't decay, check void
The concept behind DID and DIDN'T as the prefix form of the test used by ELSE and THEN evolved over time. At one point these tested against "pure null" vs. null isotopes (which were "unstable"). But it came to be that null itself was an isotopic WORD! that was "stable"...and the unstable form was actually an isotopic BLOCK! that encoded a null, which decayed to its first value. This change didn't make it through to the API variations of rebDid() and rebDidnt(). The values they tested were pre-decayed, hence they would not react to boxed nulls or voids correctly. (Also, void wasn't tested at all, as the APIs predated the existence of a reified void state.) Here those issues are addressed (although it doesn't handle isotopic objects--which are an experimental concept that may be dropped.) It names the evaluation routines explicitly in terms of whether they decay or not. So long as they were being renamed, it also encodes the fact that va_end() is called unconditionally by the routine in the name...rather than needing to have a comment to that effect at every callsite.
- Loading branch information
1 parent
f7adbf1
commit 45080dc
Showing
1 changed file
with
40 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters