Skip to content

Commit

Permalink
fixes strictdefs warnings (nim-lang#24550)
Browse files Browse the repository at this point in the history
  • Loading branch information
ringabout authored Dec 20, 2024
1 parent f80ce13 commit ce4304c
Show file tree
Hide file tree
Showing 19 changed files with 148 additions and 126 deletions.
2 changes: 1 addition & 1 deletion lib/core/macros.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1440,7 +1440,7 @@ template findChild*(n: NimNode; cond: untyped): NimNode {.dirty.} =
## it.basename.ident == ident"foo")
## ```
block:
var res: NimNode
var res: NimNode = nil
for it in n.children:
if cond:
res = it
Expand Down
11 changes: 6 additions & 5 deletions lib/pure/asyncdispatch.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1300,7 +1300,8 @@ else:
# `rwlist` associated with file descriptor MUST BE emptied before
# dispatching callback (See https://github.com/nim-lang/Nim/issues/5128),
# or it can be possible to fall into endless cycle.
var curList: seq[Callback]
result = (0, 0)
var curList: seq[Callback] = @[]

let selector = getGlobalDispatcher().selector
withData(selector, fd.int, fdData):
Expand Down Expand Up @@ -1352,7 +1353,7 @@ else:
# {Event.Timer, Event.Signal, Event.Process, Event.Vnode}.
# There can be only one callback registered with one descriptor,
# so there is no need to iterate over list.
var curList: seq[Callback]
var curList: seq[Callback] = @[]

withData(p.selector, fd.int, adata) do:
curList = move adata.readList
Expand Down Expand Up @@ -1550,7 +1551,7 @@ else:
var retFuture = newFuture[void]("sendTo")

# we will preserve address in our stack
var staddr: array[128, char] # SOCKADDR_STORAGE size is 128 bytes
var staddr {.noinit.} : array[128, char] # SOCKADDR_STORAGE size is 128 bytes
var stalen = saddrLen
zeroMem(addr(staddr[0]), 128)
copyMem(addr(staddr[0]), saddr, saddrLen)
Expand Down Expand Up @@ -1604,7 +1605,7 @@ else:
client: AsyncFD]]("acceptAddr")
proc cb(sock: AsyncFD): bool {.gcsafe.} =
result = true
var sockAddress: Sockaddr_storage
var sockAddress: Sockaddr_storage = default(Sockaddr_storage)
var addrLen = sizeof(sockAddress).SockLen
var client =
when declared(accept4):
Expand Down Expand Up @@ -2045,7 +2046,7 @@ when defined(linux) or defined(windows) or defined(macosx) or defined(bsd) or
elif defined(zephyr) or defined(freertos):
result = FD_MAX
else:
var fdLim: RLimit
var fdLim: RLimit = default(RLimit)
if getrlimit(RLIMIT_NOFILE, fdLim) < 0:
raiseOSError(osLastError())
result = int(fdLim.rlim_cur) - 1
Expand Down
1 change: 1 addition & 0 deletions lib/pure/asyncmacro.nim
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ proc asyncSingleProc(prc: NimNode): NimNode =
elif returnType.kind == nnkEmpty:
baseType = returnType
else:
baseType = nil
verifyReturnType(repr(returnType), returnType)

