authorgravatar for vincent@rischmann.frVincent Rischmann <vincent@rischmann.fr> 2020-08-19 23:21:16+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-19 17:41:43-04:00
logb0846b6ecbb3e2557c5c95ddee04ecc055881d75
tree902fdda250b16e101fe3dfac015ccc8cbe27d74d
parenta237283d90ea6799331a7268f474511f352a23d7

builder: implement integer options


1 files changed, 27 insertions(+), 1 deletions(-)

lib/std/build.zig+27-1
......@@ -449,7 +449,33 @@ pub const Builder = struct {
449449 return null;
450450 },
451451 },
452 .Int => panic("TODO integer options to build script", .{}),
452 .Int => switch (entry.value.value) {
453 .Flag => {
454 warn("Expected -D{} to be an integer, but received a boolean.\n", .{name});
455 self.markInvalidUserInput();
456 return null;
457 },
458 .Scalar => |s| {
459 const n = std.fmt.parseInt(T, s, 10) catch |err| switch (err) {
460 error.Overflow => {
461 warn("-D{} value {} cannot fit into type {}.\n", .{ name, s, @typeName(T) });
462 self.markInvalidUserInput();
463 return null;
464 },
465 else => {
466 warn("Expected -D{} to be an integer of type {}.\n", .{ name, @typeName(T) });
467 self.markInvalidUserInput();
468 return null;
469 },
470 };
471 return n;
472 },
473 .List => {
474 warn("Expected -D{} to be an integer, but received a list.\n", .{name});
475 self.markInvalidUserInput();
476 return null;
477 },
478 },
453479 .Float => panic("TODO float options to build script", .{}),
454480 .Enum => switch (entry.value.value) {
455481 .Flag => {