The difficulty seems to be in the handling of named responses which are defined inside loops.
In my copy of the Standard Rules, the rule in question is a Check an actor entering
rule on line 2519, and response (A) uses a variable current home
which is set with each in the first line inside a while
loop. Now consider the following simple story:
"testing" by Eric Conrad
Fooing is an action applying to one thing. Understand "foo [container]" as fooing.
Check fooing:
if the noun is not a container, say "Oops!".
Report fooing a container (this is the report fooing rule):
let baz be "foo";
repeat with x running through the list of things in the noun:
say "[baz] [x]." (A).
Barring is an action applying to one thing. Understand "bar [supporter]" as barring.
Check barring:
if the noun is not a supporter, say "Eek!".
Report barring a supporter (this is the report barring rule):
let baz be "bar";
repeat with x running through the list of things on the noun:
say text of the report fooing rule response (A).
Start is a room.
The jar is a container. It is in Start. The pickle is in the jar. The vinegar is in the jar.
The shelf is a supporter. It is in Start. The kitten is on the shelf. The baby is on the shelf.
Test me with "foo jar / bar shelf"
The response to the command foo jar
is, as expected:
foo pickle.
foo vinegar.
By analogy, the expected response to bar shelf
would seem to be:
bar kitten.
bar baby.
But analogy fails and the actual response in Inform 7 v6M62 is:
bar.vinegar.bar.vinegar
(Yes, just one line!) Curiously, if the response is not inside a repeat loop, the actual behaviour and the expected behaviour are in agreement.