mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* fixes #15280 [backport:1.2] * make tests green again * adapt tests
This commit is contained in:
@@ -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 =
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ func foo(input: string): int =
|
||||
try:
|
||||
parseInt(input)
|
||||
except:
|
||||
return
|
||||
0
|
||||
|
||||
func foo2(b, input: string): int =
|
||||
case b:
|
||||
|
||||
44
tests/semreject/tmixing_return_and_exprs.nim
Normal file
44
tests/semreject/tmixing_return_and_exprs.nim
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user