diff options
Diffstat (limited to 'nim/semtempl.pas')
-rw-r--r-- | nim/semtempl.pas | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/nim/semtempl.pas b/nim/semtempl.pas index f7f0cadd5..b861949c9 100644 --- a/nim/semtempl.pas +++ b/nim/semtempl.pas @@ -15,7 +15,7 @@ begin if n = nil then begin result := false; exit end; case n.kind of nkIdent..nkNilLit: result := true; - nkCall..nkCast: begin + nkCall..nkPassAsOpenArray: begin for i := 0 to sonsLen(n)-1 do if not isExpr(n.sons[i]) then begin result := false; exit @@ -27,7 +27,7 @@ begin end; function isTypeDesc(n: PNode): bool; -// returns true if ``n`` looks like an type desc +// returns true if ``n`` looks like a type desc var i: int; begin @@ -46,15 +46,6 @@ begin end end; -function semMacroExpr(c: PContext; n: PNode; sym: PSym): PNode; -begin - // macros can be overloaded by the number of arguments? - // no: would make variable number of arguments more - // complicated! - // XXX - result := n; -end; - function evalTemplateAux(c: PContext; templ, actual: PNode; sym: PSym): PNode; var @@ -88,7 +79,7 @@ var r: PNode; begin inc(evalTemplateCounter); - if evalTemplateCounter > 100 then + if evalTemplateCounter > 100 then liMessage(n.info, errTemplateInstantiationTooNested); // replace each param by the corresponding node: r := sym.ast.sons[paramsPos].sons[0]; @@ -156,7 +147,7 @@ begin end end end; - if realStmt >= 0 then + if realStmt >= 0 then result := transformToExpr(n.sons[realStmt]) else n.kind := nkStmtListExpr; @@ -213,7 +204,7 @@ begin n.sons[codePos] := transformToExpr(n.sons[codePos]); // only parameters are resolved, no type checking is performed - closeScope(c.tab); + closeScope(c.tab); popOwner(c); s.ast := n; |