diff options
-rw-r--r-- | compiler/liftdestructors.nim | 6 | ||||
-rw-r--r-- | tests/arc/tarcmisc.nim | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/compiler/liftdestructors.nim b/compiler/liftdestructors.nim index f2a7ba3c9..6f4e5828d 100644 --- a/compiler/liftdestructors.nim +++ b/compiler/liftdestructors.nim @@ -764,11 +764,11 @@ proc fillBody(c: var TLiftCtx; t: PType; body, x, y: PNode) = of tyFromExpr, tyProxy, tyBuiltInTypeClass, tyUserTypeClass, tyUserTypeClassInst, tyCompositeTypeClass, tyAnd, tyOr, tyNot, tyAnything, tyGenericParam, tyGenericBody, tyNil, tyUntyped, tyTyped, - tyTypeDesc, tyGenericInvocation, tyForward: + tyTypeDesc, tyGenericInvocation, tyForward, tyStatic: #internalError(c.g.config, c.info, "assignment requested for type: " & typeToString(t)) discard of tyOrdinal, tyRange, tyInferred, - tyGenericInst, tyStatic, tyAlias, tySink: + tyGenericInst, tyAlias, tySink: fillBody(c, lastSon(t), body, x, y) proc produceSymDistinctType(g: ModuleGraph; c: PContext; typ: PType; @@ -916,7 +916,7 @@ proc createTypeBoundOps(g: ModuleGraph; c: PContext; orig: PType; info: TLineInf incl orig.flags, tfCheckedForDestructor let skipped = orig.skipTypes({tyGenericInst, tyAlias, tySink}) - if isEmptyContainer(skipped): return + if isEmptyContainer(skipped) or skipped.kind == tyStatic: return let h = sighashes.hashType(skipped, {CoType, CoConsiderOwned, CoDistinct}) var canon = g.canonTypes.getOrDefault(h) diff --git a/tests/arc/tarcmisc.nim b/tests/arc/tarcmisc.nim index c0583a640..953e2f3a7 100644 --- a/tests/arc/tarcmisc.nim +++ b/tests/arc/tarcmisc.nim @@ -89,3 +89,19 @@ let assert n.sortedByIt(it) == @["b", "c"], "fine" assert q.sortedByIt(it[0]) == @[("b", "1"), ("c", "2")], "fails under arc" + + +#------------------------------------------------------------------------------ +# issue #14236 + +type + MyType = object + a: seq[int] + +proc re(x: static[string]): static MyType = + MyType() + +proc match(inp: string, rg: static MyType) = + doAssert rg.a.len == 0 + +match("ac", re"a(b|c)") \ No newline at end of file |