parent
518b794491
commit
4b09a89758
3 changed files with 47 additions and 3 deletions
|
|
@ -82,7 +82,7 @@ proc notFoundError*(c: PContext, n: PNode, errors: seq[string]) =
|
||||||
# fail fast:
|
# fail fast:
|
||||||
globalError(n.info, errTypeMismatch, "")
|
globalError(n.info, errTypeMismatch, "")
|
||||||
var result = msgKindToString(errTypeMismatch)
|
var result = msgKindToString(errTypeMismatch)
|
||||||
add(result, describeArgs(c, n, 1 + ord(nfDotField in n.flags)))
|
add(result, describeArgs(c, n, 1))
|
||||||
add(result, ')')
|
add(result, ')')
|
||||||
|
|
||||||
var candidates = ""
|
var candidates = ""
|
||||||
|
|
@ -175,9 +175,15 @@ proc resolveOverloads(c: PContext, n, orig: PNode,
|
||||||
localError(n.info, errExprXCannotBeCalled,
|
localError(n.info, errExprXCannotBeCalled,
|
||||||
renderTree(n, {renderNoComments}))
|
renderTree(n, {renderNoComments}))
|
||||||
else:
|
else:
|
||||||
|
if {nfDotField, nfDotSetter} * n.flags != {}:
|
||||||
|
# clean up the inserted ops
|
||||||
|
n.sons.delete(2)
|
||||||
|
n.sons[0] = f
|
||||||
|
|
||||||
errors = @[]
|
errors = @[]
|
||||||
pickBest(f)
|
pickBest(f)
|
||||||
notFoundError(c, n, errors)
|
notFoundError(c, n, errors)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if alt.state == csMatch and cmpCandidates(result, alt) == 0 and
|
if alt.state == csMatch and cmpCandidates(result, alt) == 0 and
|
||||||
|
|
|
||||||
26
tests/iter/titerable.nim
Normal file
26
tests/iter/titerable.nim
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
discard """
|
||||||
|
output: '''2
|
||||||
|
4
|
||||||
|
6
|
||||||
|
4
|
||||||
|
8
|
||||||
|
12
|
||||||
|
'''
|
||||||
|
"""
|
||||||
|
|
||||||
|
iterator map[T, U](s: iterator:T{.inline.}, f: proc(x: T): U): U =
|
||||||
|
for e in s: yield f(e)
|
||||||
|
|
||||||
|
template toSeq(s: expr): expr =
|
||||||
|
var res = newSeq[type(s)](0)
|
||||||
|
for e in s: res.add(e)
|
||||||
|
res
|
||||||
|
|
||||||
|
var s1 = @[1, 2, 3]
|
||||||
|
for x in map(s1.items, proc (a:int): int = a*2):
|
||||||
|
echo x
|
||||||
|
|
||||||
|
var s2 = toSeq(map(s1.items, proc (a:int): int = a*4))
|
||||||
|
for x in s2:
|
||||||
|
echo x
|
||||||
|
|
||||||
12
tests/overload/tissue966.nim
Normal file
12
tests/overload/tissue966.nim
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
discard """
|
||||||
|
msg: 'type mismatch: got (PTest)'
|
||||||
|
"""
|
||||||
|
|
||||||
|
type
|
||||||
|
PTest = ref object
|
||||||
|
|
||||||
|
proc test(x: PTest, y: int) = nil
|
||||||
|
|
||||||
|
var buf: PTest
|
||||||
|
buf.test()
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue