diff --git a/src/ComptimeInterpreter.zig b/src/ComptimeInterpreter.zig index 196ddb1..ba620cd 100644 --- a/src/ComptimeInterpreter.zig +++ b/src/ComptimeInterpreter.zig @@ -548,7 +548,13 @@ pub fn interpret( } else IPKey{ .int_u64_value = try std.fmt.parseInt(u64, s, 0), }, - .big_int => @panic("TODO: implement big int"), + .big_int => |base| blk: { + var big_int = try std.math.big.int.Managed.init(interpreter.allocator); + defer big_int.deinit(); + const prefix_length: usize = if (base != .decimal) 2 else 0; + try big_int.setString(@enumToInt(base), s[prefix_length..]); + break :blk IPKey{ .int_big_value = big_int.toConst() }; + }, .failure => return error.CriticalAstFailure, }, );