From 85e2896e171664a9a29bfe5f54e11f45ade7792a Mon Sep 17 00:00:00 2001 From: kernelnomad Date: Tue, 11 Aug 2026 20:54:54 +0300 Subject: [PATCH] std.Io.net.Ip4Address: fix `fromAny` return type --- lib/std/Io/net.zig | 2 +- lib/std/Io/net/test.zig | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/std/Io/net.zig b/lib/std/Io/net.zig index fe3c156d869f2d69c98a34a5f4ef6385b4868884..f1d8bb0dd4e1180655b369b07295419caa78ed10 100644 --- a/lib/std/Io/net.zig +++ b/lib/std/Io/net.zig @@ -376,7 +376,7 @@ pub const Ip4Address = struct { /// Given an `IpAddress`, converts it to an `Ip4Address` directly, or from /// an IPv4-mapped IPv6 address, or returns `null`. - pub fn fromAny(addr: IpAddress) ?Ip6Address { + pub fn fromAny(addr: IpAddress) ?Ip4Address { return switch (addr) { .ip4 => |ip4| ip4, .ip6 => |ip6| fromIp6(ip6), diff --git a/lib/std/Io/net/test.zig b/lib/std/Io/net/test.zig index 29137e41d36289798392a05bbb76985ce48d41a3..a7cc155723d1ba9df7fc810be52c0a9768dbd445 100644 --- a/lib/std/Io/net/test.zig +++ b/lib/std/Io/net/test.zig @@ -123,6 +123,22 @@ fn testIp4ParseAndRender(text: []const u8) !void { try testing.expectEqualStrings(text, without_port); } +test "parse Ip4Address from IpAddress" { + try testIp4FromIpAddress("0.0.0.0:80", "0.0.0.0:80"); + try testIp4FromIpAddress("255.255.255.255:0", "255.255.255.255:0"); + try testIp4FromIpAddress("[::ffff:127.0.0.1]:80", "127.0.0.1:80"); + try testIp4FromIpAddress("[::ffff:192.168.1.1]:443", "192.168.1.1:443"); + + try testing.expectEqual(null, net.Ip4Address.fromAny(try net.IpAddress.parseIp6("2001:db8::1", 443))); + try testing.expectEqual(null, net.Ip4Address.fromAny(try net.IpAddress.parseIp6("::c000:201", 80))); +} + +fn testIp4FromIpAddress(any_address: []const u8, ip4_address: []const u8) !void { + const expected = try net.IpAddress.parseLiteral(ip4_address); + const actual = net.Ip4Address.fromAny(try net.IpAddress.parseLiteral(any_address)).?; + try testing.expectEqual(expected.ip4, actual); +} + test "resolve DNS" { const io = testing.io; -- 2.54.0