doc/langref.md | 12 +- doc/vim/syntax/zig.vim | 2 +- src/all_types.hpp | 22 +- src/analyze.cpp | 327 +++++++++++++++------- src/ast_render.cpp | 14 - src/codegen.cpp | 27 +- src/eval.cpp | 7 +- src/parseh.cpp | 1 - src/parser.cpp | 203 ++++---------- src/tokenizer.cpp | 4 + src/tokenizer.hpp | 2 + std/bootstrap.zig | 9 +- std/builtin.zig | 6 +- std/compiler_rt.zig | 16 +- std/cstr.zig | 9 +- std/hash_map.zig | 3 +- std/io.zig | 3 +- std/list.zig | 3 +- std/mem.zig | 2 +- std/net.zig | 12 +- std/os.zig | 3 +- std/rand.zig | 9 +- std/str.zig | 5 +- test/cases/const_slice_child.zig | 15 +- test/cases/enum_to_int.zig | 25 +- test/cases/enum_with_members.zig | 3 +- test/cases/max_value_type.zig | 3 +- test/cases/maybe_return.zig | 8 +- test/cases/namespace_depends_on_compile_var/index.zig | 3 +- test/cases/pub_enum/index.zig | 6 +- test/cases/return_type_type.zig | 3 +- test/cases/sizeof_and_typeof.zig | 3 +- test/cases/struct_contains_slice_of_itself.zig | 3 +- test/cases/switch_prong_err_enum.zig | 6 +- test/cases/switch_prong_implicit_cast.zig | 6 +- test/cases/this.zig | 9 +- test/cases/var_params.zig | 9 +- test/cases/zeroes.zig | 3 +- test/run_tests.cpp | 68 +++-- test/self_hosted.zig | 466 +++++++++++++++++++++----------- 40 files changed, 812 insertions(+), 528 deletions(-)