diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2022-10-26 02:08:36 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 20:08:36 +0200 |
commit | 4b377b07fcec623b8387ed20f6c1cada20979053 (patch) | |
tree | a94aa9f2430dbeff4dd62df3811e686752256241 | |
parent | 3b973f3fc8a87a42b2b3855a56d87f6646fe76ac (diff) | |
download | Nim-4b377b07fcec623b8387ed20f6c1cada20979053.tar.gz |
fixes #19201; fixes sink causes crash in VM (#20658)
-rw-r--r-- | compiler/vmgen.nim | 2 | ||||
-rw-r--r-- | tests/vm/tvmmisc.nim | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 56764ef94..dbe053030 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -1060,7 +1060,7 @@ proc genMagic(c: PCtx; n: PNode; dest: var TDest; m: TMagic) = of mLengthOpenArray, mLengthArray, mLengthSeq: genUnaryABI(c, n, dest, opcLenSeq) of mLengthStr: - case n[1].typ.kind + case n[1].typ.skipTypes(abstractVarRange).kind of tyString: genUnaryABI(c, n, dest, opcLenStr) of tyCstring: genUnaryABI(c, n, dest, opcLenCstring) else: doAssert false, $n[1].typ.kind diff --git a/tests/vm/tvmmisc.nim b/tests/vm/tvmmisc.nim index ad1dfc3df..2ce4703b0 100644 --- a/tests/vm/tvmmisc.nim +++ b/tests/vm/tvmmisc.nim @@ -9,7 +9,7 @@ block: static: foo(int) -# #4412 +# bug #4412 block: proc default[T](t: typedesc[T]): T {.inline.} = discard @@ -595,3 +595,9 @@ proc main() = # bug #12994 static: main() main() + +# bug #19201 +proc foo(s: sink string) = doAssert s.len == 3 + +static: + foo("abc") |