diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-02-25 08:18:54 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-02-25 08:18:54 +0100 |
commit | 4306efada44795f19462714f15cd215a6e8d7ca3 (patch) | |
tree | c2e5750a53743c37e3bb718e91a3364fb3b071f1 /compiler | |
parent | b935eeb997f8474b580f7491f8e26ecd5610cd93 (diff) | |
parent | fa98edc78cf990f2437288af87a9180847f94ed4 (diff) | |
download | Nim-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.nim | 12 |
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 |