summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2017-02-25 08:18:54 +0100
committerAndreas Rumpf <rumpf_a@web.de>2017-02-25 08:18:54 +0100
commit4306efada44795f19462714f15cd215a6e8d7ca3 (patch)
treec2e5750a53743c37e3bb718e91a3364fb3b071f1 /compiler
parentb935eeb997f8474b580f7491f8e26ecd5610cd93 (diff)
parentfa98edc78cf990f2437288af87a9180847f94ed4 (diff)
downloadNim-4306efada44795f19462714f15cd215a6e8d7ca3.tar.gz
Merge branch 'faster-nimsuggest' of github.com:nim-lang/Nim into faster-nimsuggest
Diffstat (limited to 'compiler')
-rw-r--r--compiler/cgmeth.nim12
1 files changed, 10 insertions, 2 deletions
diff --git a/compiler/cgmeth.nim b/compiler/cgmeth.nim
index 3a945ae0a..1d7f5a6e1 100644
--- a/compiler/cgmeth.nim
+++ b/compiler/cgmeth.nim
@@ -60,8 +60,8 @@ type
 proc sameMethodBucket(a, b: PSym): MethodResult =
   if a.name.id != b.name.id: return
   if sonsLen(a.typ) != sonsLen(b.typ):
-    return                    # check for return type:
-  if not sameTypeOrNil(a.typ.sons[0], b.typ.sons[0]): return
+    return
+
   for i in countup(1, sonsLen(a.typ) - 1):
     var aa = a.typ.sons[i]
     var bb = b.typ.sons[i]
@@ -89,6 +89,14 @@ proc sameMethodBucket(a, b: PSym): MethodResult =
         return No
     else:
       return No
+  if result == Yes:
+    # check for return type:
+    if not sameTypeOrNil(a.typ.sons[0], b.typ.sons[0]):
+      if b.typ.sons[0] != nil and b.typ.sons[0].kind == tyExpr:
+        # infer 'auto' from the base to make it consistent:
+        b.typ.sons[0] = a.typ.sons[0]
+      else:
+        return No
 
 proc attachDispatcher(s: PSym, dispatcher: PNode) =
   var L = s.ast.len-1