mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
…er base method returning a lent
fixes #22673
(cherry picked from commit 2e070dfc76)
This commit is contained in:
@@ -95,7 +95,8 @@ proc sameMethodBucket(a, b: PSym; multiMethods: bool): MethodResult =
|
||||
return No
|
||||
if result == Yes:
|
||||
# check for return type:
|
||||
if not sameTypeOrNil(a.typ[0], b.typ[0]):
|
||||
# ignore flags of return types; # bug #22673
|
||||
if not sameTypeOrNil(a.typ[0], b.typ[0], {IgnoreFlags}):
|
||||
if b.typ[0] != nil and b.typ[0].kind == tyUntyped:
|
||||
# infer 'auto' from the base to make it consistent:
|
||||
b.typ[0] = a.typ[0]
|
||||
|
||||
@@ -991,7 +991,7 @@ type
|
||||
ExactGcSafety
|
||||
AllowCommonBase
|
||||
PickyCAliases # be picky about the distinction between 'cint' and 'int32'
|
||||
IgnoreFlags # used for borrowed functions; ignores the tfVarIsPtr flag
|
||||
IgnoreFlags # used for borrowed functions and methods; ignores the tfVarIsPtr flag
|
||||
|
||||
TTypeCmpFlags* = set[TTypeCmpFlag]
|
||||
|
||||
|
||||
21
tests/method/t22673.nim
Normal file
21
tests/method/t22673.nim
Normal file
@@ -0,0 +1,21 @@
|
||||
discard """
|
||||
matrix: "--warningAsError:UseBase"
|
||||
"""
|
||||
|
||||
# bug #22673
|
||||
type RefEntry = ref object of RootObj
|
||||
|
||||
type RefFile = ref object of RefEntry
|
||||
filename*: string
|
||||
data*: string
|
||||
|
||||
type RefDir = ref object of RefEntry
|
||||
dirname*: string
|
||||
files*: seq[RefFile]
|
||||
|
||||
method name*(e: RefEntry): lent string {.base.} =
|
||||
raiseAssert "Don't call the base method"
|
||||
|
||||
method name*(e: RefFile): lent string = e.filename
|
||||
|
||||
method name*(e: RefDir): lent string = e.dirname
|
||||
Reference in New Issue
Block a user