fixes #5079
This commit is contained in:
parent
20cf28adde
commit
7b44896e03
2 changed files with 27 additions and 1 deletions
|
|
@ -1274,7 +1274,8 @@ proc propertyWriteAccess(c: PContext, n, nOrig, a: PNode): PNode =
|
||||||
# this is ugly. XXX Semantic checking should use the ``nfSem`` flag for
|
# this is ugly. XXX Semantic checking should use the ``nfSem`` flag for
|
||||||
# nodes?
|
# nodes?
|
||||||
let aOrig = nOrig[0]
|
let aOrig = nOrig[0]
|
||||||
result = newNode(nkCall, n.info, sons = @[setterId, a[0], semExpr(c, n[1])])
|
result = newNode(nkCall, n.info, sons = @[setterId, a[0],
|
||||||
|
semExprWithType(c, n[1])])
|
||||||
result.flags.incl nfDotSetter
|
result.flags.incl nfDotSetter
|
||||||
let orig = newNode(nkCall, n.info, sons = @[setterId, aOrig[0], nOrig[1]])
|
let orig = newNode(nkCall, n.info, sons = @[setterId, aOrig[0], nOrig[1]])
|
||||||
result = semOverloadedCallAnalyseEffects(c, result, orig, {})
|
result = semOverloadedCallAnalyseEffects(c, result, orig, {})
|
||||||
|
|
|
||||||
25
tests/ccgbugs/tmissingderef2.nim
Normal file
25
tests/ccgbugs/tmissingderef2.nim
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
discard """
|
||||||
|
output: "c"
|
||||||
|
"""
|
||||||
|
|
||||||
|
# bug #5079
|
||||||
|
|
||||||
|
import tables, strutils
|
||||||
|
|
||||||
|
type Test = ref object
|
||||||
|
s: string
|
||||||
|
|
||||||
|
proc `test=`(t: Test, s: string) =
|
||||||
|
t.s = s
|
||||||
|
|
||||||
|
var t = Test()
|
||||||
|
|
||||||
|
#t.test = spaces(2) # -- works
|
||||||
|
|
||||||
|
var a = newTable[string, string]()
|
||||||
|
a["b"] = "c"
|
||||||
|
|
||||||
|
#t.s = a["b"] # -- works
|
||||||
|
#t.test a["b"] # -- works
|
||||||
|
t.test = a["b"] # -- prints "out of memory" and quits
|
||||||
|
echo t.s
|
||||||
Loading…
Add table
Add a link
Reference in a new issue