doc/docgen.zig | 2 - doc/langref.html.in | 148 +++-- lib/std/buffer.zig | 9 +- lib/std/builtin.zig | 8 + lib/std/c.zig | 6 +- lib/std/child_process.zig | 3 +- lib/std/crypto/x25519.zig | 12 +- lib/std/cstr.zig | 4 +- lib/std/debug.zig | 16 +- lib/std/dynamic_library.zig | 8 +- lib/std/event/fs.zig | 6 +- lib/std/fmt.zig | 112 ++-- lib/std/fs.zig | 56 +- lib/std/fs/file.zig | 16 +- lib/std/fs/path.zig | 2 +- lib/std/hash/siphash.zig | 256 ++++---- lib/std/io/test.zig | 4 +- lib/std/mem.zig | 24 +- lib/std/meta.zig | 12 +- lib/std/meta/trait.zig | 2 - lib/std/net.zig | 20 +- lib/std/os.zig | 99 +-- lib/std/os/bits/darwin.zig | 2 +- lib/std/os/bits/linux.zig | 2 +- lib/std/os/linux.zig | 2 +- lib/std/os/linux/test.zig | 4 +- lib/std/os/linux/vdso.zig | 6 +- lib/std/os/wasi.zig | 4 +- lib/std/os/windows.zig | 17 +- lib/std/process.zig | 20 +- lib/std/special/c.zig | 10 +- lib/std/special/start.zig | 12 +- lib/std/special/test_runner.zig | 2 +- lib/std/thread.zig | 2 +- lib/std/valgrind/memcheck.zig | 2 +- lib/std/zig/ast.zig | 31 +- lib/std/zig/parse.zig | 237 ++++--- lib/std/zig/parser_test.zig | 9 +- lib/std/zig/render.zig | 40 +- lib/std/zig/tokenizer.zig | 84 +-- src-self-hosted/clang.zig | 6 +- src-self-hosted/codegen.zig | 6 +- src-self-hosted/compilation.zig | 10 +- src-self-hosted/ir.zig | 12 +- src-self-hosted/link.zig | 126 ++-- src-self-hosted/llvm.zig | 44 +- src-self-hosted/stage1.zig | 6 +- src-self-hosted/translate_c.zig | 37 +- src-self-hosted/util.zig | 6 +- src-self-hosted/value.zig | 2 +- src/all_types.hpp | 29 +- src/analyze.cpp | 355 ++++++----- src/analyze.hpp | 13 +- src/ast_render.cpp | 13 +- src/codegen.cpp | 75 ++- src/ir.cpp | 1096 ++++++++++++++++++++++++-------- src/parser.cpp | 183 ++++-- src/tokenizer.cpp | 122 +--- src/tokenizer.hpp | 4 - src/translate_c.cpp | 22 +- test/cli.zig | 2 +- test/compare_output.zig | 72 +-- test/compile_errors.zig | 75 ++- test/stage1/behavior/array.zig | 39 +- test/stage1/behavior/bugs/1076.zig | 16 +- test/stage1/behavior/cast.zig | 165 ++++- test/stage1/behavior/const_slice_child.zig | 9 +- test/stage1/behavior/eval.zig | 2 +- test/stage1/behavior/if.zig | 4 + test/stage1/behavior/misc.zig | 17 +- test/stage1/behavior/pointers.zig | 64 +- test/stage1/behavior/ptrcast.zig | 2 +- test/stage1/behavior/slice.zig | 15 +- test/stage1/behavior/struct.zig | 15 +- test/stage1/behavior/type.zig | 147 +++-- test/stage1/behavior/type_info.zig | 31 +- test/stage1/c_abi/main.zig | 2 +- test/stage2/compare_output.zig | 4 +- test/standalone/hello_world/hello_libc.zig | 2 +- test/translate_c.zig | 28 +- 80 files changed, 2589 insertions(+), 1600 deletions(-)