mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 13:33:22 +00:00
fixes #4564
This commit is contained in:
@@ -752,14 +752,16 @@ proc semIndirectOp(c: PContext, n: PNode, flags: TExprFlags): PNode =
|
||||
var prc = n.sons[0]
|
||||
if n.sons[0].kind == nkDotExpr:
|
||||
checkSonsLen(n.sons[0], 2)
|
||||
n.sons[0] = semFieldAccess(c, n.sons[0])
|
||||
if n.sons[0].kind == nkDotCall:
|
||||
let n0 = semFieldAccess(c, n.sons[0])
|
||||
if n0.kind == nkDotCall:
|
||||
# it is a static call!
|
||||
result = n.sons[0]
|
||||
result = n0
|
||||
result.kind = nkCall
|
||||
result.flags.incl nfExplicitCall
|
||||
for i in countup(1, sonsLen(n) - 1): addSon(result, n.sons[i])
|
||||
return semExpr(c, result, flags)
|
||||
else:
|
||||
n.sons[0] = n0
|
||||
else:
|
||||
n.sons[0] = semExpr(c, n.sons[0], {efInCall})
|
||||
let t = n.sons[0].typ
|
||||
|
||||
3
tests/template/mlt.nim
Normal file
3
tests/template/mlt.nim
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
type Point* = ref object of RootObj
|
||||
proc `>`*(p1, p2: Point): bool = false
|
||||
7
tests/template/tlt.nim
Normal file
7
tests/template/tlt.nim
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
import mlt
|
||||
# bug #4564
|
||||
type Bar* = ref object of RootObj
|
||||
proc foo(a: Bar): int = 0
|
||||
var a: Bar
|
||||
let b = a.foo() > 0
|
||||
Reference in New Issue
Block a user