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

* fixes #15280 [backport:1.2]

* make tests green again

* adapt tests
This commit is contained in:
Andreas Rumpf
2020-09-09 14:20:10 +02:00
committed by GitHub
parent 217675cf84
commit 3f00a738db
4 changed files with 49 additions and 5 deletions

View File

@@ -184,7 +184,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

@@ -502,7 +502,7 @@ weirdScopes()
# bug #14985
proc getScope(): string =
if true:
return "hi"
"hi"
else:
"else"
@@ -512,14 +512,14 @@ proc getScope3(): string =
try:
"try"
except:
return "except"
"except"
echo getScope3()
proc getScope2(): string =
case true
of true:
return "bye"
"bye"
else:
"else"

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