Fix suggested by Sjoerd (long ago!) to get a better error message when
there's a syntax error. (In particular, display the correct filename). This changes the API: if there's a syntax error, the function now returns normally after dumping the error to sys.stderr. I changed Sjoerd's use of string.join(string.split(...)) with string.replace().
This commit is contained in:
parent
dc492e6738
commit
f984a65267
|
@ -51,7 +51,15 @@ def compile(file, cfile=None, dfile=None):
|
|||
f.close()
|
||||
if codestring and codestring[-1] != '\n':
|
||||
codestring = codestring + '\n'
|
||||
codeobject = __builtin__.compile(codestring, dfile or file, 'exec')
|
||||
try:
|
||||
codeobject = __builtin__.compile(codestring, dfile or file, 'exec')
|
||||
except SyntaxError, detail:
|
||||
import traceback, sys, string
|
||||
lines = traceback.format_exception_only(SyntaxError, detail)
|
||||
for line in lines:
|
||||
sys.stderr.write(string.replace(line, 'File "<string>"',
|
||||
'File "%s"' % (dfile or file)))
|
||||
return
|
||||
if not cfile:
|
||||
cfile = file + (__debug__ and 'c' or 'o')
|
||||
fc = open(cfile, 'wb')
|
||||
|
|
Loading…
Reference in New Issue