Skip to content

Commit

Permalink
aro_translate_c: do not translate _Static_assert declarations
Browse files Browse the repository at this point in the history
This does not completely ignore static asserts - they are validated by aro
during parsing; any failures will render an error and non-zero exit code.

Emit a warning comment that _Static_asserts are not translated - this
matches the behavior of the existing clang-based translate-c.

Aro currently does not store source locations for _Static_assert
declarations so I've hard-coded token index 0 for now.
  • Loading branch information
ehaas committed Jul 29, 2024
1 parent d7b9bbe commit 5d8e56c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/compiler/aro_translate_c.zig
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ fn prepopulateGlobalNameTable(c: *Context) !void {
const decl_name = c.tree.tokSlice(data.decl.name);
try c.global_names.put(c.gpa, decl_name, {});
},
.static_assert => {},
else => unreachable,
}
}
Expand Down Expand Up @@ -305,6 +306,7 @@ fn transDecl(c: *Context, scope: *Scope, decl: NodeIndex) !void {
=> {
try transVarDecl(c, decl, null);
},
.static_assert => try warn(c, &c.global_scope.base, 0, "ignoring _Static_assert declaration", .{}),
else => unreachable,
}
}
Expand Down
7 changes: 7 additions & 0 deletions test/cases/translate_c/_Static_assert.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
_Static_assert(1 == 1, "");

// translate-c
// target=x86_64-linux
// c_frontend=aro
//
// tmp.c:1:1: warning: ignoring _Static_assert declaration

0 comments on commit 5d8e56c

Please sign in to comment.