Rewrite the memory management code for Nintendo Switch
The first implementation was naive and did not account for multiple
memory allocations. However, this implementation may still be
incomplete. Currently, when running applications, the code runs fine.
When the application is exited via code (the end of the program is
reached or quit() is called), the Switch will crash. Not sure why this
happens, but I suspect it is from Nim memory allocations.
I suspect the memory allocations because when I compile the helloworld
application without any Nim allocations (just C function calls) and use
`--gc:none` as a compile option, the application exits fine.
* deprecate `0c`, `0C` prefix for octal literals
Deprecates the previously allowed syntax of `0c` and `0C` as a prefix for
octal literals to bring the literals in line with the behavior of
`parseOct` from parseutils.
* add `msgKind` arg to `lexMessageLitNum` for deprecation messages
* change literal tests to check all valid integer literals
Also adds the `tinvaligintegerlit3` test to test for the (still)
invalid `0O` prefix.
* call `semExpr` in `semIs` if node is `strLit`, fixes#8129
In case the second son of the node in `semIs` is of kind `strLit`, we
now call `semExpr` to set the `typ` field of that node.
Also removes the `t2 != tyTypeDesc` check in `isOpImpl`, since the
kind of `n[2]` is already assertet with the `internalAssert`.
* reintroduce check for `t2.kind != tyTypeDesc` to fix test case
The `internalAssert` in the `isOpImpl` doesn't check
`n.sons[2].typ.kind` as I previously read, but rather
`n.sons[2].kind`. Therefore the check for `tyTypeDesc` here is
useful. Otherwise the last test case in `isopr.nim` fails.
Also removes the flag `efDetermineType` from the call to `semExpr`.