let futureVarIdents = getFutureVarIdents(prc.params)
Expand Down
6 changes: 3 additions & 3 deletions lib/pure/asyncnet.nim
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,7 @@ proc sendTo*(socket: AsyncSocket, address: string, port: Port, data: string,
var
it = aiList
success = false
lastException: ref Exception
lastException: ref Exception = nil

while it != nil:
let fut = sendTo(socket.fd.AsyncFD, cstring(data), len(data), it.ai_addr,
Expand Down Expand Up @@ -921,10 +921,10 @@ proc recvFrom*(socket: AsyncSocket, data: FutureVar[string], size: int,

case socket.domain
of AF_INET6:
var sAddr: Sockaddr_in6
var sAddr: Sockaddr_in6 = default(Sockaddr_in6)
adaptRecvFromToDomain(AF_INET6)
of AF_INET:
var sAddr: Sockaddr_in
var sAddr: Sockaddr_in = default(Sockaddr_in)
adaptRecvFromToDomain(AF_INET)
else:
raise newException(ValueError, "Unknown socket address family")
Expand Down
3 changes: 2 additions & 1 deletion lib/pure/htmlparser.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1961,6 +1961,7 @@ proc untilElementEnd(x: var XmlParser, result: XmlNode,
result.addNode(parse(x, errors))

proc parse(x: var XmlParser, errors: var seq[string]): XmlNode =
result = nil
case x.kind
of xmlComment:
result = newComment(x.rawData)
Expand Down Expand Up @@ -2017,7 +2018,7 @@ proc parseHtml*(s: Stream, filename: string,
errors: var seq[string]): XmlNode =
## Parses the XML from stream `s` and returns a `XmlNode`. Every
## occurred parsing error is added to the `errors` sequence.
var x: XmlParser
var x: XmlParser = default(XmlParser)
open(x, s, filename, {reportComments, reportWhitespace, allowUnquotedAttribs,
allowEmptyAttribs})
next(x)
Expand Down
1 change: 1 addition & 0 deletions lib/pure/httpclient.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1035,6 +1035,7 @@ proc format(entry: MultipartEntry, boundary: string): string =

proc format(client: HttpClient | AsyncHttpClient,
multipart: MultipartData): Future[seq[string]] {.multisync.} =
result = @[]
let bound = getBoundary(multipart)
client.headers["Content-Type"] = "multipart/form-data; boundary=" & bound

Expand Down
67 changes: 40 additions & 27 deletions lib/pure/nativesockets.nim
Original file line number Diff line number Diff line change
Expand Up @@ -291,11 +291,12 @@ proc getAddrInfo*(address: string, port: Port, domain: Domain = AF_INET,
##
##
## .. warning:: The resulting `ptr AddrInfo` must be freed using `freeAddrInfo`!
var hints: AddrInfo
var hints: AddrInfo = AddrInfo(
ai_family: toInt(domain),
ai_socktype: toInt(sockType),
ai_protocol: toInt(protocol)
)
result = nil
hints.ai_family = toInt(domain)
hints.ai_socktype = toInt(sockType)
hints.ai_protocol = toInt(protocol)
# OpenBSD doesn't support AI_V4MAPPED and doesn't define the macro AI_V4MAPPED.
# FreeBSD, Haiku don't support AI_V4MAPPED but defines the macro.
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=198092
Expand Down Expand Up @@ -343,7 +344,7 @@ template htons*(x: uint16): untyped =

proc getSockDomain*(socket: SocketHandle): Domain =
## Returns the socket's domain (AF_INET or AF_INET6).
var name: Sockaddr_in6
var name: Sockaddr_in6 = default(Sockaddr_in6)
var namelen = sizeof(name).SockLen
if getsockname(socket, cast[ptr SockAddr](addr(name)),
addr(namelen)) == -1'i32:
Expand All @@ -366,10 +367,12 @@ when not useNimNetLite:
else:
var s = posix.getservbyname(name, proto)
if s == nil: raiseOSError(osLastError(), "Service not found.")
result.name = $s.s_name
result.aliases = cstringArrayToSeq(s.s_aliases)
result.port = Port(s.s_port)
result.proto = $s.s_proto
result = Servent(
name: $s.s_name,
aliases: cstringArrayToSeq(s.s_aliases),
port: Port(s.s_port),
proto: $s.s_proto
)

proc getServByPort*(port: Port, proto: string): Servent {.tags: [ReadIOEffect].} =
## Searches the database from the beginning and finds the first entry for
Expand All @@ -382,10 +385,12 @@ when not useNimNetLite:
else:
var s = posix.getservbyport(uint16(port).cint, proto)
if s == nil: raiseOSError(osLastError(), "Service not found.")
result.name = $s.s_name
result.aliases = cstringArrayToSeq(s.s_aliases)
result.port = Port(s.s_port)
result.proto = $s.s_proto
result = Servent(
name: $s.s_name,
aliases: cstringArrayToSeq(s.s_aliases),
port: Port(s.s_port),
proto: $s.s_proto
)

proc getHostByAddr*(ip: string): Hostent {.tags: [ReadIOEffect].} =
## This function will lookup the hostname of an IP Address.
Expand Down Expand Up @@ -423,8 +428,10 @@ when not useNimNetLite:
if s == nil:
raiseOSError(osLastError(), $hstrerror(h_errno))

result.name = $s.h_name
result.aliases = cstringArrayToSeq(s.h_aliases)
result = Hostent(
name: $s.h_name,
aliases: cstringArrayToSeq(s.h_aliases)
)
when useWinVersion:
result.addrtype = Domain(s.h_addrtype)
else:
Expand Down Expand Up @@ -465,8 +472,10 @@ when not useNimNetLite:
else:
var s = posix.gethostbyname(name)
if s == nil: raiseOSError(osLastError())
result.name = $s.h_name
result.aliases = cstringArrayToSeq(s.h_aliases)
result = Hostent(
name: $s.h_name,
aliases: cstringArrayToSeq(s.h_aliases)
)
when useWinVersion:
result.addrtype = Domain(s.h_addrtype)
else:
Expand Down Expand Up @@ -566,14 +575,14 @@ when not useNimNetLite:

when defined(posix) and not defined(nimdoc):
proc makeUnixAddr*(path: string): Sockaddr_un =
result.sun_family = AF_UNIX.TSa_Family
result = Sockaddr_un(sun_family: AF_UNIX.TSa_Family)
if path.len >= Sockaddr_un_path_length:
raise newException(ValueError, "socket path too long")
copyMem(addr result.sun_path, path.cstring, path.len + 1)

proc getSockName*(socket: SocketHandle): Port =
## Returns the socket's associated port number.
var name: Sockaddr_in
var name: Sockaddr_in = default(Sockaddr_in)
when useWinVersion:
name.sin_family = uint16(ord(AF_INET))
else:
Expand All @@ -590,9 +599,10 @@ when not useNimNetLite:
## Returns the socket's local address and port number.
##
## Similar to POSIX's `getsockname`:idx:.
result = default((string, Port))
case domain
of AF_INET:
var name: Sockaddr_in
var name: Sockaddr_in = default(Sockaddr_in)
when useWinVersion:
name.sin_family = uint16(ord(AF_INET))
else:
Expand All @@ -604,7 +614,7 @@ when not useNimNetLite:
result = ($inet_ntoa(name.sin_addr),
Port(nativesockets.ntohs(name.sin_port)))
of AF_INET6:
var name: Sockaddr_in6
var name: Sockaddr_in6 = default(Sockaddr_in6)
when useWinVersion:
name.sin6_family = uint16(ord(AF_INET6))
else:
Expand All @@ -627,9 +637,10 @@ when not useNimNetLite:
## Returns the socket's peer address and port number.
##
## Similar to POSIX's `getpeername`:idx:
result = default((string, Port))
case domain
of AF_INET:
var name: Sockaddr_in
var name: Sockaddr_in = default(Sockaddr_in)
when useWinVersion:
name.sin_family = uint16(ord(AF_INET))
else:
Expand All @@ -641,7 +652,7 @@ when not useNimNetLite:
result = ($inet_ntoa(name.sin_addr),
Port(nativesockets.ntohs(name.sin_port)))
of AF_INET6:
var name: Sockaddr_in6
var name: Sockaddr_in6 = default(Sockaddr_in6)
when useWinVersion:
name.sin6_family = uint16(ord(AF_INET6))
else:
Expand Down Expand Up @@ -735,7 +746,7 @@ when useNimNetLite:
proc getSockOptInt*(socket: SocketHandle, level, optname: int): int {.
tags: [ReadIOEffect].} =
## getsockopt for integer options.
var res: cint
var res: cint = cint(0)
var size = sizeof(res).SockLen
if getsockopt(socket, cint(level), cint(optname),
addr(res), addr(size)) < 0'i32:
Expand Down Expand Up @@ -768,6 +779,8 @@ proc setBlocking*(s: SocketHandle, blocking: bool) =
raiseOSError(osLastError())

proc timeValFromMilliseconds(timeout = 500): Timeval =
## Converts a timeout in milliseconds to a Timeval.
result = default(Timeval)
if timeout != -1:
var seconds = timeout div 1000
when useWinVersion:
Expand Down Expand Up @@ -804,7 +817,7 @@ proc selectRead*(readfds: var seq[SocketHandle], timeout = 500): int =
## an unlimited time.
var tv {.noinit.}: Timeval = timeValFromMilliseconds(timeout)

var rd: TFdSet
var rd: TFdSet = default(TFdSet)
var m = 0
createFdSet((rd), readfds, m)

Expand All @@ -826,7 +839,7 @@ proc selectWrite*(writefds: var seq[SocketHandle],
## an unlimited time.
var tv {.noinit.}: Timeval = timeValFromMilliseconds(timeout)

var wr: TFdSet
var wr: TFdSet = default(TFdSet)
var m = 0
createFdSet((wr), writefds, m)

Expand All @@ -844,7 +857,7 @@ proc accept*(fd: SocketHandle, inheritable = defined(nimInheritHandles)): (Socke
## child processes.
##
## Returns (osInvalidSocket, "") if an error occurred.
var sockAddress: SockAddr
var sockAddress: SockAddr = default(SockAddr)
var addrLen = sizeof(sockAddress).SockLen
var sock =
when (defined(linux) or defined(bsd)) and not defined(nimdoc):
Expand Down
Loading

0 comments on commit ce4304c

Please sign in to comment.