diff options
author | Araq <rumpf_a@web.de> | 2015-10-25 02:22:50 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-10-25 02:22:50 +0100 |
commit | aa36e73ecf1e09367a5e94de6c3af488449eb4f6 (patch) | |
tree | c135ef199ca93b5564930460b529455d5d6a5a20 /compiler | |
parent | 77dc0e50ff8da88a567281dde86216150126f54e (diff) | |
download | Nim-aa36e73ecf1e09367a5e94de6c3af488449eb4f6.tar.gz |
fixes #3431, fixes #3370, fixes #3468
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/cgmeth.nim | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/cgmeth.nim b/compiler/cgmeth.nim index 9642e9122..3c2c51b76 100644 --- a/compiler/cgmeth.nim +++ b/compiler/cgmeth.nim @@ -66,15 +66,16 @@ proc sameMethodBucket(a, b: PSym): MethodResult = bb = bb.lastSon else: break - if sameType(aa, bb): discard + if sameType(aa, bb): + if aa.kind == tyObject and result != Invalid: result = Yes elif aa.kind == tyObject and bb.kind == tyObject: let diff = inheritanceDiff(bb, aa) - if diff < 0: discard "Ok" + if diff < 0: + if result != Invalid: result = Yes elif diff != high(int): result = Invalid else: return No - if result != Invalid: result = Yes proc attachDispatcher(s: PSym, dispatcher: PNode) = var L = s.ast.len-1 |