summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/transf.nim6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/transf.nim b/compiler/transf.nim
index b9b06675e..20fd5620f 100644
--- a/compiler/transf.nim
+++ b/compiler/transf.nim
@@ -624,7 +624,11 @@ proc transformCall(c: PTransf, n: PNode): PTransNode =
     # bugfix: check after 'transformSons' if it's still a method call:
     # use the dispatcher for the call:
     if s.sons[0].kind == nkSym and s.sons[0].sym.kind == skMethod:
-      result = methodCall(s).PTransNode
+      let t = lastSon(s.sons[0].sym.ast)
+      if t.kind == nkSym and sfDispatcher in t.sym.flags:
+        result = methodCall(s).PTransNode
+      else:
+        result = s.PTransNode
     else:
       result = s.PTransNode