Commit a5c9f076 authored by Guido van Rossum's avatar Guido van Rossum

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().
parent b18da4df
......@@ -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')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment