equal
deleted
inserted
replaced
79 pos += 1 |
79 pos += 1 |
80 yield ('end', None, pos) |
80 yield ('end', None, pos) |
81 |
81 |
82 def parse(expr): |
82 def parse(expr): |
83 p = parser.parser(tokenize, elements) |
83 p = parser.parser(tokenize, elements) |
84 return p.parse(expr) |
84 tree, pos = p.parse(expr) |
|
85 if pos != len(expr): |
|
86 raise error.ParseError(_("invalid token"), pos) |
|
87 return tree |
85 |
88 |
86 def getstring(x, err): |
89 def getstring(x, err): |
87 if x and (x[0] == 'string' or x[0] == 'symbol'): |
90 if x and (x[0] == 'string' or x[0] == 'symbol'): |
88 return x[1] |
91 return x[1] |
89 raise error.ParseError(err) |
92 raise error.ParseError(err) |
489 'size', |
492 'size', |
490 'symlink', |
493 'symlink', |
491 ] |
494 ] |
492 |
495 |
493 def getfileset(ctx, expr): |
496 def getfileset(ctx, expr): |
494 tree, pos = parse(expr) |
497 tree = parse(expr) |
495 if (pos != len(expr)): |
|
496 raise error.ParseError(_("invalid token"), pos) |
|
497 |
498 |
498 # do we need status info? |
499 # do we need status info? |
499 if (_intree(['modified', 'added', 'removed', 'deleted', |
500 if (_intree(['modified', 'added', 'removed', 'deleted', |
500 'unknown', 'ignored', 'clean'], tree) or |
501 'unknown', 'ignored', 'clean'], tree) or |
501 # Using matchctx.existing() on a workingctx requires us to check |
502 # Using matchctx.existing() on a workingctx requires us to check |