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.
Ah, thank you Zarf. It makes things clearer. Maybe the error message could more explicit…
The bug was discribed in that post.