fixes #15280 [backport:1.2] (#15281)

* fixes #15280 [backport:1.2]

* make tests green again

* adapt tests

(cherry picked from commit 3f00a738db)
This commit is contained in:
Andreas Rumpf
2020-09-09 14:20:10 +02:00
committed by narimiran
parent 0845e88110
commit 7bba0deb1d
3 changed files with 46 additions and 2 deletions

View File

@@ -183,7 +183,7 @@ proc endsInNoReturn(n: PNode): bool =
var it = n
while it.kind in {nkStmtList, nkStmtListExpr} and it.len > 0:
it = it.lastSon
result = it.kind in nkLastBlockStmts or
result = it.kind in (nkLastBlockStmts-{nkReturnStmt}) or
it.kind in nkCallKinds and it[0].kind == nkSym and sfNoReturn in it[0].sym.flags
proc commonType*(x: PType, y: PNode): PType =

View File

@@ -258,7 +258,7 @@ func foo(input: string): int =
try:
parseInt(input)
except:
return
0
func foo2(b, input: string): int =
case b:

View File

@@ -0,0 +1,44 @@
discard """
errormsg: "expression 'len(src) shl 1' is of type 'int' and has to be used (or discarded)"
line: 19
"""
# bug #15280
type
HexFlags* {.pure.} = enum
LowerCase, ## Produce lowercase hexadecimal characters
PadOdd, ## Pads odd strings
SkipSpaces, ## Skips all the whitespace characters inside of string
SkipPrefix ## Skips `0x` and `x` prefixes at the begining of string
proc bytesToHex*(src: openarray[byte], dst: var openarray[char],
flags: set[HexFlags]): int =
if len(dst) == 0:
(len(src) shl 1)
else:
var halflast = false
let dstlen = len(dst)
var srclen = len(src)
if dstlen < (srclen shl 1):
if (dstlen and 1) == 1:
srclen = (dstlen - 1) shr 1
halflast = true
else:
srclen = (dstlen shr 1)
let lowercase = (HexFlags.LowerCase in flags)
var k = 0
for i in 0 ..< srclen:
let x = int(src[i])
inc(k, 2)
if halflast:
let x = int(src[srclen])
inc(k)
return k