* Implement block scoped variable declarations
`const` and `let` are now scoped to the block, while `var` is scoped to
the surronding function (or global).
Another bigger change is that all tests have been changed to use `var`
instead of `let` or `const`. This is because every time `forward` is
called with some new Javascript to evaluate, we parse it as a block,
hence variables can only persist across calls to `forward` if they are
defined using `var`. I assume it is intentional to parse each call as a
separate block, because a block is the only `ExprDef` which can contain
multiple statements.
Closes#39
* Prefer environment parent over environment_stack
Instead of iterating over the `environment_stack` we rather use
`get_outer_environment` as it will be a better fit when asyncronous
functions are implemented.
* Ensure variable from outer scope is assigned
Variables that are defined outside a block should be changeable within
the scope. Just because variable is undefined does not mean it is not
initialized.
* Fixed clippy warnings option_unwrap_used and result_unwrap_used.
* Fixed float_cmp clippy error and the option_unwrap_used it was hiding.
* Fixed shadowing issues.
* Disabled some clippy lints in tests.
* Fixed clippy string_add issues.
* Added allow else_if_without_else since an else-block would not make sense.
* Fixed integer arithmetic issues.
* Fixed all clippy get_unwrap issues.
* Fixed usage of unimplemented and an occurrence of variable name shadowing.
* Fixed indexing may panic issues.
* Fixed a slicing may panic issue.
* Changed some unnecessary uses of match that I introduced for expect.
* Added create_constructor method
* Updated global to use json::create_constructor method
* unassigned var is undefined (#125)
* Unassigned variables are set to `undefined` not `null`
Fixes#113
* Rust tests for `var x` and `let x` default to undefined
* CHANGELOG for issue #113 fix + add tests/js/test.js to gitignore.
* fixing PR benchmarks (#132)
* fixing PR benchmarks
* Push after rebase
* Updated import order
* Formatting