Commit 4e43973413
Changed files (8)
doc
src
test
doc/langref.md
@@ -9,7 +9,7 @@ TopLevelDecl : FnDef | ExternBlock | RootExportDecl | Import | ContainerDecl | V
ErrorValueDecl : option(FnVisibleMod) "error" "Symbol"
-VariableDeclaration : option(FnVisibleMod) ("var" | "const") "Symbol" ("=" Expression | ":" PrefixOpExpression option("=" Expression))
+VariableDeclaration : option(FnVisibleMod) ("var" | "const") "Symbol" option(":" PrefixOpExpression) "=" Expression
ContainerDecl : many(Directive) option(FnVisibleMod) ("struct" | "enum") "Symbol" "{" many(StructMember) "}"
example/cat/main.zig
@@ -18,11 +18,10 @@ pub fn main(args: [][]u8) -> %void {
} else if (arg[0] == '-') {
return usage(exe);
} else {
- var is: InputStream;
- is.open(arg, OpenReadOnly) %% |err| {
+ var is = input_stream_open(arg, OpenReadOnly) %% |err| {
%%stderr.print("Unable to open file: {}", ([]u8)(err));
return err;
- }
+ };
defer is.close();
catted_anything = true;
@@ -40,7 +39,7 @@ fn usage(exe: []u8) -> %void {
}
fn cat_stream(is: InputStream) -> %void {
- var buf: [1024 * 4]u8;
+ var buf: [1024 * 4]u8 = undefined;
while (true) {
const bytes_read = is.read(buf) %% |err| {
example/guess_number/main.zig
@@ -6,7 +6,7 @@ import "rand.zig";
pub fn main(args: [][]u8) -> %void {
%%stderr.print_str("Welcome to the Guess Number Game in Zig.\n");
- var seed : u32;
+ var seed : u32 = undefined;
const seed_bytes = (&u8)(&seed)[0...4];
%%os_get_random_bytes(seed_bytes);
@@ -16,7 +16,7 @@ pub fn main(args: [][]u8) -> %void {
while (true) {
%%stderr.print_str("\nGuess a number between 1 and 100: ");
- var line_buf : [20]u8;
+ var line_buf : [20]u8 = undefined;
const line_len = stdin.read(line_buf) %% |err| {
%%stderr.print_str("Unable to read from stdin.\n");
src/analyze.cpp
@@ -2625,7 +2625,7 @@ static VariableTableEntry *analyze_variable_declaration_raw(CodeGen *g, ImportTa
}
TypeTableEntry *implicit_type = nullptr;
- if (variable_declaration->expr != nullptr) {
+ if (variable_declaration->expr) {
implicit_type = analyze_expression(g, import, context, explicit_type, variable_declaration->expr);
if (implicit_type->id == TypeTableEntryIdInvalid) {
// ignore the poison value
@@ -2657,10 +2657,8 @@ static VariableTableEntry *analyze_variable_declaration_raw(CodeGen *g, ImportTa
buf_sprintf("global variable initializer requires constant expression"));
}
}
- }
-
- if (implicit_type == nullptr && is_const) {
- add_node_error(g, source_node, buf_sprintf("const variable missing initialization"));
+ } else {
+ add_node_error(g, source_node, buf_sprintf("variables must be initialized"));
implicit_type = g->builtin_types.entry_invalid;
}
std/bootstrap.zig
@@ -24,7 +24,7 @@ fn strlen(ptr: &const u8) -> isize {
}
fn call_main() -> unreachable {
- var args: [argc][]u8;
+ var args: [argc][]u8 = undefined;
for (arg, args, i) {
const ptr = argv[i];
args[i] = ptr[0...strlen(ptr)];
std/rand.zig
@@ -27,7 +27,7 @@ pub struct Rand {
pub fn get_bytes(r: &Rand, buf: []u8) {
var bytes_left = r.get_bytes_aligned(buf);
if (bytes_left > 0) {
- var rand_val_array : [@sizeof(u32)]u8;
+ var rand_val_array : [@sizeof(u32)]u8 = undefined;
*((&u32)(rand_val_array.ptr)) = r.get_u32();
while (bytes_left > 0) {
buf[buf.len - bytes_left] = rand_val_array[@sizeof(u32) - bytes_left];
@@ -42,7 +42,7 @@ pub struct Rand {
const range = end - start;
const leftover = @max_value(u64) % range;
const upper_bound = @max_value(u64) - leftover;
- var rand_val_array : [@sizeof(u64)]u8;
+ var rand_val_array : [@sizeof(u64)]u8 = undefined;
while (true) {
r.get_bytes_aligned(rand_val_array);
@@ -79,7 +79,7 @@ pub struct Rand {
/// Initialize random state with the given seed.
pub fn rand_new(seed: u32) -> Rand {
- var r: Rand;
+ var r: Rand = undefined;
r.index = 0;
r.array[0] = seed;
var i : isize = 1;
std/std.zig
@@ -209,7 +209,7 @@ fn buf_print_i64(out_buf: []u8, x: i64) -> isize {
}
fn buf_print_u64(out_buf: []u8, x: u64) -> isize {
- var buf: [max_u64_base10_digits]u8;
+ var buf: [max_u64_base10_digits]u8 = undefined;
var a = x;
var index = buf.len;
test/run_tests.cpp
@@ -344,7 +344,7 @@ pub fn main(args: [][]u8) -> %void {
import "std.zig";
pub fn main(args: [][]u8) -> %void {
- var array: [4]void;
+ var array: [4]void = undefined;
array[0] = void{};
array[1] = array[2];
if (@sizeof(@typeof(array)) != 0) {
@@ -377,7 +377,7 @@ pub fn main(args: [][]u8) -> %void {
import "std.zig";
pub fn main(args: [][]u8) -> %void {
- var array : [5]i32;
+ var array : [5]i32 = undefined;
var i : i32 = 0;
while (i < 5) {
@@ -613,7 +613,7 @@ export fn main(argc: c_int, argv: &&u8) -> c_int {
import "std.zig";
pub fn main(args: [][]u8) -> %void {
- var foo : Foo;
+ var foo : Foo = undefined;
@memset(&foo, 0, @sizeof(Foo));
foo.a += 1;
foo.b = foo.a == 1;
@@ -649,10 +649,10 @@ struct Val {
x: i32,
}
fn test_point_to_self() {
- var root : Node;
+ var root : Node = undefined;
root.val.x = 1;
- var node : Node;
+ var node : Node = undefined;
node.next = &root;
node.val.x = 2;
@@ -663,8 +663,8 @@ fn test_point_to_self() {
}
}
fn test_byval_assign() {
- var foo1 : Foo;
- var foo2 : Foo;
+ var foo1 : Foo = undefined;
+ var foo2 : Foo = undefined;
foo1.a = 1234;
@@ -829,7 +829,7 @@ import "std.zig";
const ARRAY_SIZE : i8 = 20;
pub fn main(args: [][]u8) -> %void {
- var array : [ARRAY_SIZE]u8;
+ var array : [ARRAY_SIZE]u8 = undefined;
%%stdout.print_u64(@sizeof(@typeof(array)));
%%stdout.printf("\n");
}
@@ -924,7 +924,7 @@ pub fn main(args: [][]u8) -> %void {
add_simple_case("slicing", R"SOURCE(
import "std.zig";
pub fn main(args: [][]u8) -> %void {
- var array : [20]i32;
+ var array : [20]i32 = undefined;
array[5] = 1234;
@@ -969,7 +969,7 @@ fn f(c: u8) -> u8 {
add_simple_case("overflow intrinsics", R"SOURCE(
import "std.zig";
pub fn main(args: [][]u8) -> %void {
- var result: u8;
+ var result: u8 = undefined;
if (!@add_with_overflow(u8, 250, 100, &result)) {
%%stdout.printf("BAD\n");
}
@@ -986,8 +986,8 @@ pub fn main(args: [][]u8) -> %void {
add_simple_case("memcpy and memset intrinsics", R"SOURCE(
import "std.zig";
pub fn main(args: [][]u8) -> %void {
- var foo : [20]u8;
- var bar : [20]u8;
+ var foo : [20]u8 = undefined;
+ var bar : [20]u8 = undefined;
@memset(foo.ptr, 'A', foo.len);
@memcpy(bar.ptr, foo.ptr, bar.len);
@@ -1475,7 +1475,7 @@ fn f() {
add_compile_fail_case("array access errors", R"SOURCE(
fn f() {
- var bad : bool;
+ var bad : bool = undefined;
i[i] = i[i];
bad[bad] = bad[bad];
}
@@ -1521,7 +1521,7 @@ struct C { a : A, }
add_compile_fail_case("invalid struct field", R"SOURCE(
struct A { x : i32, }
fn f() {
- var a : A;
+ var a : A = undefined;
a.foo = 1;
const y = a.bar;
}
@@ -1652,7 +1652,7 @@ struct Foo {}
struct Bar {}
fn f(Foo: i32) {
- var Bar : i32;
+ var Bar : i32 = undefined;
}
)SOURCE", 2, ".tmp_source.zig:5:6: error: variable shadows type 'Foo'",
".tmp_source.zig:6:5: error: variable shadows type 'Bar'");