diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-09-09 14:20:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-09 14:20:10 +0200 |
commit | 3f00a738dbc8319b4dd2b86bf5529c096f2dd243 (patch) | |
tree | 1e730a512147d2d9de9fba8772921327c5d8ac62 /tests | |
parent | 217675cf84dc47bb68f03b341aff14315804efec (diff) | |
download | Nim-3f00a738dbc8319b4dd2b86bf5529c096f2dd243.tar.gz |
fixes #15280 [backport:1.2] (#15281)
* fixes #15280 [backport:1.2] * make tests green again * adapt tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/arc/tmovebug.nim | 6 | ||||
-rw-r--r-- | tests/casestmt/tcasestmt.nim | 2 | ||||
-rw-r--r-- | tests/semreject/tmixing_return_and_exprs.nim | 44 |
3 files changed, 48 insertions, 4 deletions
diff --git a/tests/arc/tmovebug.nim b/tests/arc/tmovebug.nim index 3b7a7c5df..c735ea1eb 100644 --- a/tests/arc/tmovebug.nim +++ b/tests/arc/tmovebug.nim @@ -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" diff --git a/tests/casestmt/tcasestmt.nim b/tests/casestmt/tcasestmt.nim index 53cccdb64..2151892aa 100644 --- a/tests/casestmt/tcasestmt.nim +++ b/tests/casestmt/tcasestmt.nim @@ -258,7 +258,7 @@ func foo(input: string): int = try: parseInt(input) except: - return + 0 func foo2(b, input: string): int = case b: diff --git a/tests/semreject/tmixing_return_and_exprs.nim b/tests/semreject/tmixing_return_and_exprs.nim new file mode 100644 index 000000000..2848c47e4 --- /dev/null +++ b/tests/semreject/tmixing_return_and_exprs.nim @@ -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 + |