doc/langref.md | 4 +- doc/vim/syntax/zig.vim | 2 +- src/all_types.hpp | 22 ++- src/analyze.cpp | 156 +++++++++++----- src/ast_render.cpp | 3 + src/codegen.cpp | 8 +- src/codegen.hpp | 1 - src/ir.cpp | 65 +------ src/ir_print.cpp | 9 - src/main.cpp | 5 - src/parser.cpp | 32 +++- src/tokenizer.cpp | 2 + src/tokenizer.hpp | 1 + std/compiler_rt.zig | 12 +- std/cstr.zig | 8 +- std/fmt.zig | 12 +- std/hash_map.zig | 4 +- std/list.zig | 4 +- std/math.zig | 4 +- std/mem.zig | 12 +- std/rand.zig | 12 +- std/sort.zig | 8 +- test/cases/array.zig | 24 +-- test/cases/atomics.zig | 8 +- test/cases/bool.zig | 20 +- test/cases/cast.zig | 12 +- test/cases/const_slice_child.zig | 4 +- test/cases/defer.zig | 8 +- test/cases/enum.zig | 20 +- test/cases/enum_with_members.zig | 4 +- test/cases/error.zig | 27 +-- test/cases/eval.zig | 74 ++------ test/cases/fn.zig | 39 ++-- test/cases/for.zig | 12 +- test/cases/generics.zig | 35 +--- test/cases/goto.zig | 8 +- test/cases/if.zig | 8 +- test/cases/import.zig | 4 +- test/cases/ir_block_deps.zig | 4 +- test/cases/math.zig | 68 ++----- test/cases/misc.zig | 179 +++++------------- test/cases/namespace_depends_on_compile_var/index.zig | 4 +- test/cases/null.zig | 32 +--- test/cases/pub_enum/index.zig | 8 +- test/cases/sizeof_and_typeof.zig | 4 +- test/cases/struct.zig | 78 +++----- test/cases/struct_contains_slice_of_itself.zig | 4 +- test/cases/switch.zig | 32 +--- test/cases/switch_prong_err_enum.zig | 4 +- test/cases/switch_prong_implicit_cast.zig | 4 +- test/cases/this.zig | 12 +- test/cases/try.zig | 8 +- test/cases/typedef.zig | 4 +- test/cases/undefined.zig | 12 +- test/cases/var_args.zig | 12 +- test/cases/void.zig | 4 +- test/cases/while.zig | 20 +- test/run_tests.cpp | 311 +++++++++++++++++++++++--------- 58 files changed, 617 insertions(+), 880 deletions(-)