Mantis Bug Tracker

View Revisions: Issue #753 All Revisions ] Back to Issue ]
Summary 0000753: I6 substitution returning a value can be used for any kind
Revision 2011-09-21 17:07 by EmacsUser
Description In the attached source, foo is invoked with bar as a parameter, even though a value is not necessarily a device.
Revision 2011-09-21 17:07 by EmacsUser
Description In the below source text, I expose I6's "parse" array variable to I7. It's an array of structs, basically. I've defined a "field" of a struct as "a relation of number to K", where K is the type of the element. So I've defined the array itself as "a relation of index to (a relation of number to K)" to put it succinctly. But I hit one or two problems with it.

First problem: I define the gettor function so that the kind variable K, set by the field's type, is re-used in the array type. Except I get spurious I7 compilation errors about the return value no longer being say-able. If I comment-out the K and leave "word value" in its place, everything compiles and works beautifully. In the source, see the to-decide function that has K commented out.

Second problem: since the Z-machine uses bytes as indexes (the -> operator), I changed the field from "number" to "arithmetic value" where needed. But the array's type doesn't like it, giving the same un-say-able values error. If I comment out [arithmetic] and just use "value", it works again. Huh? How can the super-specific "number" and super-general "value" both work but not the "arithmetic value" in-between? (In the source, see the definition for (-parse-) which has arithmetic commented out.)

[The below source text compiles and works as-is for both VMs. Uncommenting arithmethic, or swapping the commented K with word value, exposes the bug(s).]

Copyright © 2000 - 2010 MantisBT Group
Powered by Mantis Bugtracker