It’s a bit obscure, but I wonder if anyone has encountered this before?
Inform 7 will create Attributes in the compiled I6 code to represent either/or properties until the available stock of Attributes (48 in total) is exhausted, (at which point it creates object properties instead).
However, if an I7 either/or property is given an explicit I6 name, rather than a compiler-generated one, the compiler makes the substitution correctly throughout the generated code but ‘forgets’ to create the Attribute, leading to an error along these lines when trying to compile the I6 code:
C:\Program Files\Inform 7\Compilers\inform6 \
-wSDG +include_path=..\Source,.\ auto.inf output.ulx
Inform 6.33N for Win32 (30th August 2015)
auto.inf(10703): Error: Expected name of an already-declared attribute but found living_property
> has living_property
This is not a case of continuing to create a compiler-generated name for the Attribute statement- the Attribute statement simply isn’t generated at all.
The problem can be overcome by hand-coding the missing Attribute statement, as in this example story (uncomment the Include… phrase).
Lab is a room.
[Include (-
Attribute living_property;
-) after "Definitions.i6t".]
An animal can be living or dead.
The living property translates into I6 as "living_property".
An animal is usually living.
Definition: An animal is quick rather than deceased if I6 condition "*1 has living_property" says so (it yet survives).
The wheel is a transparent container in the Lab.
The hamster is an animal in the wheel.
When play begins:
If the hamster is quick, say "The [hamster] lives!";
Now the hamster is dead;
Unless the hamster is quick, say "... spoke too soon! It is now bereft of life :-([paragraph break]".
Not sure if anyone is keeping a tally of bug reports while the bug-reporting website is down?