Is there a list somewhere of forbidden words for inform 7 ? (I mean the key words that should not be used as kind or variable names)
For example, I could not compile my story because I had defined a kind called “storage”.
Everything was fine until I created a phrase “Decide whether (stuff - a storage) …”. In that specific phrase, the compiler understood storage as something different. Changing the name to “stock” solved the issue.
I also tried to create a value called “empty” or “nothing”, and it was not possible. So I had to use french (vide).
So such a list, if it is somewhere would really be useful.
Unless it is a bug…
Look at the Index. The collisions you should worry about are between kinds of value, kinds of object, and a few global objects (like “southwest” or “yourself” or “nothing”).
Usually I say that I7 doesn’t have a notion of reserved words. Identifiers are phrases and you can usually use any word within a phrase. (For example, you could have named your kind “game storage” with no trouble.) They are sometimes contextual as well. (You could define “storage” as an object or a value and that would work too.)
The case you ran into is rare; “storage” has special meaning only in the context of a phrase argument. It’s a kind placeholder (but not a true kind) in this context. Unfortunately I don’t think there’s a list of what terms have special-case meaning to Inform in this way.
I’m going to file a bug about this, because it’s inevitable once you define “storage” as a kind.
Most name collisions, like trying to redefine “empty” or “nothing”, are caught by the compiler and you get a meaningful error. Or else the compiler permits them because there’s enough context to disambiguate.