summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/cgmeth.nim12
-rw-r--r--tests/method/tautonotgeneric.nim (renamed from tests/metatype/tautonotgeneric.nim)0
-rw-r--r--tools/nimsuggest/nimsuggest.nim2
3 files changed, 11 insertions, 3 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
diff --git a/tests/metatype/tautonotgeneric.nim b/tests/method/tautonotgeneric.nim
index f0d6932f9..f0d6932f9 100644
--- a/tests/metatype/tautonotgeneric.nim
+++ b/tests/method/tautonotgeneric.nim
diff --git a/tools/nimsuggest/nimsuggest.nim b/tools/nimsuggest/nimsuggest.nim
index 57d343ae4..137ac4219 100644
--- a/tools/nimsuggest/nimsuggest.nim
+++ b/tools/nimsuggest/nimsuggest.nim
@@ -423,7 +423,7 @@ proc recompileFullProject(graph: ModuleGraph; cache: IdentCache) =
   graph.resetAllModules()
   GC_fullcollect()
   compileProject(graph, cache)
-  echo "recompiled!"
+  echo GC_getStatistics()
 
 proc mainThread(graph: ModuleGraph; cache: IdentCache) =
   if gLogging: