Show More
@@ -2072,15 +2072,20 b' methods = {' | |||
|
2072 | 2072 | "parentpost": p1, |
|
2073 | 2073 | } |
|
2074 | 2074 | |
|
2075 |
def _ |
|
|
2076 | return ( | |
|
2077 | revs is not None | |
|
2075 | def _matchonly(revs, bases): | |
|
2076 | """ | |
|
2077 | >>> f = lambda *args: _matchonly(*map(parse, args)) | |
|
2078 | >>> f('ancestors(A)', 'not ancestors(B)') | |
|
2079 | ('list', ('symbol', 'A'), ('symbol', 'B')) | |
|
2080 | """ | |
|
2081 | if (revs is not None | |
|
2078 | 2082 | and revs[0] == 'func' |
|
2079 | 2083 | and getstring(revs[1], _('not a symbol')) == 'ancestors' |
|
2080 | 2084 | and bases is not None |
|
2081 | 2085 | and bases[0] == 'not' |
|
2082 | 2086 | and bases[1][0] == 'func' |
|
2083 | and getstring(bases[1][1], _('not a symbol')) == 'ancestors') | |
|
2087 | and getstring(bases[1][1], _('not a symbol')) == 'ancestors'): | |
|
2088 | return ('list', revs[2], bases[1][2]) | |
|
2084 | 2089 | |
|
2085 | 2090 | def optimize(x, small): |
|
2086 | 2091 | if x is None: |
@@ -2119,10 +2124,9 b' def optimize(x, small):' | |||
|
2119 | 2124 | w = min(wa, wb) |
|
2120 | 2125 | |
|
2121 | 2126 | # (::x and not ::y)/(not ::y and ::x) have a fast path |
|
2122 | if _isonly(ta, tb): | |
|
2123 | return w, ('func', ('symbol', 'only'), ('list', ta[2], tb[1][2])) | |
|
2124 | if _isonly(tb, ta): | |
|
2125 | return w, ('func', ('symbol', 'only'), ('list', tb[2], ta[1][2])) | |
|
2127 | tm = _matchonly(ta, tb) or _matchonly(tb, ta) | |
|
2128 | if tm: | |
|
2129 | return w, ('func', ('symbol', 'only'), tm) | |
|
2126 | 2130 | |
|
2127 | 2131 | if tb is not None and tb[0] == 'not': |
|
2128 | 2132 | return wa, ('difference', ta, tb[1]) |
General Comments 0
You need to be logged in to leave comments.
Login now