bugfixes for the new C++ patterns
This commit is contained in:
parent
5ae8689b63
commit
e2147c9f0d
1 changed files with 7 additions and 8 deletions
|
|
@ -302,10 +302,11 @@ proc genPatternCall(p: BProc; ri: PNode; pat: string; typ: PType): PRope =
|
||||||
while i < pat.len:
|
while i < pat.len:
|
||||||
case pat[i]
|
case pat[i]
|
||||||
of '@':
|
of '@':
|
||||||
result.app genOtherArg(p, ri, j, typ)
|
if j < ri.len:
|
||||||
for k in j+1 .. < ri.len:
|
result.app genOtherArg(p, ri, j, typ)
|
||||||
result.app(~", ")
|
for k in j+1 .. < ri.len:
|
||||||
result.app genOtherArg(p, ri, k, typ)
|
result.app(~", ")
|
||||||
|
result.app genOtherArg(p, ri, k, typ)
|
||||||
inc i
|
inc i
|
||||||
of '#':
|
of '#':
|
||||||
if pat[i+1] in {'+', '@'}:
|
if pat[i+1] in {'+', '@'}:
|
||||||
|
|
@ -448,8 +449,7 @@ proc genNamedParamCall(p: BProc, ri: PNode, d: var TLoc) =
|
||||||
proc genCall(p: BProc, e: PNode, d: var TLoc) =
|
proc genCall(p: BProc, e: PNode, d: var TLoc) =
|
||||||
if e.sons[0].typ.callConv == ccClosure:
|
if e.sons[0].typ.callConv == ccClosure:
|
||||||
genClosureCall(p, nil, e, d)
|
genClosureCall(p, nil, e, d)
|
||||||
elif e.sons[0].kind == nkSym and sfInfixCall in e.sons[0].sym.flags and
|
elif e.sons[0].kind == nkSym and sfInfixCall in e.sons[0].sym.flags:
|
||||||
e.len >= 2:
|
|
||||||
genInfixCall(p, nil, e, d)
|
genInfixCall(p, nil, e, d)
|
||||||
elif e.sons[0].kind == nkSym and sfNamedParamCall in e.sons[0].sym.flags:
|
elif e.sons[0].kind == nkSym and sfNamedParamCall in e.sons[0].sym.flags:
|
||||||
genNamedParamCall(p, e, d)
|
genNamedParamCall(p, e, d)
|
||||||
|
|
@ -462,8 +462,7 @@ proc genCall(p: BProc, e: PNode, d: var TLoc) =
|
||||||
proc genAsgnCall(p: BProc, le, ri: PNode, d: var TLoc) =
|
proc genAsgnCall(p: BProc, le, ri: PNode, d: var TLoc) =
|
||||||
if ri.sons[0].typ.callConv == ccClosure:
|
if ri.sons[0].typ.callConv == ccClosure:
|
||||||
genClosureCall(p, le, ri, d)
|
genClosureCall(p, le, ri, d)
|
||||||
elif ri.sons[0].kind == nkSym and sfInfixCall in ri.sons[0].sym.flags and
|
elif ri.sons[0].kind == nkSym and sfInfixCall in ri.sons[0].sym.flags:
|
||||||
ri.len >= 2:
|
|
||||||
genInfixCall(p, le, ri, d)
|
genInfixCall(p, le, ri, d)
|
||||||
elif ri.sons[0].kind == nkSym and sfNamedParamCall in ri.sons[0].sym.flags:
|
elif ri.sons[0].kind == nkSym and sfNamedParamCall in ri.sons[0].sym.flags:
|
||||||
genNamedParamCall(p, ri, d)
|
genNamedParamCall(p, ri, d)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue