zig-network icon indicating copy to clipboard operation
zig-network copied to clipboard

Import of 'bind' overrides existing definition

Open Guigui220D opened this issue 4 years ago • 1 comments

Had that error while trying to add the library to my project. Line 1107 in network.zig. The test cases in test-suite.zig also cause that error.

I am on windows 10, using zig 0.6.0+4b48fccad.

PS C:\Users\Guillaume\Programming\zig\repos\minecraft-server-test\zig-network> zig test .\testsuite.zig
.\network.zig:1107:5: error: import of 'bind' overrides existing definition
    usingnamespace std.os.windows;
    ^
.\network.zig:1443:5: note: previous definition here
    fn bind(sock: ws2_32.SOCKET, addr: *const std.os.sockaddr, namelen: std.os.socklen_t) std.os.BindError!void {
    ^
C:\zig\lib\zig\std\os\windows.zig:1160:5: note: imported definition here
pub fn bind(s: ws2_32.SOCKET, name: *const ws2_32.sockaddr, namelen: ws2_32.socklen_t) i32 {
    ^
.\network.zig:1107:5: error: import of 'listen' overrides existing definition
    usingnamespace std.os.windows;
    ^
.\network.zig:1352:5: note: previous definition here
    fn listen(sock: ws2_32.SOCKET, backlog: u32) ListenError!void {
    ^
C:\zig\lib\zig\std\os\windows.zig:1164:5: note: imported definition here
pub fn listen(s: ws2_32.SOCKET, backlog: u31) i32 {
    ^
.\network.zig:1107:5: error: import of 'getsockname' overrides existing definition
    usingnamespace std.os.windows;
    ^
.\network.zig:1409:5: note: previous definition here
    fn getsockname(sock: ws2_32.SOCKET, addr: *std.os.sockaddr, addrlen: *std.os.socklen_t) std.os.GetSockNameError!void {
    ^
C:\zig\lib\zig\std\os\windows.zig:1183:5: note: imported definition here
pub fn getsockname(s: ws2_32.SOCKET, name: *ws2_32.sockaddr, namelen: *ws2_32.socklen_t) i32 {
    ^
.\network.zig:1107:5: error: import of 'sendto' overrides existing definition
    usingnamespace std.os.windows;
    ^
.\network.zig:1192:5: note: previous definition here
    fn sendto(
    ^
C:\zig\lib\zig\std\os\windows.zig:1187:5: note: imported definition here
pub fn sendto(s: ws2_32.SOCKET, buf: [*]const u8, len: usize, flags: u32, to: ?*const ws2_32.sockaddr, to_len: ws2_32.socklen_t) i32 {
    ^
.\network.zig:1107:5: error: import of 'recvfrom' overrides existing definition
    usingnamespace std.os.windows;
    ^
.\network.zig:1275:5: note: previous definition here
    fn recvfrom(
    ^
C:\zig\lib\zig\std\os\windows.zig:1197:5: note: imported definition here
pub fn recvfrom(s: ws2_32.SOCKET, buf: [*]u8, len: usize, flags: u32, from: ?*ws2_32.sockaddr, from_len: ?*ws2_32.socklen_t) i32 {
    ^
C:\zig\lib\zig\std\os\windows\bits.zig:920:28: note: referenced here
pub usingnamespace switch (builtin.arch) {
                           ^
C:\zig\lib\zig\std\os\windows\bits.zig:920:35: note: referenced here
pub usingnamespace switch (builtin.arch) {
                                  ^
.\network.zig:1460:23: note: referenced here
        hints: *const addrinfo,
                      ^
C:\zig\lib\zig\std\os\bits\windows.zig:175:23: note: referenced here
pub const socklen_t = ws2_32.socklen_t;
                      ^
C:\zig\lib\zig\std\os\bits\windows.zig:175:29: note: referenced here
pub const socklen_t = ws2_32.socklen_t;
                            ^
.\network.zig:1119:24: note: referenced here
        addrlen: std.os.socklen_t,
                       ^
C:\zig\lib\zig\std\os\bits\windows.zig:177:28: note: referenced here
pub const sockaddr = ws2_32.sockaddr;
                           ^
.\network.zig:1121:23: note: referenced here
        addr: ?*std.os.sockaddr,
                      ^
C:\zig\lib\zig\std\os\windows\ws2_32.zig:185:13: note: referenced here
    family: ADDRESS_FAMILY,
            ^
.\network.zig:1078:12: note: referenced here
} || std.os.UnexpectedError;
           ^
.\network.zig:1462:7: note: referenced here
    ) GetAddrInfoError!void {
      ^
.\network.zig:960:55: note: referenced here
        const getaddrinfo_fn = if (is_windows) windows.getaddrinfo else libc_getaddrinfo;
                                                      ^
.\network.zig:961:56: note: referenced here
        const freeaddrinfo_fn = if (is_windows) windows.funcs.freeaddrinfo else std.os.system.freeaddrinfo;
                                                       ^
.\network.zig:961:62: note: referenced here
        const freeaddrinfo_fn = if (is_windows) windows.funcs.freeaddrinfo else std.os.system.freeaddrinfo;
                                                             ^
.\network.zig:966:31: note: referenced here
        const name_c = try std.cstr.addNullByte(allocator, name);
                              ^
C:\zig\lib\zig\std\cstr.zig:9:13: note: referenced here
const mem = std.mem;
            ^
C:\zig\lib\zig\std\cstr.zig:41:32: note: referenced here
pub fn addNullByte(allocator: *mem.Allocator, slice: []const u8) ![:0]u8 {
                               ^
.\network.zig:966:36: note: referenced here
        const name_c = try std.cstr.addNullByte(allocator, name);
                                   ^
C:\zig\lib\zig\std\cstr.zig:42:33: note: referenced here
    const result = try allocator.alloc(u8, slice.len + 1);
                                ^
C:\zig\lib\zig\std\cstr.zig:43:8: note: referenced here
    mem.copy(u8, result, slice);
       ^
.\network.zig:969:31: note: referenced here
        const port_c = try std.fmt.allocPrint(allocator, "{}\x00", .{port});
                              ^
C:\zig\lib\zig\std\fmt.zig:9:13: note: referenced here
const mem = std.mem;
            ^
C:\zig\lib\zig\std\fmt.zig:1207:31: note: referenced here
pub fn allocPrint(allocator: *mem.Allocator, comptime fmt: []const u8, args: anytype) AllocPrintError![]u8 {
                              ^
.\network.zig:969:35: note: referenced here
        const port_c = try std.fmt.allocPrint(allocator, "{}\x00", .{port});
                                  ^
C:\zig\lib\zig\std\fmt.zig:1207:87: note: referenced here
pub fn allocPrint(allocator: *mem.Allocator, comptime fmt: []const u8, args: anytype) AllocPrintError![]u8 {
                                                                                      ^
.\network.zig:967:24: note: referenced here
        defer allocator.free(name_c);
                       ^
C:\zig\lib\zig\std\os\bits\windows.zig:187:29: note: referenced here
pub const AF_UNSPEC = ws2_32.AF_UNSPEC;
                            ^
.\network.zig:974:29: note: referenced here
            .family = std.os.AF_UNSPEC,
                            ^
C:\zig\lib\zig\std\os\bits\windows.zig:223:31: note: referenced here
pub const SOCK_STREAM = ws2_32.SOCK_STREAM;
                              ^
.\network.zig:975:31: note: referenced here
            .socktype = std.os.SOCK_STREAM,
                              ^
C:\zig\lib\zig\std\os\bits\windows.zig:241:31: note: referenced here
pub const IPPROTO_TCP = ws2_32.IPPROTO_TCP;
                              ^
.\network.zig:976:31: note: referenced here
            .protocol = std.os.IPPROTO_TCP,
                              ^
C:\zig\lib\zig\std\os\bits\windows.zig:189:27: note: referenced here
pub const AF_INET = ws2_32.AF_INET;
                          ^
.\network.zig:1004:23: note: referenced here
                std.os.AF_INET => block: {
                      ^
C:\zig\lib\zig\std\os\bits\windows.zig:212:28: note: referenced here
pub const AF_INET6 = ws2_32.AF_INET6;
                           ^
.\network.zig:1008:23: note: referenced here
                std.os.AF_INET6 => block: {
                      ^
.\network.zig:38:49: note: referenced here
        pub fn init(a: u8, b: u8, c: u8, d: u8) Self {
                                                ^
.\network.zig:1006:57: note: referenced here
                    break :block .{ .ipv4 = Address.IPv4.init(bytes[0], bytes[1], bytes[2], bytes[3]) };
                                                        ^
C:\zig\lib\zig\std\os\bits\windows.zig:179:32: note: referenced here
pub const sockaddr_in6 = ws2_32.sockaddr_in6;
                               ^
.\network.zig:1009:73: note: referenced here
                    const sockaddr_in6 = @ptrCast(*align(1) const std.os.sockaddr_in6, sockaddr);
                                                                        ^
C:\zig\lib\zig\std\os\windows\ws2_32.zig:211:11: note: referenced here
    port: USHORT,
          ^
.\network.zig:67:51: note: referenced here
        pub fn init(value: [16]u8, scope_id: u32) Self {
                                                  ^
.\network.zig:1010:57: note: referenced here
                    break :block .{ .ipv6 = Address.IPv6.init(sockaddr_in6.addr, sockaddr_in6.scope_id) };
                                                        ^
.\network.zig:1022:52: note: referenced here
                    result.canon_name = try std.mem.dupe(arena, u8, std.mem.spanZ(n));
                                                   ^
.\network.zig:1022:76: note: referenced here
                    result.canon_name = try std.mem.dupe(arena, u8, std.mem.spanZ(n));
                                                                           ^
C:\zig\lib\zig\std\mem.zig:614:28: note: referenced here
pub fn spanZ(ptr: anytype) Span(@TypeOf(ptr)) {
                           ^
C:\zig\lib\zig\std\mem.zig:550:26: note: referenced here
            return @Type(std.builtin.TypeInfo{ .Pointer = new_ptr_info });
                         ^
C:\zig\lib\zig\std\mem.zig:764:21: note: referenced here
    return allocator.dupe(T, m);
                    ^
C:\zig\lib\zig\std\mem\Allocator.zig:11:13: note: referenced here
const mem = std.mem;
            ^
C:\zig\lib\zig\std\mem\Allocator.zig:463:5: note: referenced here
    mem.copy(T, new_buf, m);
    ^
.\testsuite.zig:6:18: note: referenced here
    defer network.deinit();
                 ^
.\testsuite.zig:12:18: note: referenced here
        std.debug.print("{}\n", .{endpt});
                 ^
.\testsuite.zig:9:24: note: referenced here
    defer endpoint_list.deinit();
                       ^
.\network.zig:1161:58: error: expected type 'c_int', found 'u32'
        while (true) if (ws2_32.connect(sock, sock_addr, len) != 0) {
                                                         ^
.\network.zig:1161:58: note: signed 32-bit int cannot represent all possible unsigned 32-bit values
        while (true) if (ws2_32.connect(sock, sock_addr, len) != 0) {

Guigui220D avatar Oct 24 '20 19:10 Guigui220D

@Guigui220D The bug you encountered has been fixed by the PR https://github.com/MasterQ32/zig-network/pull/22 and is now available on the master branch :)

ducdetronquito avatar Nov 07 '20 15:11 ducdetronquito