Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

Commit 438e344

Browse files
committed
try catches in closures
1 parent e75cfc5 commit 438e344

File tree

1 file changed

+59
-55
lines changed

1 file changed

+59
-55
lines changed

lib/loader.js

Lines changed: 59 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -110,18 +110,20 @@ function logloads(loads) {
110110
var traceur;
111111

112112
var defineProperty;
113-
try {
114-
if (!!Object.defineProperty({}, 'a', {})) {
115-
defineProperty = Object.defineProperty;
116-
}
117-
} catch (e) {
118-
defineProperty = function (obj, prop, opt) {
119-
try {
120-
obj[prop] = opt.value || opt.get.call(obj);
113+
(function () {
114+
try {
115+
if (!!Object.defineProperty({}, 'a', {})) {
116+
defineProperty = Object.defineProperty;
117+
}
118+
} catch (e) {
119+
defineProperty = function (obj, prop, opt) {
120+
try {
121+
obj[prop] = opt.value || opt.get.call(obj);
122+
}
123+
catch(e) {}
121124
}
122-
catch(e) {}
123125
}
124-
}
126+
}());
125127

126128
console.assert = console.assert || function() {};
127129

@@ -190,64 +192,66 @@ function logloads(loads) {
190192

191193
console.assert(load.source, 'Non-empty source');
192194

193-
var depsList;
194-
try {
195-
var parser = new traceur.syntax.Parser(new traceur.syntax.SourceFile(load.address, load.source));
196-
var body = parser.parseModule();
195+
var depsList, curRegister, curSystem, oldSourceMaps, oldModules;
196+
(function () {
197+
try {
198+
var parser = new traceur.syntax.Parser(new traceur.syntax.SourceFile(load.address, load.source));
199+
var body = parser.parseModule();
197200

198-
load.kind = 'declarative';
199-
depsList = getImports(body);
201+
load.kind = 'declarative';
202+
depsList = getImports(body);
200203

201-
var oldSourceMaps = traceur.options.sourceMaps;
202-
var oldModules = traceur.options.modules;
204+
oldSourceMaps = traceur.options.sourceMaps;
205+
oldModules = traceur.options.modules;
203206

204-
traceur.options.sourceMaps = true;
205-
traceur.options.modules = 'instantiate';
207+
traceur.options.sourceMaps = true;
208+
traceur.options.modules = 'instantiate';
206209

207-
var reporter = new traceur.util.ErrorReporter();
210+
var reporter = new traceur.util.ErrorReporter();
208211

209-
reporter.reportMessageInternal = function(location, kind, format, args) {
210-
throw new SyntaxError(kind, location.start && location.start.line_, location.start && location.start.column_);
211-
}
212+
reporter.reportMessageInternal = function(location, kind, format, args) {
213+
throw new SyntaxError(kind, location.start && location.start.line_, location.start && location.start.column_);
214+
}
212215

213-
// traceur expects its version of System
214-
var curSystem = __global.System;
215-
__global.System = __global.traceurSystem;
216+
// traceur expects its version of System
217+
curSystem = __global.System;
218+
__global.System = __global.traceurSystem;
216219

217-
var tree = (new traceur.codegeneration.module.AttachModuleNameTransformer(load.name)).transformAny(body);
218-
tree = (new traceur.codegeneration.FromOptionsTransformer(reporter)).transform(tree);
220+
var tree = (new traceur.codegeneration.module.AttachModuleNameTransformer(load.name)).transformAny(body);
221+
tree = (new traceur.codegeneration.FromOptionsTransformer(reporter)).transform(tree);
219222

220-
var sourceMapGenerator = new traceur.outputgeneration.SourceMapGenerator({ file: load.address });
221-
var options = { sourceMapGenerator: sourceMapGenerator };
223+
var sourceMapGenerator = new traceur.outputgeneration.SourceMapGenerator({ file: load.address });
224+
var options = { sourceMapGenerator: sourceMapGenerator };
222225

223-
var source = traceur.outputgeneration.TreeWriter.write(tree, options);
226+
var source = traceur.outputgeneration.TreeWriter.write(tree, options);
224227

225-
if (__global.btoa)
226-
source += '\n//# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(options.sourceMap))) + '\n';
228+
if (__global.btoa)
229+
source += '\n//# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(options.sourceMap))) + '\n';
227230

228-
// now run System.register
229-
var curRegister = System.register;
231+
// now run System.register
232+
curRegister = System.register;
230233

231-
System.register = function(name, deps, declare) {
232-
// store the registered declaration as load.declare
233-
load.declare = typeof name == 'string' ? declare : deps;
234-
}
234+
System.register = function(name, deps, declare) {
235+
// store the registered declaration as load.declare
236+
load.declare = typeof name == 'string' ? declare : deps;
237+
}
235238

236-
__eval(source, __global, load.name);
237-
}
238-
catch(e) {
239-
if (e.name == 'SyntaxError' || e.name == 'TypeError')
240-
e.message = 'Evaluating ' + (load.name || load.address) + '\n\t' + e.message;
241-
if (curRegister)
242-
System.register = curRegister;
243-
if (curSystem)
244-
__global.System = curSystem;
245-
if (oldSourceMaps)
246-
traceur.options.sourceMaps = oldSourceMaps;
247-
if (oldModules)
248-
traceur.options.modules = oldModules;
249-
throw e;
250-
}
239+
__eval(source, __global, load.name);
240+
}
241+
catch(e) {
242+
if (e.name == 'SyntaxError' || e.name == 'TypeError')
243+
e.message = 'Evaluating ' + (load.name || load.address) + '\n\t' + e.message;
244+
if (curRegister)
245+
System.register = curRegister;
246+
if (curSystem)
247+
__global.System = curSystem;
248+
if (oldSourceMaps)
249+
traceur.options.sourceMaps = oldSourceMaps;
250+
if (oldModules)
251+
traceur.options.modules = oldModules;
252+
throw e;
253+
}
254+
}());
251255
System.register = curRegister;
252256
__global.System = curSystem;
253257
traceur.options.sourceMaps = oldSourceMaps;

0 commit comments

Comments
 (0)