summary refs log tree commit diff stats
path: root/compiler/semexprs.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/semexprs.nim')
-rw-r--r--compiler/semexprs.nim13
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index 49dfbe8f4..2c80db52c 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -664,6 +664,19 @@ proc afterCallActions(c: PContext; n, orig: PNode, flags: TExprFlags): PNode =
   of skMacro: result = semMacroExpr(c, result, orig, callee, flags)
   of skTemplate: result = semTemplateExpr(c, result, callee, flags)
   else:
+    when false:
+      if callee.name.s[0] == '=' and result.len > 1:
+        # careful, do not skip tyDistinct here:
+        let t = result[1].typ.skipTypes({tyVar, tyGenericInst, tyAlias, tyInferred})
+
+        proc patchHead(callee: PSym; name: string; field: PSym; result: PNode) =
+          if callee.name.s == name and field != nil:
+            result.sons[0].sym = field
+
+        patchHead(callee, "=destroy", t.destructor, result)
+        patchHead(callee, "=sink", t.sink, result)
+        patchHead(callee, "=", t.assignment, result)
+
     semFinishOperands(c, result)
     activate(c, result)
     fixAbstractType(c, result)