I6 metaverbs interrupting regular verbs

Back in 2014, @Egon pointed out a problem in the Standard Library wherein if you interrupt incomplete input with a metaverb, the game will forget what you were doing. The bug is written up here:https://gitlab.com/DavidGriffith/inform6lib/-/issues/64. For instance:

>take
What do you want to take?

>trace
[Trace on.]

>gold key
That's not a verb I recognise.

All this time, I’ve been unable to figure out how to make the Library backtrack after processing a metaverb. Could I get some fresh eyes to look at this?

I think that’s a “by design” thing, not readily fixable.

As far as I can see, this (and this) is where it decides that the player has typed another verb instead of an answer, and then it returns from the current parse, destroying the information it would have needed to handle the answer.

Since lots of global state gets set during full parsing, it would probably be quite hard to preserve that, unless you had a separate dedicated minimalist parser you could invoke if you recognised that a “metaverb” was used and could parse and run it without disturbing the current parse.

Seems like more effort than it’s worth, for me, especially as outside of testing there aren’t many metaverbs that don’t have serious impact on the state of play (save/restore/undo/quit) anyway.

2 Likes

I was afraid of that, but I’m not surprised. I had the same conclusion, but didn’t want to call it unfixable quite yet. With that out of the way, version 6.12.4 of the Standard Library should be released in a day or so.

you can give an anticipation of the changelog ?

Best regards from Italy,
dott. Piergiorgio.

Yes, I’ll explain this in the ChangeLog.