diff -r d6970628b95f -r 03d7f885d5f2 mercurial/revsetlang.py --- a/mercurial/revsetlang.py Sat Apr 14 00:30:39 2018 +0900 +++ b/mercurial/revsetlang.py Tue Apr 17 21:59:58 2018 +0900 @@ -89,6 +89,9 @@ [('symbol', '@', 0), ('::', None, 1), ('end', None, 3)] ''' + if not isinstance(program, bytes): + raise error.ProgrammingError('revset statement must be bytes, got %r' + % program) program = pycompat.bytestr(program) if syminitletters is None: syminitletters = _syminitletters @@ -581,6 +584,8 @@ elif c == 's': return _quote(arg) elif c == 'r': + if not isinstance(arg, bytes): + raise TypeError parse(arg) # make sure syntax errors are confined return '(%s)' % arg elif c == 'n':