.gitignore | 1 + Cargo.lock | 34 +- Cargo.toml | 13 +- crates/ast/Cargo.toml | 3 +- crates/ast/ast.rs | 247 +++++++++++++++ crates/ast/lib.rs | 7 + crates/ast/operators.rs | 315 +++++++++++++++++++ crates/ast/src/error.rs | 17 - crates/ast/src/lib.rs | 27 -- crates/ast/src/parse_block.rs | 55 ---- crates/ast/src/parse_expression.rs | 105 ------- crates/ast/src/parse_function_call.rs | 56 ---- crates/ast/src/parse_statement.rs | 261 ---------------- crates/ast/src/parse_type.rs | 21 -- crates/ast/src/types.rs | 109 ------- crates/ast/types.rs | 208 +++++++++++++ crates/cli/Cargo.lock | 532 -------------------------------- crates/cli/Cargo.toml | 4 +- crates/cli/main.rs | 172 +++++++++++ crates/cli/src/main.rs | 118 ------- crates/js_ast/Cargo.toml | 4 +- crates/js_ast/convert/block_convert_context.rs | 244 +++++++++++++++ crates/js_ast/convert/convert_valid_block.rs | 37 +++ crates/js_ast/convert/convert_valid_expr.rs | 115 +++++++ crates/js_ast/convert/convert_valid_if.rs | 38 +++ crates/js_ast/convert/convert_valid_statement.rs | 32 ++ crates/js_ast/convert/hoist_block_to_expr.rs | 78 +++++ crates/js_ast/convert/hoist_block_to_js_block.rs | 68 ++++ crates/js_ast/convert/hoist_expr.rs | 132 ++++++++ crates/js_ast/convert/hoist_if.rs | 113 +++++++ crates/js_ast/convert/is_valid_js_expression.rs | 91 ++++++ crates/js_ast/convert/mod.rs | 42 +++ crates/js_ast/convert/process_function.rs | 63 ++++ crates/js_ast/convert/process_statement.rs | 95 ++++++ crates/js_ast/convert/side_effects.rs | 91 ++++++ crates/js_ast/convert/tree_shake_statement_list.rs | 31 ++ crates/js_ast/js_ast.rs | 190 ++++++++++++ crates/js_ast/lib.rs | 7 + crates/js_ast/src/lib.rs | 348 --------------------- crates/js_ast/src/types.rs | 54 ---- crates/js_ast/util.rs | 17 + crates/js_printer/Cargo.toml | 2 +- crates/js_printer/lib.rs | 372 ++++++++++++++++++++++ crates/js_printer/printer_tests.rs | 53 ++++ crates/js_printer/src/lib.rs | 16 - crates/js_printer/src/print_expression.rs | 266 ---------------- crates/js_printer/src/print_statement.rs | 145 --------- crates/parser/Cargo.toml | 15 + crates/parser/parse_block.rs | 64 ++++ crates/parser/parse_call_arguments.rs | 36 +++ crates/parser/parse_declaration.rs | 50 +++ crates/parser/parse_doc_comment.rs | 15 + crates/parser/parse_expr.rs | 99 ++++++ crates/parser/parse_expr_basic.rs | 180 +++++++++++ crates/parser/parse_expr_if.rs | 70 +++++ crates/parser/parse_fn_declaration.rs | 122 ++++++++ crates/parser/parse_module.rs | 44 +++ crates/parser/parse_param.rs | 30 ++ crates/parser/parse_statement.rs | 66 ++++ crates/parser/parse_top_level_statement.rs | 10 + crates/parser/parse_type.rs | 26 ++ crates/parser/parser.rs | 144 +++++++++ crates/sema/Cargo.toml | 14 + crates/sema/ast_type_coersion.rs | 54 ++++ crates/sema/sema.rs | 98 ++++++ crates/sema/sema_scope.rs | 0 crates/tokenizer/Cargo.toml | 3 +- crates/tokenizer/src/lib.rs | 227 -------------- crates/tokenizer/tokenizer.rs | 409 ++++++++++++++++++++++++ crates/util/Cargo.toml | 8 - crates/util/src/lib.rs | 30 -- examples/basics/control.blight | 2 +- examples/basics/expressions.blight | 2 +- examples/basics/fib.blight | 2 +- examples/basics/functions.blight | 2 +- examples/basics/operations.blight | 2 +- examples/basics/shadowing.blight | 2 +- examples/basics/stupid.blight | 2 + examples/basics/variables.blight | 2 +- examples/basics/weird.blight | 2 +- examples/interop/deno.blight | 2 +- 81 files changed, 4462 insertions(+), 2421 deletions(-)