diff options
Diffstat (limited to 'compiler/patterns.nim')
-rw-r--r-- | compiler/patterns.nim | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/compiler/patterns.nim b/compiler/patterns.nim index 3f2e2e86e..7e66ae591 100644 --- a/compiler/patterns.nim +++ b/compiler/patterns.nim @@ -58,8 +58,8 @@ proc sameTrees*(a, b: PNode): bool = of nkEmpty, nkNilLit: result = true of nkType: result = sameTypeOrNil(a.typ, b.typ) else: - if sonsLen(a) == sonsLen(b): - for i in 0 ..< sonsLen(a): + if len(a) == len(b): + for i in 0 ..< len(a): if not sameTrees(a.sons[i], b.sons[i]): return result = true @@ -112,7 +112,7 @@ proc matchNested(c: PPatternContext, p, n: PNode, rpn: bool): bool = rpn: bool): bool = result = true if n.kind in nkCallKinds and matches(c, op.sons[1], n.sons[0]): - for i in 1..sonsLen(n)-1: + for i in 1..len(n)-1: if not matchStarAux(c, op, n[i], arglist, rpn): return false if rpn: arglist.add(n.sons[0]) elif n.kind == nkHiddenStdConv and n.sons[1].kind == nkBracket: @@ -174,35 +174,35 @@ proc matches(c: PPatternContext, p, n: PNode): bool = of nkEmpty, nkNilLit, nkType: result = true else: - var plen = sonsLen(p) + var plen = len(p) # special rule for p(X) ~ f(...); this also works for stuff like # partial case statements, etc! - Not really ... :-/ let v = lastSon(p) if isPatternParam(c, v) and v.sym.typ.kind == tyVarargs: var arglist: PNode - if plen <= sonsLen(n): + if plen <= len(n): for i in 0 .. plen - 2: if not matches(c, p.sons[i], n.sons[i]): return - if plen == sonsLen(n) and lastSon(n).kind == nkHiddenStdConv and + if plen == len(n) and lastSon(n).kind == nkHiddenStdConv and lastSon(n).sons[1].kind == nkBracket: # unpack varargs: let n = lastSon(n).sons[1] arglist = newNodeI(nkArgList, n.info, n.len) for i in 0..<n.len: arglist.sons[i] = n.sons[i] else: - arglist = newNodeI(nkArgList, n.info, sonsLen(n) - plen + 1) + arglist = newNodeI(nkArgList, n.info, len(n) - plen + 1) # f(1, 2, 3) # p(X) - for i in 0 .. sonsLen(n) - plen: + for i in 0 .. len(n) - plen: arglist.sons[i] = n.sons[i + plen - 1] return bindOrCheck(c, v.sym, arglist) - elif plen-1 == sonsLen(n): + elif plen-1 == len(n): for i in 0 .. plen - 2: if not matches(c, p.sons[i], n.sons[i]): return arglist = newNodeI(nkArgList, n.info) return bindOrCheck(c, v.sym, arglist) - if plen == sonsLen(n): - for i in 0 ..< sonsLen(p): + if plen == len(n): + for i in 0 ..< len(p): if not matches(c, p.sons[i], n.sons[i]): return result = true @@ -250,7 +250,7 @@ proc applyRule*(c: PContext, s: PSym, n: PNode): PNode = var ctx: TPatternContext ctx.owner = s ctx.c = c - ctx.formals = sonsLen(s.typ)-1 + ctx.formals = len(s.typ)-1 var m = matchStmtList(ctx, s.ast.sons[patternPos], n) if isNil(m): return nil # each parameter should have been bound; we simply setup a call and |