@@ -33,13 +33,7 @@ exports.compile = compile = (code, options = {}) ->
3333 if options .sourceMap
3434 map = new SourceMap
3535
36- try
37- fragments = parser .parse (lexer .tokenize code, options).compileToFragments options
38- catch err
39- # Add source file information to error so it can be pretty-printed later.
40- err .filename = options .filename
41- err .code = code
42- throw err
36+ fragments = parser .parse (lexer .tokenize code, options).compileToFragments options
4337
4438 currentLine = 0
4539 currentLine += 1 if options .header
@@ -152,7 +146,15 @@ exports.eval = (code, options = {}) ->
152146loadFile = (module , filename ) ->
153147 raw = fs .readFileSync filename, ' utf8'
154148 stripped = if raw .charCodeAt (0 ) is 0xFEFF then raw .substring 1 else raw
155- answer = compile (stripped, {filename, sourceMap : true , literate : helpers .isLiterate filename})
149+ try
150+ answer = compile (stripped, {filename, sourceMap : true , literate : helpers .isLiterate filename})
151+ catch err
152+ # As the filename and code of a dynamically loaded file will be different
153+ # from the original file compiled with CoffeeScript.run, add that
154+ # information to error so it can be pretty-printed later.
155+ err .filename = filename
156+ err .code = stripped
157+ throw err
156158 sourceMaps[filename] = answer .sourceMap
157159 module ._compile answer .js , filename
158160
0 commit comments