A heads-up: when I was looking through the I6 source code a while back, I discovered that this was permitted by the compiler:
[ FuncName;
#Global globvar = 1;
return globvar;
];
That is, sticking a global variable definition inside a function. The source included this comment:
(Technically this permits *any* #-directive, which means you
can define global variables or properties or what-have-you in
the middle of an object. You can do that in the middle of an
object, too. Don't. It's about as well-supported as Wile E.
Coyote one beat before the plummet-lines kick in.) */
In the interest of protecting Our Friend the Coyote, I am updating the compiler to treat this as an error.
In future releases, only the following directives will be accepted inside a function or object definition:
#ifv3 #ifv5 #ifdef #ifndef #iftrue #iffalse #ifnot #endif
#message #origsource #trace
This shouldn’t affect any real I6 (or I7) source code. Unless you are doing a weird trick like #including function code from one file into the middle of another function. If you are, please let me know!