# HG changeset patch # User Yuya Nishihara # Date 1489667781 -32400 # Node ID 80c8a6db450d293085283fa68da5fddefdee7b1f # Parent f784ba187089989c0a8cf68f8e939cfb4759b7ee py3: use bytestr wrapper in revsetlang.tokenize() This backs out 77270ec0cdd9 and wraps program by bytestr() instead. diff -r f784ba187089 -r 80c8a6db450d mercurial/revsetlang.py --- a/mercurial/revsetlang.py Thu Mar 16 21:33:25 2017 +0900 +++ b/mercurial/revsetlang.py Thu Mar 16 21:36:21 2017 +0900 @@ -78,6 +78,7 @@ [('symbol', '@', 0), ('::', None, 1), ('end', None, 3)] ''' + program = pycompat.bytestr(program) if syminitletters is None: syminitletters = _syminitletters if symletters is None: @@ -100,7 +101,7 @@ pos, l = 0, len(program) while pos < l: - c = program[pos:pos + 1] + c = program[pos] if c.isspace(): # skip inter-token whitespace pass elif c == ':' and program[pos:pos + 2] == '::': # look ahead carefully @@ -118,14 +119,14 @@ program[pos:pos + 2] in ("r'", 'r"')): # handle quoted strings if c == 'r': pos += 1 - c = program[pos:pos + 1] + c = program[pos] decode = lambda x: x else: decode = parser.unescapestr pos += 1 s = pos while pos < l: # find closing quote - d = program[pos:pos + 1] + d = program[pos] if d == '\\': # skip over escaped characters pos += 2 continue @@ -140,11 +141,10 @@ s = pos pos += 1 while pos < l: # find end of symbol - d = program[pos:pos + 1] + d = program[pos] if d not in symletters: break - if (d == '.' - and program[pos - 1:pos] == '.'): # special case for .. + if d == '.' and program[pos - 1] == '.': # special case for .. pos -= 1 break pos += 1