Skip to content

Commit 5f4e4fa

Browse files
committed
add hacks
1 parent 2d547ab commit 5f4e4fa

File tree

3 files changed

+12
-13
lines changed

3 files changed

+12
-13
lines changed

bpython/curtsiesfrontend/interpreter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# encoding: utf-8
22

33
import sys
4+
from tokenize import TokenError
5+
46
from six import iteritems, text_type
57

68
from pygments.token import Generic, Token, Keyword, Name, Comment, String

bpython/repl.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import traceback
4242
from codeop import PyCF_DONT_IMPLY_DEDENT, _features
4343
from itertools import takewhile
44+
from tokenize import TokenError
45+
4446
from six import itervalues
4547
from types import ModuleType
4648

@@ -97,7 +99,12 @@ def __call__(self, source, filename='<unknown>', symbol=None):
9799
from yapypy.extended_python.symbol_analyzer import to_tagged_ast
98100
from yapypy.extended_python.parser import parse
99101

100-
ast_node = to_tagged_ast(parse(source).result)
102+
ast_node = None
103+
try:
104+
ast_node = to_tagged_ast(parse(source).result)
105+
except TokenError:
106+
raise SyntaxError
107+
101108
codeob = py_compile(ast_node, filename, True)
102109
for feature in _features:
103110
if codeob.co_flags & feature.compiler_flag:
@@ -204,7 +211,7 @@ def runsource(self, source, filename=None, symbol='single',
204211
filename = filename_for_console_input(source)
205212
with self.timer:
206213
return code.InteractiveInterpreter.runsource(self, source,
207-
filename, True)
214+
filename, symbol)
208215

209216
def showsyntaxerror(self, filename=None):
210217
"""Override the regular handler, the code's copied and pasted from

bpython/test/test_curtsies_repl.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,8 @@ def cfwp(self, source):
4949
self.repl.interp.compile)
5050

5151
def test_code_finished_will_parse(self):
52-
self.repl.buffer = ['1 + 1']
53-
self.assertTrue(self.cfwp('\n'.join(self.repl.buffer)), (True, True))
54-
self.repl.buffer = ['def foo(x):']
52+
self.repl.buffer = ['filter(', '', '']
5553
self.assertTrue(self.cfwp('\n'.join(self.repl.buffer)), (False, True))
56-
self.repl.buffer = ['def foo(x)']
57-
self.assertTrue(self.cfwp('\n'.join(self.repl.buffer)), (True, False))
58-
self.repl.buffer = ['def foo(x):', 'return 1']
59-
self.assertTrue(self.cfwp('\n'.join(self.repl.buffer)), (True, False))
60-
self.repl.buffer = ['def foo(x):', ' return 1']
61-
self.assertTrue(self.cfwp('\n'.join(self.repl.buffer)), (True, True))
62-
self.repl.buffer = ['def foo(x):', ' return 1', '']
63-
self.assertTrue(self.cfwp('\n'.join(self.repl.buffer)), (True, True))
6454

6555
def test_external_communication(self):
6656
self.repl.send_current_block_to_external_editor()

0 commit comments

Comments
 (0)