Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #1149 from ziglang/issue346
fix compiler crash for invalid enum
  • Loading branch information
andrewrk committed Jun 22, 2018
2 parents 5f38d6e + 459d72f commit be2a4c4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/analyze.cpp
Expand Up @@ -2318,8 +2318,9 @@ static void resolve_enum_zero_bits(CodeGen *g, TypeTableEntry *enum_type) {
return;

if (enum_type->data.enumeration.zero_bits_loop_flag) {
enum_type->data.enumeration.zero_bits_known = true;
enum_type->data.enumeration.zero_bits_loop_flag = false;
add_node_error(g, enum_type->data.enumeration.decl_node,
buf_sprintf("'%s' depends on itself", buf_ptr(&enum_type->name)));
enum_type->data.enumeration.is_invalid = true;
return;
}

Expand Down
13 changes: 13 additions & 0 deletions test/compile_errors.zig
@@ -1,6 +1,19 @@
const tests = @import("tests.zig");

pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
"enum field value references enum",
\\pub const Foo = extern enum {
\\ A = Foo.B,
\\ C = D,
\\};
\\export fn entry() void {
\\ var s: Foo = Foo.E;
\\}
,
".tmp_source.zig:1:17: error: 'Foo' depends on itself",
);

cases.add(
"@floatToInt comptime safety",
\\comptime {
Expand Down

0 comments on commit be2a4c4

Please sign in to comment.