Open
Description
Right now the separation of passes is very close to how lslint and LL's compiler worked, but walking the AST isn't free. Right now the most cumulatively expensive part of the code is the tree walking logic, merging things into fewer passes == fewer tree walks == faster.
At least symbol resolution and type checking could be merged into one visitor (maybe with a flag field to determine whether to actually check types / resolve symbols.)