summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/semcall.nim9
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/semcall.nim b/compiler/semcall.nim
index 735e6fac8..a29efcd8a 100644
--- a/compiler/semcall.nim
+++ b/compiler/semcall.nim
@@ -207,11 +207,14 @@ proc SearchForBorrowProc(c: PContext, startScope: PScope, fn: PSym): PSym =
   # New approach: generate fn(x, y, z) where x, y, z have the proper types
   # and use the overloading resolution mechanism:
   var call = newNode(nkCall)
+  var hasDistinct = false
   call.add(newIdentNode(fn.name, fn.info))
   for i in 1.. <fn.typ.n.len:
     let param = fn.typ.n.sons[i]
     let t = skipTypes(param.typ, abstractVar-{tyTypeDesc})
+    if t.kind == tyDistinct or param.typ.kind == tyDistinct: hasDistinct = true
     call.add(newNodeIT(nkEmpty, fn.info, t.baseOfDistinct))
-  var resolved = semOverloadedCall(c, call, call, {fn.kind})
-  if resolved != nil:
-    result = resolved.sons[0].sym
+  if hasDistinct:
+    var resolved = semOverloadedCall(c, call, call, {fn.kind})
+    if resolved != nil:
+      result = resolved.sons[0].sym