Added a scope stack to keep track of different variable names in different scopes, which is turn enables support for name shadowing where multiple variables in different scopes can share the same name. Also added return statements without expressions and more errors if functions that don't have a return type are called in expressions. Also fixed an issue where \n was not handled correctly.
Added a scope stack to keep track of different variable names in different scopes, which is turn enables support for name shadowing where multiple variables in different scopes can share the same name. Also added return statements without expressions and more errors if functions that don't have a return type are called in expressions. Also fixed an issue where \n was not handled correctly.