From 4b377b07fcec623b8387ed20f6c1cada20979053 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Wed, 26 Oct 2022 02:08:36 +0800 Subject: [PATCH] fixes #19201; fixes sink causes crash in VM (#20658) --- compiler/vmgen.nim | 2 +- tests/vm/tvmmisc.nim | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 56764ef945fe..dbe053030fa0 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 ad1dfc3df58e..2ce4703b0102 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")