For some reason `i` will be `32` after our for loop so an OOB happens when code tries to assign `'\0'` to `name[32]` since `name` size is 32.
Doing a `-1` to `i` fixed this issue and now throws `error 038: extra characters on line` when character count is over 31.
Makes the compiler slightly more future-proof by allowing us to do something like:
```pawn
#if __Pawn >= 0x03AB
#message You're on a nice new compiler.
#endif
```
Currently to do that you need to do:
```pawnc
#message You're on a nice new compiler.
```
```pawn
#if __Pawn >= 0x03AB
#include "message.inc"
#endif
```
Or you get an error that `#message` (or anything else) is an unknown directive if the compiler doesn't recognise it, even if it is disabled.
The only downside to this is that it makes it slightly harder to add new `#if`-like directives:
```pawn
#if __Pawn >= 0x03AB
#message You're on a nice new compiler.
#elif SHOW_ERROR
#error You've got an error.
#endif
```
A compiler that fails the first check AND doesn't recognise `#elif` will simply skip it and go all the way to `#endif`. It will not evaluate it as `#elseif` and potentially run the code within. It should somehow recognise `#elif` as a `#if`-like directive it just doesn't know and give an error. That would require some sort of hard convention we don't yet have. That, or we just define all possible ones now (even if they aren't implemented):
```pawn
#if
#else
#elseif
#elif
#ifdef
#elifdef
#elseifdef
#endif
#fi
#el
#ifndef
#elseifndef
#elifndef
```
Can't think of any more, but that doesn't mean there aren't any (does `iff` make any sense here?)
* Allow line continuation in single line comments
Other languages allow this:
// this is totally a single \
line comment
For example C++, at least GCC, Visual C++. I don't see why it
should be forbidden.
* Don't insert \a symbols to mark
Because we now don't need to check if there are '\\' in comments
we no longer have to mark their positions with '\a' symbols.
* Don't trim leading space after '\\'
Again, this is how other languages do it and it seems to be more
intuitive. If you don't want spaces just don't indent your lines.
new s[] = "see \
this?"
Example:
main()
{
new x;
emit load.pri x
}
Before this commit:
error 017: undefined symbol "x"
After:
error 001: expected token: "-data offset-", but found "-local variable-"