revert stdlib changes which are not required anymore

This commit is contained in:
Andreas Rumpf 2020-04-01 14:34:24 +02:00
commit 484548c784
6 changed files with 20 additions and 21 deletions

View file

@ -371,8 +371,9 @@ proc map*[T, S](s: openArray[T], op: proc (x: T): S {.closure.}):
b = map(a, proc(x: int): string = $x) b = map(a, proc(x: int): string = $x)
assert b == @["1", "2", "3", "4"] assert b == @["1", "2", "3", "4"]
result = newSeqOfCap[S](s.len) newSeq(result, s.len)
for elem in s: result.add op(elem) for i in 0 ..< s.len:
result[i] = op(s[i])
proc apply*[T](s: var openArray[T], op: proc (x: var T) {.closure.}) proc apply*[T](s: var openArray[T], op: proc (x: var T) {.closure.})
{.inline.} = {.inline.} =

View file

@ -77,7 +77,8 @@ template withValue*[A, B](t: var SharedTable[A, B], key: A,
try: try:
var hc: Hash var hc: Hash
var index = rawGet(t, key, hc) var index = rawGet(t, key, hc)
if index >= 0: let hasKey = index >= 0
if hasKey:
var value {.inject.} = addr(t.data[index].val) var value {.inject.} = addr(t.data[index].val)
body body
finally: finally:
@ -103,7 +104,8 @@ template withValue*[A, B](t: var SharedTable[A, B], key: A,
try: try:
var hc: Hash var hc: Hash
var index = rawGet(t, key, hc) var index = rawGet(t, key, hc)
if index >= 0: let hasKey = index >= 0
if hasKey:
var value {.inject.} = addr(t.data[index].val) var value {.inject.} = addr(t.data[index].val)
body1 body1
else: else:
@ -117,9 +119,9 @@ proc mget*[A, B](t: var SharedTable[A, B], key: A): var B =
withLock t: withLock t:
var hc: Hash var hc: Hash
var index = rawGet(t, key, hc) var index = rawGet(t, key, hc)
if index >= 0: let hasKey = index >= 0
result = t.data[index].val if hasKey: result = t.data[index].val
else: if not hasKey:
when compiles($key): when compiles($key):
raise newException(KeyError, "key not found: " & $key) raise newException(KeyError, "key not found: " & $key)
else: else:

View file

@ -502,6 +502,7 @@ proc contains*[T](s: Selector[T], fd: SocketHandle|int): bool {.inline.} =
proc getData*[T](s: Selector[T], fd: SocketHandle|int): var T = proc getData*[T](s: Selector[T], fd: SocketHandle|int): var T =
let fdi = int(fd) let fdi = int(fd)
s.checkFd(fdi) s.checkFd(fdi)
if fdi in s:
result = s.fds[fdi].data result = s.fds[fdi].data
proc setData*[T](s: Selector[T], fd: SocketHandle|int, data: T): bool = proc setData*[T](s: Selector[T], fd: SocketHandle|int, data: T): bool =

View file

@ -600,6 +600,7 @@ proc contains*[T](s: Selector[T], fd: SocketHandle|int): bool {.inline.} =
proc getData*[T](s: Selector[T], fd: SocketHandle|int): var T = proc getData*[T](s: Selector[T], fd: SocketHandle|int): var T =
let fdi = int(fd) let fdi = int(fd)
s.checkFd(fdi) s.checkFd(fdi)
if fdi in s:
result = s.fds[fdi].data result = s.fds[fdi].data
proc setData*[T](s: Selector[T], fd: SocketHandle|int, data: T): bool = proc setData*[T](s: Selector[T], fd: SocketHandle|int, data: T): bool =

View file

@ -410,17 +410,11 @@ else:
body body
proc getData*[T](s: Selector[T], fd: SocketHandle|int): var T = proc getData*[T](s: Selector[T], fd: SocketHandle|int): var T =
# The compiler needs this to prove that all code paths return a value
result = (cast[ptr T](0'u))[]
s.withSelectLock(): s.withSelectLock():
let fdi = int(fd) let fdi = int(fd)
for i in 0..<FD_SETSIZE: for i in 0..<FD_SETSIZE:
if s.fds[i].ident == fdi: if s.fds[i].ident == fdi:
result = s.fds[i].data return s.fds[i].data
break
assert cast[uint](addr(result)) != 0
proc setData*[T](s: Selector[T], fd: SocketHandle|int, data: T): bool = proc setData*[T](s: Selector[T], fd: SocketHandle|int, data: T): bool =
s.withSelectLock(): s.withSelectLock():

View file

@ -338,7 +338,7 @@ proc rowEntry*(my: var CsvParser, entry: string): var string =
strm.close() strm.close()
let index = my.headers.find(entry) let index = my.headers.find(entry)
assert index >= 0 if index >= 0:
result = my.row[index] result = my.row[index]
when not defined(testing) and isMainModule: when not defined(testing) and isMainModule: