Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

what function is broken #2419

Closed
mbk opened this issue Jul 20, 2015 · 1 comment
Closed

what function is broken #2419

mbk opened this issue Jul 20, 2015 · 1 comment

Comments

@mbk
Copy link

mbk commented Jul 20, 2015

Just type what in the console.....

>> what
** Script error: cannot use length? on word! value
** Where: length? if foreach what
** Near: length? word
@hostilefork
Copy link
Member

Patched. For the bug in LENGTH? on words, and why it was removed instead of fixed:

http://curecode.org/rebol3/ticket.rsp?id=2224

hostilefork referenced this issue in metaeducation/ren-c Aug 23, 2018
The breakdown of bits in a 32-bit value header are that the first 8
are generic node bits (some of which have specific meanings for cells),
the next 8 bits are a byte for the "kind of value" indicator, then
the next 8 are generic cell/value bits (like whether there is a new
line on the value when visualized in an array)...finally the last 8
are datatype-specific.

At one point, the third byte was actually the type-specific bits, and
bit rebol#23 was taken for a seemingly harmless purpose.  That was to
indicate trash or unreadability.  It didn't apply to most types, so if
a VAL_TYPE() operation had a false positive in the "rare" case that a
type used all 8 of its type specific bits...that would be fine, as long
as it wasn't a trashy type (like an unreadable BLANK! or a trash cell)

However, this prohibits the bit from being used for generic purposes
that would apply to any cell--including blanks.  Since the payload
is not used in blanks or trash except to log file/line/tick values,
this commit makes an adjustment that can still preserve that info,
by flipping the tick value to negative in the case of unreadability.

In order to keep the accelerated behavior of VAL_TYPE_Debug that had
previously been using bit 23, this just folds that in with the
"falsey" flag...so falsehood is used along with other warning bits
to quickly shortcut valid values and give back their types.  Slower
answers will be given back for blanks, nulls, or logic as it is
checked to see if they were genuinely falsey or just lumped in.
@hostilefork hostilefork transferred this issue from metaeducation/ren-c Aug 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants