zig
zig copied to clipboard
OptionStep duplicates enum declarations
Zig Version
0.10.0-dev.3880+e2bb92b2e
Steps to Reproduce and Observed Behavior
When an enum type is used in more than one OptionStep duplicate declarations are created in the resulting package file.
Example build.zig:
const std = @import("std");
const Test = enum {
foo,
bar,
};
pub fn build(b: *std.build.Builder) void {
const target = b.standardTargetOptions(.{});
const mode = b.standardReleaseOptions();
const exe = b.addExecutable("test", "src/main.zig");
exe.setTarget(target);
exe.setBuildMode(mode);
exe.install();
const options = b.addOptions();
options.addOption(Test, "test", Test.foo);
options.addOption(Test, "test2", Test.bar);
exe.addPackage(options.getPackage("build_options"));
}
Example main.zig:
const std = @import("std");
const build_options = @import("build_options");
pub fn main() !void {}
Result when attempting to build:
/home/lemon/Work/test/zig-cache/options/FLMHGC7KS_hpZubXc9fAQ0ueMUeW2_q2PTXiHOHNSJ4IdU0nScj_Eu4pP4S4Y1y9:6:5: error: redeclaration of 'build.Test'
pub const @"build.Test" = enum {
~~~~^~~~~
/home/lemon/Work/test/zig-cache/options/FLMHGC7KS_hpZubXc9fAQ0ueMUeW2_q2PTXiHOHNSJ4IdU0nScj_Eu4pP4S4Y1y9:1:5: note: other declaration here
pub const @"build.Test" = enum {
~~~~^~~~~
Expected Behavior
Expected it to compile properly, some way to deduplicate the enums is probably needed rather than just blindly adding a new enum declaration to the file every time.