summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorcooldome <cdome@bk.ru>2020-05-06 23:13:59 +0100
committerGitHub <noreply@github.com>2020-05-07 00:13:59 +0200
commit0d8507cd3da4f8c5ec3d7a627bb2c8918ff804c8 (patch)
treea18e5cc31befee0e9e087a62089e3da5a9a890b9
parent6dba06f9e63083d4cbcd09b10aaf2342b70821b0 (diff)
downloadNim-0d8507cd3da4f8c5ec3d7a627bb2c8918ff804c8.tar.gz
fix #14236 (#14250)
Co-authored-by: cooldome <ariabushenko@bk.ru>
-rw-r--r--compiler/liftdestructors.nim6
-rw-r--r--tests/arc/tarcmisc.nim16
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