Chromium Code Reviews

Side by Side Diff: test/codegen_expected/stack_trace/stack_trace.js

Issue 2234343003: fix #620, infer the input files from sources (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: format Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
(Empty)
1 dart_library.library('stack_trace', null, /* Imports */[
2 'dart_sdk',
3 'path'
4 ], function load__stack_trace(exports, dart_sdk, path) {
5 'use strict';
6 const core = dart_sdk.core;
7 const async = dart_sdk.async;
8 const _interceptors = dart_sdk._interceptors;
9 const math = dart_sdk.math;
10 const dart = dart_sdk.dart;
11 const dartx = dart_sdk.dartx;
12 const path$ = path.path;
13 const src__style = path.src__style;
14 const src__chain = Object.create(null);
15 const src__frame = Object.create(null);
16 const src__lazy_trace = Object.create(null);
17 const src__stack_zone_specification = Object.create(null);
18 const src__trace = Object.create(null);
19 const src__unparsed_frame = Object.create(null);
20 const src__utils = Object.create(null);
21 const src__vm_trace = Object.create(null);
22 const stack_trace = Object.create(null);
23 let JSArrayOfTrace = () => (JSArrayOfTrace = dart.constFn(_interceptors.JSArra y$(src__trace.Trace)))();
24 let ListOfTrace = () => (ListOfTrace = dart.constFn(core.List$(src__trace.Trac e)))();
25 let ListOfFrame = () => (ListOfFrame = dart.constFn(core.List$(src__frame.Fram e)))();
26 let dynamicAndChainTovoid = () => (dynamicAndChainTovoid = dart.constFn(dart.f unctionType(dart.void, [dart.dynamic, src__chain.Chain])))();
27 let ListOfString = () => (ListOfString = dart.constFn(core.List$(core.String)) )();
28 let ExpandoOf_Node = () => (ExpandoOf_Node = dart.constFn(core.Expando$(src__s tack_zone_specification._Node)))();
29 let JSArrayOfFrame = () => (JSArrayOfFrame = dart.constFn(_interceptors.JSArra y$(src__frame.Frame)))();
30 let dynamicAnddynamicTodynamic = () => (dynamicAnddynamicTodynamic = dart.cons tFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
31 let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionT ype(dart.dynamic, [])))();
32 let StringToTrace = () => (StringToTrace = dart.constFn(dart.definiteFunctionT ype(src__trace.Trace, [core.String])))();
33 let FrameTobool = () => (FrameTobool = dart.constFn(dart.definiteFunctionType( core.bool, [src__frame.Frame])))();
34 let TraceToTrace = () => (TraceToTrace = dart.constFn(dart.definiteFunctionTyp e(src__trace.Trace, [src__trace.Trace])))();
35 let TraceTobool = () => (TraceTobool = dart.constFn(dart.definiteFunctionType( core.bool, [src__trace.Trace])))();
36 let TraceToListOfFrame = () => (TraceToListOfFrame = dart.constFn(dart.definit eFunctionType(ListOfFrame(), [src__trace.Trace])))();
37 let FrameToint = () => (FrameToint = dart.constFn(dart.definiteFunctionType(co re.int, [src__frame.Frame])))();
38 let TraceToint = () => (TraceToint = dart.constFn(dart.definiteFunctionType(co re.int, [src__trace.Trace])))();
39 let FrameToString = () => (FrameToString = dart.constFn(dart.definiteFunctionT ype(core.String, [src__frame.Frame])))();
40 let TraceToString = () => (TraceToString = dart.constFn(dart.definiteFunctionT ype(core.String, [src__trace.Trace])))();
41 let VoidToFrame = () => (VoidToFrame = dart.constFn(dart.definiteFunctionType( src__frame.Frame, [])))();
42 let dynamicAnddynamicToFrame = () => (dynamicAnddynamicToFrame = dart.constFn( dart.definiteFunctionType(src__frame.Frame, [dart.dynamic, dart.dynamic])))();
43 let VoidToTrace = () => (VoidToTrace = dart.constFn(dart.definiteFunctionType( src__trace.Trace, [])))();
44 let ObjectAndStackTraceAndEventSinkTovoid = () => (ObjectAndStackTraceAndEvent SinkTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object, cor e.StackTrace, async.EventSink])))();
45 let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.definiteFun ctionType(dart.dynamic, [dart.dynamic])))();
46 let StringToFrame = () => (StringToFrame = dart.constFn(dart.definiteFunctionT ype(src__frame.Frame, [core.String])))();
47 let StringTobool = () => (StringTobool = dart.constFn(dart.definiteFunctionTyp e(core.bool, [core.String])))();
48 let FrameToFrame = () => (FrameToFrame = dart.constFn(dart.definiteFunctionTyp e(src__frame.Frame, [src__frame.Frame])))();
49 let StringAndintToString = () => (StringAndintToString = dart.constFn(dart.def initeFunctionType(core.String, [core.String, core.int])))();
50 let MatchToString = () => (MatchToString = dart.constFn(dart.definiteFunctionT ype(core.String, [core.Match])))();
51 src__chain.ChainHandler = dart.typedef('ChainHandler', () => dart.functionType (dart.void, [dart.dynamic, src__chain.Chain]));
52 let const$;
53 let const$0;
54 src__chain.Chain = class Chain extends core.Object {
55 static get _currentSpec() {
56 return src__stack_zone_specification.StackZoneSpecification._check(async.Z one.current.get(const$ || (const$ = dart.const(core.Symbol.new('stack_trace.stac k_zone.spec')))));
57 }
58 static capture(T) {
59 return (callback, opts) => {
60 let onError = opts && 'onError' in opts ? opts.onError : null;
61 let when = opts && 'when' in opts ? opts.when : true;
62 if (!dart.test(when)) {
63 let newOnError = null;
64 if (onError != null) {
65 newOnError = dart.fn((error, stackTrace) => {
66 dart.dcall(onError, error, src__chain.Chain.forTrace(core.StackTra ce._check(stackTrace)));
67 }, dynamicAnddynamicTodynamic());
68 }
69 return async.runZoned(T)(callback, {onError: core.Function._check(newO nError)});
70 }
71 let spec = new src__stack_zone_specification.StackZoneSpecification(onEr ror);
72 return T.as(async.runZoned(dart.dynamic)(dart.fn(() => {
73 try {
74 return callback();
75 } catch (error) {
76 let stackTrace = dart.stackTrace(error);
77 return async.Zone.current.handleUncaughtError(dart.dynamic)(error, s tackTrace);
78 }
79
80 }, VoidTodynamic()), {zoneSpecification: spec.toSpec(), zoneValues: dart .map([const$0 || (const$0 = dart.const(core.Symbol.new('stack_trace.stack_zone.s pec'))), spec], core.Symbol, src__stack_zone_specification.StackZoneSpecificatio n)}));
81 };
82 }
83 static track(futureOrStream) {
84 return futureOrStream;
85 }
86 static current(level) {
87 if (level === void 0) level = 0;
88 if (src__chain.Chain._currentSpec != null) return src__chain.Chain._curren tSpec.currentChain(dart.notNull(level) + 1);
89 return new src__chain.Chain(JSArrayOfTrace().of([src__trace.Trace.current( dart.notNull(level) + 1)]));
90 }
91 static forTrace(trace) {
92 if (src__chain.Chain.is(trace)) return trace;
93 if (src__chain.Chain._currentSpec == null) return new src__chain.Chain(JSA rrayOfTrace().of([src__trace.Trace.from(trace)]));
94 return src__chain.Chain._currentSpec.chainFor(trace);
95 }
96 static parse(chain) {
97 if (dart.test(chain[dartx.isEmpty])) return new src__chain.Chain(JSArrayOf Trace().of([]));
98 if (!dart.test(chain[dartx.contains](src__utils.chainGap))) return new src __chain.Chain(JSArrayOfTrace().of([src__trace.Trace.parse(chain)]));
99 return new src__chain.Chain(chain[dartx.split](src__utils.chainGap)[dartx. map](src__trace.Trace)(dart.fn(trace => new src__trace.Trace.parseFriendly(trace ), StringToTrace())));
100 }
101 new(traces) {
102 this.traces = ListOfTrace().unmodifiable(traces);
103 }
104 get terse() {
105 return this.foldFrames(dart.fn(_ => false, FrameTobool()), {terse: true});
106 }
107 foldFrames(predicate, opts) {
108 let terse = opts && 'terse' in opts ? opts.terse : false;
109 let foldedTraces = this.traces[dartx.map](src__trace.Trace)(dart.fn(trace => trace.foldFrames(predicate, {terse: terse}), TraceToTrace()));
110 let nonEmptyTraces = foldedTraces[dartx.where](dart.fn(trace => {
111 if (dart.notNull(trace.frames[dartx.length]) > 1) return true;
112 if (dart.test(trace.frames[dartx.isEmpty])) return false;
113 if (!dart.test(terse)) return false;
114 return trace.frames[dartx.single].line != null;
115 }, TraceTobool()));
116 if (dart.test(nonEmptyTraces[dartx.isEmpty]) && dart.test(foldedTraces[dar tx.isNotEmpty])) {
117 return new src__chain.Chain(JSArrayOfTrace().of([foldedTraces[dartx.last ]]));
118 }
119 return new src__chain.Chain(nonEmptyTraces);
120 }
121 toTrace() {
122 return new src__trace.Trace(this.traces[dartx.expand](src__frame.Frame)(da rt.fn(trace => trace.frames, TraceToListOfFrame())));
123 }
124 toString() {
125 let longest = this.traces[dartx.map](core.int)(dart.fn(trace => trace.fram es[dartx.map](core.int)(dart.fn(frame => frame.location[dartx.length], FrameToin t()))[dartx.fold](core.int)(0, dart.gbind(math.max, core.int)), TraceToint()))[d artx.fold](core.int)(0, dart.gbind(math.max, core.int));
126 return this.traces[dartx.map](core.String)(dart.fn(trace => trace.frames[d artx.map](core.String)(dart.fn(frame => dart.str`${src__utils.padRight(frame.loc ation, longest)} ${frame.member}\n`, FrameToString()))[dartx.join](), TraceToSt ring()))[dartx.join](src__utils.chainGap);
127 }
128 };
129 src__chain.Chain[dart.implements] = () => [core.StackTrace];
130 dart.setSignature(src__chain.Chain, {
131 constructors: () => ({
132 current: dart.definiteFunctionType(src__chain.Chain, [], [core.int]),
133 forTrace: dart.definiteFunctionType(src__chain.Chain, [core.StackTrace]),
134 parse: dart.definiteFunctionType(src__chain.Chain, [core.String]),
135 new: dart.definiteFunctionType(src__chain.Chain, [core.Iterable$(src__trac e.Trace)])
136 }),
137 methods: () => ({
138 foldFrames: dart.definiteFunctionType(src__chain.Chain, [dart.functionType (core.bool, [src__frame.Frame])], {terse: core.bool}),
139 toTrace: dart.definiteFunctionType(src__trace.Trace, [])
140 }),
141 statics: () => ({
142 capture: dart.definiteFunctionType(T => [T, [dart.functionType(T, [])], {o nError: dynamicAndChainTovoid(), when: core.bool}]),
143 track: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])
144 }),
145 names: ['capture', 'track']
146 });
147 dart.defineLazy(src__frame, {
148 get _vmFrame() {
149 return core.RegExp.new('^#\\d+\\s+(\\S.*) \\((.+?)((?::\\d+){0,2})\\)$');
150 }
151 });
152 dart.defineLazy(src__frame, {
153 get _v8Frame() {
154 return core.RegExp.new('^\\s*at (?:(\\S.*?)(?: \\[as [^\\]]+\\])? \\((.*)\ \)|(.*))$');
155 }
156 });
157 dart.defineLazy(src__frame, {
158 get _v8UrlLocation() {
159 return core.RegExp.new('^(.*):(\\d+):(\\d+)|native$');
160 }
161 });
162 dart.defineLazy(src__frame, {
163 get _v8EvalLocation() {
164 return core.RegExp.new('^eval at (?:\\S.*?) \\((.*)\\)(?:, .*?:\\d+:\\d+)? $');
165 }
166 });
167 dart.defineLazy(src__frame, {
168 get _firefoxSafariFrame() {
169 return core.RegExp.new('^' + '(?:' + '([^@(/]*)' + '(?:\\(.*\\))?' + '((?: /[^/]*)*)' + '(?:\\(.*\\))?' + '@' + ')?' + '(.*?)' + ':' + '(\\d*)' + '(?::(\\d *))?' + '$');
170 }
171 });
172 dart.defineLazy(src__frame, {
173 get _friendlyFrame() {
174 return core.RegExp.new('^(\\S+)(?: (\\d+)(?::(\\d+))?)?\\s+([^\\d]\\S*)$') ;
175 }
176 });
177 dart.defineLazy(src__frame, {
178 get _asyncBody() {
179 return core.RegExp.new('<(<anonymous closure>|[^>]+)_async_body>');
180 }
181 });
182 dart.defineLazy(src__frame, {
183 get _initialDot() {
184 return core.RegExp.new("^\\.");
185 }
186 });
187 src__frame.Frame = class Frame extends core.Object {
188 get isCore() {
189 return this.uri.scheme == 'dart';
190 }
191 get library() {
192 if (this.uri.scheme == 'data') return "data:...";
193 return path$.prettyUri(this.uri);
194 }
195 get package() {
196 if (this.uri.scheme != 'package') return null;
197 return this.uri.path[dartx.split]('/')[dartx.first];
198 }
199 get location() {
200 if (this.line == null) return this.library;
201 if (this.column == null) return dart.str`${this.library} ${this.line}`;
202 return dart.str`${this.library} ${this.line}:${this.column}`;
203 }
204 static caller(level) {
205 if (level === void 0) level = 1;
206 if (dart.notNull(level) < 0) {
207 dart.throw(new core.ArgumentError("Argument [level] must be greater than or equal " + "to 0."));
208 }
209 return src__trace.Trace.current(dart.notNull(level) + 1).frames[dartx.firs t];
210 }
211 static parseVM(frame) {
212 return src__frame.Frame._catchFormatException(frame, dart.fn(() => {
213 if (frame == '...') {
214 return new src__frame.Frame(core.Uri.new(), null, null, '...');
215 }
216 let match = src__frame._vmFrame.firstMatch(frame);
217 if (match == null) return new src__unparsed_frame.UnparsedFrame(frame);
218 let member = match.get(1)[dartx.replaceAll](src__frame._asyncBody, "<asy nc>")[dartx.replaceAll]("<anonymous closure>", "<fn>");
219 let uri = core.Uri.parse(match.get(2));
220 let lineAndColumn = match.get(3)[dartx.split](':');
221 let line = dart.notNull(lineAndColumn[dartx.length]) > 1 ? core.int.pars e(lineAndColumn[dartx.get](1)) : null;
222 let column = dart.notNull(lineAndColumn[dartx.length]) > 2 ? core.int.pa rse(lineAndColumn[dartx.get](2)) : null;
223 return new src__frame.Frame(uri, line, column, member);
224 }, VoidToFrame()));
225 }
226 static parseV8(frame) {
227 return src__frame.Frame._catchFormatException(frame, dart.fn(() => {
228 let match = src__frame._v8Frame.firstMatch(frame);
229 if (match == null) return new src__unparsed_frame.UnparsedFrame(frame);
230 function parseLocation(location, member) {
231 let evalMatch = src__frame._v8EvalLocation.firstMatch(core.String._che ck(location));
232 while (evalMatch != null) {
233 location = evalMatch.get(1);
234 evalMatch = src__frame._v8EvalLocation.firstMatch(core.String._check (location));
235 }
236 if (dart.equals(location, 'native')) {
237 return new src__frame.Frame(core.Uri.parse('native'), null, null, co re.String._check(member));
238 }
239 let urlMatch = src__frame._v8UrlLocation.firstMatch(core.String._check (location));
240 if (urlMatch == null) return new src__unparsed_frame.UnparsedFrame(fra me);
241 return new src__frame.Frame(src__frame.Frame._uriOrPathToUri(urlMatch. get(1)), core.int.parse(urlMatch.get(2)), core.int.parse(urlMatch.get(3)), core. String._check(member));
242 }
243 dart.fn(parseLocation, dynamicAnddynamicToFrame());
244 if (match.get(2) != null) {
245 return parseLocation(match.get(2), match.get(1)[dartx.replaceAll]("<an onymous>", "<fn>")[dartx.replaceAll]("Anonymous function", "<fn>"));
246 } else {
247 return parseLocation(match.get(3), "<fn>");
248 }
249 }, VoidToFrame()));
250 }
251 static parseJSCore(frame) {
252 return src__frame.Frame.parseV8(frame);
253 }
254 static parseIE(frame) {
255 return src__frame.Frame.parseV8(frame);
256 }
257 static parseFirefox(frame) {
258 return src__frame.Frame._catchFormatException(frame, dart.fn(() => {
259 let match = src__frame._firefoxSafariFrame.firstMatch(frame);
260 if (match == null) return new src__unparsed_frame.UnparsedFrame(frame);
261 let uri = src__frame.Frame._uriOrPathToUri(match.get(3));
262 let member = null;
263 if (match.get(1) != null) {
264 member = match.get(1);
265 member = dart.dsend(member, '+', ListOfString().filled('/'[dartx.allMa tches](match.get(2))[dartx.length], ".<fn>")[dartx.join]());
266 if (dart.equals(member, '')) member = '<fn>';
267 member = dart.dsend(member, 'replaceFirst', src__frame._initialDot, '' );
268 } else {
269 member = '<fn>';
270 }
271 let line = match.get(4) == '' ? null : core.int.parse(match.get(4));
272 let column = match.get(5) == null || match.get(5) == '' ? null : core.in t.parse(match.get(5));
273 return new src__frame.Frame(uri, line, column, core.String._check(member ));
274 }, VoidToFrame()));
275 }
276 static parseSafari6_0(frame) {
277 return src__frame.Frame.parseFirefox(frame);
278 }
279 static parseSafari6_1(frame) {
280 return src__frame.Frame.parseFirefox(frame);
281 }
282 static parseSafari(frame) {
283 return src__frame.Frame.parseFirefox(frame);
284 }
285 static parseFriendly(frame) {
286 return src__frame.Frame._catchFormatException(frame, dart.fn(() => {
287 let match = src__frame._friendlyFrame.firstMatch(frame);
288 if (match == null) {
289 dart.throw(new core.FormatException(dart.str`Couldn't parse package:st ack_trace stack trace line '${frame}'.`));
290 }
291 let uri = core.Uri.parse(match.get(1));
292 if (uri.scheme == '') {
293 uri = path$.toUri(path$.absolute(path$.fromUri(uri)));
294 }
295 let line = match.get(2) == null ? null : core.int.parse(match.get(2));
296 let column = match.get(3) == null ? null : core.int.parse(match.get(3));
297 return new src__frame.Frame(uri, line, column, match.get(4));
298 }, VoidToFrame()));
299 }
300 static _uriOrPathToUri(uriOrPath) {
301 if (dart.test(uriOrPath[dartx.contains](src__frame.Frame._uriRegExp))) {
302 return core.Uri.parse(uriOrPath);
303 } else if (dart.test(uriOrPath[dartx.contains](src__frame.Frame._windowsRe gExp))) {
304 return core.Uri.file(uriOrPath, {windows: true});
305 } else if (dart.test(uriOrPath[dartx.startsWith]('/'))) {
306 return core.Uri.file(uriOrPath, {windows: false});
307 }
308 if (dart.test(uriOrPath[dartx.contains]('\\'))) return path$.windows.toUri (uriOrPath);
309 return core.Uri.parse(uriOrPath);
310 }
311 static _catchFormatException(text, body) {
312 try {
313 return body();
314 } catch (_) {
315 if (core.FormatException.is(_)) {
316 return new src__unparsed_frame.UnparsedFrame(text);
317 } else
318 throw _;
319 }
320
321 }
322 new(uri, line, column, member) {
323 this.uri = uri;
324 this.line = line;
325 this.column = column;
326 this.member = member;
327 }
328 toString() {
329 return dart.str`${this.location} in ${this.member}`;
330 }
331 };
332 dart.setSignature(src__frame.Frame, {
333 constructors: () => ({
334 caller: dart.definiteFunctionType(src__frame.Frame, [], [core.int]),
335 parseVM: dart.definiteFunctionType(src__frame.Frame, [core.String]),
336 parseV8: dart.definiteFunctionType(src__frame.Frame, [core.String]),
337 parseJSCore: dart.definiteFunctionType(src__frame.Frame, [core.String]),
338 parseIE: dart.definiteFunctionType(src__frame.Frame, [core.String]),
339 parseFirefox: dart.definiteFunctionType(src__frame.Frame, [core.String]),
340 parseSafari6_0: dart.definiteFunctionType(src__frame.Frame, [core.String]) ,
341 parseSafari6_1: dart.definiteFunctionType(src__frame.Frame, [core.String]) ,
342 parseSafari: dart.definiteFunctionType(src__frame.Frame, [core.String]),
343 parseFriendly: dart.definiteFunctionType(src__frame.Frame, [core.String]),
344 new: dart.definiteFunctionType(src__frame.Frame, [core.Uri, core.int, core .int, core.String])
345 }),
346 statics: () => ({
347 _uriOrPathToUri: dart.definiteFunctionType(core.Uri, [core.String]),
348 _catchFormatException: dart.definiteFunctionType(src__frame.Frame, [core.S tring, dart.functionType(src__frame.Frame, [])])
349 }),
350 names: ['_uriOrPathToUri', '_catchFormatException']
351 });
352 dart.defineLazy(src__frame.Frame, {
353 get _uriRegExp() {
354 return core.RegExp.new('^[a-zA-Z][-+.a-zA-Z\\d]*://');
355 },
356 get _windowsRegExp() {
357 return core.RegExp.new('^([a-zA-Z]:[\\\\/]|\\\\\\\\)');
358 }
359 });
360 src__lazy_trace.TraceThunk = dart.typedef('TraceThunk', () => dart.functionTyp e(src__trace.Trace, []));
361 const _thunk = Symbol('_thunk');
362 const _inner = Symbol('_inner');
363 const _trace = Symbol('_trace');
364 src__lazy_trace.LazyTrace = class LazyTrace extends core.Object {
365 new(thunk) {
366 this[_thunk] = thunk;
367 this[_inner] = null;
368 }
369 get [_trace]() {
370 if (this[_inner] == null) this[_inner] = this[_thunk]();
371 return this[_inner];
372 }
373 get frames() {
374 return this[_trace].frames;
375 }
376 get vmTrace() {
377 return this[_trace].vmTrace;
378 }
379 get terse() {
380 return new src__lazy_trace.LazyTrace(dart.fn(() => this[_trace].terse, Voi dToTrace()));
381 }
382 foldFrames(predicate, opts) {
383 let terse = opts && 'terse' in opts ? opts.terse : false;
384 return new src__lazy_trace.LazyTrace(dart.fn(() => this[_trace].foldFrames (predicate, {terse: terse}), VoidToTrace()));
385 }
386 toString() {
387 return dart.toString(this[_trace]);
388 }
389 set frames(_) {
390 return dart.throw(new core.UnimplementedError());
391 }
392 };
393 src__lazy_trace.LazyTrace[dart.implements] = () => [src__trace.Trace];
394 dart.setSignature(src__lazy_trace.LazyTrace, {
395 constructors: () => ({new: dart.definiteFunctionType(src__lazy_trace.LazyTra ce, [src__lazy_trace.TraceThunk])}),
396 methods: () => ({foldFrames: dart.definiteFunctionType(src__trace.Trace, [da rt.functionType(core.bool, [src__frame.Frame])], {terse: core.bool})})
397 });
398 src__stack_zone_specification._ChainHandler = dart.typedef('_ChainHandler', () => dart.functionType(dart.void, [dart.dynamic, src__chain.Chain]));
399 const _chains = Symbol('_chains');
400 const _onError = Symbol('_onError');
401 const _currentNode = Symbol('_currentNode');
402 const _createNode = Symbol('_createNode');
403 const _run = Symbol('_run');
404 src__stack_zone_specification.StackZoneSpecification = class StackZoneSpecific ation extends core.Object {
405 new(onError) {
406 if (onError === void 0) onError = null;
407 this[_chains] = new (ExpandoOf_Node())("stack chains");
408 this[_onError] = onError;
409 this[_currentNode] = null;
410 }
411 toSpec() {
412 return async.ZoneSpecification.new({handleUncaughtError: dart.bind(this, ' handleUncaughtError'), registerCallback: dart.bind(this, 'registerCallback'), re gisterUnaryCallback: dart.bind(this, 'registerUnaryCallback'), registerBinaryCal lback: dart.bind(this, 'registerBinaryCallback'), errorCallback: dart.bind(this, 'errorCallback')});
413 }
414 currentChain(level) {
415 if (level === void 0) level = 0;
416 return this[_createNode](dart.notNull(level) + 1).toChain();
417 }
418 chainFor(trace) {
419 if (src__chain.Chain.is(trace)) return trace;
420 let previous = trace == null ? null : this[_chains].get(trace);
421 return new src__stack_zone_specification._Node(trace, previous).toChain();
422 }
423 trackFuture(future, level) {
424 if (level === void 0) level = 0;
425 let completer = async.Completer.sync();
426 let node = this[_createNode](dart.notNull(level) + 1);
427 future.then(dart.dynamic)(dart.bind(completer, 'complete')).catchError(dar t.fn((e, stackTrace) => {
428 if (stackTrace == null) stackTrace = src__trace.Trace.current();
429 if (!src__chain.Chain.is(stackTrace) && this[_chains].get(stackTrace) == null) {
430 this[_chains].set(stackTrace, node);
431 }
432 completer.completeError(e, core.StackTrace._check(stackTrace));
433 }, dynamicAnddynamicTodynamic()));
434 return completer.future;
435 }
436 trackStream(stream, level) {
437 if (level === void 0) level = 0;
438 let node = this[_createNode](dart.notNull(level) + 1);
439 return stream.transform(dart.dynamic)(async.StreamTransformer.fromHandlers ({handleError: dart.fn((error, stackTrace, sink) => {
440 if (stackTrace == null) stackTrace = src__trace.Trace.current();
441 if (!src__chain.Chain.is(stackTrace) && this[_chains].get(stackTrace) == null) {
442 this[_chains].set(stackTrace, node);
443 }
444 sink.addError(error, stackTrace);
445 }, ObjectAndStackTraceAndEventSinkTovoid())}));
446 }
447 registerCallback(self, parent, zone, f) {
448 if (f == null) return parent.registerCallback(dart.dynamic)(zone, null);
449 let node = this[_createNode](1);
450 return parent.registerCallback(dart.dynamic)(zone, dart.fn(() => this[_run ](f, node), VoidTodynamic()));
451 }
452 registerUnaryCallback(self, parent, zone, f) {
453 if (f == null) return parent.registerUnaryCallback(dart.dynamic, dart.dyna mic)(zone, null);
454 let node = this[_createNode](1);
455 return parent.registerUnaryCallback(dart.dynamic, dart.dynamic)(zone, dart .fn(arg => this[_run](dart.fn(() => dart.dcall(f, arg), VoidTodynamic()), node), dynamicTodynamic()));
456 }
457 registerBinaryCallback(self, parent, zone, f) {
458 if (f == null) return parent.registerBinaryCallback(dart.dynamic, dart.dyn amic, dart.dynamic)(zone, null);
459 let node = this[_createNode](1);
460 return parent.registerBinaryCallback(dart.dynamic, dart.dynamic, dart.dyna mic)(zone, dart.fn((arg1, arg2) => this[_run](dart.fn(() => dart.dcall(f, arg1, arg2), VoidTodynamic()), node), dynamicAnddynamicTodynamic()));
461 }
462 handleUncaughtError(self, parent, zone, error, stackTrace) {
463 let stackChain = this.chainFor(stackTrace);
464 if (this[_onError] == null) {
465 return parent.handleUncaughtError(dart.dynamic)(zone, error, stackChain) ;
466 }
467 try {
468 return parent.runBinary(dart.dynamic, dart.dynamic, src__chain.Chain)(zo ne, this[_onError], error, stackChain);
469 } catch (newError) {
470 let newStackTrace = dart.stackTrace(newError);
471 if (core.identical(newError, error)) {
472 return parent.handleUncaughtError(dart.dynamic)(zone, error, stackChai n);
473 } else {
474 return parent.handleUncaughtError(dart.dynamic)(zone, newError, newSta ckTrace);
475 }
476 }
477
478 }
479 errorCallback(self, parent, zone, error, stackTrace) {
480 if (stackTrace == null) {
481 stackTrace = this[_createNode](2).toChain();
482 } else {
483 if (this[_chains].get(stackTrace) == null) this[_chains].set(stackTrace, this[_createNode](2));
484 }
485 let asyncError = parent.errorCallback(zone, error, stackTrace);
486 return asyncError == null ? new async.AsyncError(error, stackTrace) : asyn cError;
487 }
488 [_createNode](level) {
489 if (level === void 0) level = 0;
490 return new src__stack_zone_specification._Node(src__trace.Trace.current(da rt.notNull(level) + 1), this[_currentNode]);
491 }
492 [_run](f, node) {
493 let previousNode = this[_currentNode];
494 this[_currentNode] = node;
495 try {
496 return dart.dcall(f);
497 } catch (e) {
498 let stackTrace = dart.stackTrace(e);
499 this[_chains].set(stackTrace, node);
500 throw e;
501 }
502 finally {
503 this[_currentNode] = previousNode;
504 }
505 }
506 };
507 dart.setSignature(src__stack_zone_specification.StackZoneSpecification, {
508 constructors: () => ({new: dart.definiteFunctionType(src__stack_zone_specifi cation.StackZoneSpecification, [], [src__stack_zone_specification._ChainHandler] )}),
509 methods: () => ({
510 toSpec: dart.definiteFunctionType(async.ZoneSpecification, []),
511 currentChain: dart.definiteFunctionType(src__chain.Chain, [], [core.int]),
512 chainFor: dart.definiteFunctionType(src__chain.Chain, [core.StackTrace]),
513 trackFuture: dart.definiteFunctionType(async.Future, [async.Future], [core .int]),
514 trackStream: dart.definiteFunctionType(async.Stream, [async.Stream], [core .int]),
515 registerCallback: dart.definiteFunctionType(async.ZoneCallback, [async.Zon e, async.ZoneDelegate, async.Zone, core.Function]),
516 registerUnaryCallback: dart.definiteFunctionType(async.ZoneUnaryCallback, [async.Zone, async.ZoneDelegate, async.Zone, core.Function]),
517 registerBinaryCallback: dart.definiteFunctionType(async.ZoneBinaryCallback , [async.Zone, async.ZoneDelegate, async.Zone, core.Function]),
518 handleUncaughtError: dart.definiteFunctionType(dart.dynamic, [async.Zone, async.ZoneDelegate, async.Zone, dart.dynamic, core.StackTrace]),
519 errorCallback: dart.definiteFunctionType(async.AsyncError, [async.Zone, as ync.ZoneDelegate, async.Zone, core.Object, core.StackTrace]),
520 [_createNode]: dart.definiteFunctionType(src__stack_zone_specification._No de, [], [core.int]),
521 [_run]: dart.definiteFunctionType(dart.dynamic, [core.Function, src__stack _zone_specification._Node])
522 })
523 });
524 src__stack_zone_specification._Node = class _Node extends core.Object {
525 new(trace, previous) {
526 if (previous === void 0) previous = null;
527 this.previous = previous;
528 this.trace = trace == null ? src__trace.Trace.current() : src__trace.Trace .from(trace);
529 }
530 toChain() {
531 let nodes = JSArrayOfTrace().of([]);
532 let node = this;
533 while (node != null) {
534 nodes[dartx.add](node.trace);
535 node = node.previous;
536 }
537 return new src__chain.Chain(nodes);
538 }
539 };
540 dart.setSignature(src__stack_zone_specification._Node, {
541 constructors: () => ({new: dart.definiteFunctionType(src__stack_zone_specifi cation._Node, [core.StackTrace], [src__stack_zone_specification._Node])}),
542 methods: () => ({toChain: dart.definiteFunctionType(src__chain.Chain, [])})
543 });
544 dart.defineLazy(src__trace, {
545 get _terseRegExp() {
546 return core.RegExp.new("(-patch)?([/\\\\].*)?$");
547 }
548 });
549 dart.defineLazy(src__trace, {
550 get _v8Trace() {
551 return core.RegExp.new("\\n ?at ");
552 }
553 });
554 dart.defineLazy(src__trace, {
555 get _v8TraceLine() {
556 return core.RegExp.new(" ?at ");
557 }
558 });
559 dart.defineLazy(src__trace, {
560 get _firefoxSafariTrace() {
561 return core.RegExp.new("^" + "(" + "([.0-9A-Za-z_$/<]|\\(.*\\))*" + "@" + ")?" + "[^\\s]*" + ":\\d*" + "$", {multiLine: true});
562 }
563 });
564 dart.defineLazy(src__trace, {
565 get _friendlyTrace() {
566 return core.RegExp.new("^[^\\s]+( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$", {multiLi ne: true});
567 }
568 });
569 src__trace.Trace = class Trace extends core.Object {
570 static format(stackTrace, opts) {
571 let terse = opts && 'terse' in opts ? opts.terse : true;
572 let trace = src__trace.Trace.from(stackTrace);
573 if (dart.test(terse)) trace = trace.terse;
574 return dart.toString(trace);
575 }
576 static current(level) {
577 if (level === void 0) level = 0;
578 if (dart.notNull(level) < 0) {
579 dart.throw(new core.ArgumentError("Argument [level] must be greater than or equal " + "to 0."));
580 }
581 let trace = src__trace.Trace.from(core.StackTrace.current);
582 return new src__lazy_trace.LazyTrace(dart.fn(() => new src__trace.Trace(tr ace.frames[dartx.skip](dart.notNull(level) + (dart.test(src__utils.inJS) ? 2 : 1 ))), VoidToTrace()));
583 }
584 static from(trace) {
585 if (trace == null) {
586 dart.throw(new core.ArgumentError("Cannot create a Trace from null."));
587 }
588 if (src__trace.Trace.is(trace)) return trace;
589 if (src__chain.Chain.is(trace)) return trace.toTrace();
590 return new src__lazy_trace.LazyTrace(dart.fn(() => src__trace.Trace.parse( dart.toString(trace)), VoidToTrace()));
591 }
592 static parse(trace) {
593 try {
594 if (dart.test(trace[dartx.isEmpty])) return new src__trace.Trace(JSArray OfFrame().of([]));
595 if (dart.test(trace[dartx.contains](src__trace._v8Trace))) return new sr c__trace.Trace.parseV8(trace);
596 if (dart.test(trace[dartx.contains]("\tat "))) return new src__trace.Tra ce.parseJSCore(trace);
597 if (dart.test(trace[dartx.contains](src__trace._firefoxSafariTrace))) {
598 return new src__trace.Trace.parseFirefox(trace);
599 }
600 if (dart.test(trace[dartx.contains](src__utils.chainGap))) return src__c hain.Chain.parse(trace).toTrace();
601 if (dart.test(trace[dartx.contains](src__trace._friendlyTrace))) {
602 return new src__trace.Trace.parseFriendly(trace);
603 }
604 return new src__trace.Trace.parseVM(trace);
605 } catch (error) {
606 if (core.FormatException.is(error)) {
607 dart.throw(new core.FormatException(dart.str`${error.message}\nStack t race:\n${trace}`));
608 } else
609 throw error;
610 }
611
612 }
613 parseVM(trace) {
614 Trace.prototype.new.call(this, src__trace.Trace._parseVM(trace));
615 }
616 static _parseVM(trace) {
617 let lines = trace[dartx.trim]()[dartx.split]("\n");
618 let frames = lines[dartx.take](dart.notNull(lines[dartx.length]) - 1)[dart x.map](src__frame.Frame)(dart.fn(line => src__frame.Frame.parseVM(line), StringT oFrame()))[dartx.toList]();
619 if (!dart.test(lines[dartx.last][dartx.endsWith](".da"))) {
620 frames[dartx.add](src__frame.Frame.parseVM(lines[dartx.last]));
621 }
622 return frames;
623 }
624 parseV8(trace) {
625 Trace.prototype.new.call(this, trace[dartx.split]("\n")[dartx.skip](1)[dar tx.skipWhile](dart.fn(line => !dart.test(line[dartx.startsWith](src__trace._v8Tr aceLine)), StringTobool()))[dartx.map](src__frame.Frame)(dart.fn(line => src__fr ame.Frame.parseV8(line), StringToFrame())));
626 }
627 parseJSCore(trace) {
628 Trace.prototype.new.call(this, trace[dartx.split]("\n")[dartx.where](dart. fn(line => line != "\tat ", StringTobool()))[dartx.map](src__frame.Frame)(dart.f n(line => src__frame.Frame.parseV8(line), StringToFrame())));
629 }
630 parseIE(trace) {
631 Trace.prototype.parseV8.call(this, trace);
632 }
633 parseFirefox(trace) {
634 Trace.prototype.new.call(this, trace[dartx.trim]()[dartx.split]("\n")[dart x.where](dart.fn(line => dart.test(line[dartx.isNotEmpty]) && line != '[native c ode]', StringTobool()))[dartx.map](src__frame.Frame)(dart.fn(line => src__frame. Frame.parseFirefox(line), StringToFrame())));
635 }
636 parseSafari(trace) {
637 Trace.prototype.parseFirefox.call(this, trace);
638 }
639 parseSafari6_1(trace) {
640 Trace.prototype.parseSafari.call(this, trace);
641 }
642 parseSafari6_0(trace) {
643 Trace.prototype.new.call(this, trace[dartx.trim]()[dartx.split]("\n")[dart x.where](dart.fn(line => line != '[native code]', StringTobool()))[dartx.map](sr c__frame.Frame)(dart.fn(line => src__frame.Frame.parseFirefox(line), StringToFra me())));
644 }
645 parseFriendly(trace) {
646 Trace.prototype.new.call(this, dart.test(trace[dartx.isEmpty]) ? JSArrayOf Frame().of([]) : trace[dartx.trim]()[dartx.split]("\n")[dartx.where](dart.fn(lin e => !dart.test(line[dartx.startsWith]('=====')), StringTobool()))[dartx.map](sr c__frame.Frame)(dart.fn(line => src__frame.Frame.parseFriendly(line), StringToFr ame())));
647 }
648 new(frames) {
649 this.frames = ListOfFrame().unmodifiable(frames);
650 }
651 get vmTrace() {
652 return new src__vm_trace.VMTrace(this.frames);
653 }
654 get terse() {
655 return this.foldFrames(dart.fn(_ => false, FrameTobool()), {terse: true});
656 }
657 foldFrames(predicate, opts) {
658 let terse = opts && 'terse' in opts ? opts.terse : false;
659 if (dart.test(terse)) {
660 let oldPredicate = predicate;
661 predicate = dart.fn(frame => {
662 if (dart.test(oldPredicate(frame))) return true;
663 if (dart.test(frame.isCore)) return true;
664 if (frame.package == 'stack_trace') return true;
665 if (!dart.test(frame.member[dartx.contains]('<async>'))) return false;
666 return frame.line == null;
667 }, FrameTobool());
668 }
669 let newFrames = JSArrayOfFrame().of([]);
670 for (let frame of this.frames[dartx.reversed]) {
671 if (src__unparsed_frame.UnparsedFrame.is(frame) || !dart.test(predicate( frame))) {
672 newFrames[dartx.add](frame);
673 } else if (dart.test(newFrames[dartx.isEmpty]) || !dart.test(predicate(n ewFrames[dartx.last]))) {
674 newFrames[dartx.add](new src__frame.Frame(frame.uri, frame.line, frame .column, frame.member));
675 }
676 }
677 if (dart.test(terse)) {
678 newFrames = newFrames[dartx.map](src__frame.Frame)(dart.fn(frame => {
679 if (src__unparsed_frame.UnparsedFrame.is(frame) || !dart.test(predicat e(frame))) return frame;
680 let library = frame.library[dartx.replaceAll](src__trace._terseRegExp, '');
681 return new src__frame.Frame(core.Uri.parse(library), null, null, frame .member);
682 }, FrameToFrame()))[dartx.toList]();
683 if (dart.notNull(newFrames[dartx.length]) > 1 && dart.test(newFrames[dar tx.first].isCore)) newFrames[dartx.removeAt](0);
684 }
685 return new src__trace.Trace(newFrames[dartx.reversed]);
686 }
687 toString() {
688 let longest = this.frames[dartx.map](core.int)(dart.fn(frame => frame.loca tion[dartx.length], FrameToint()))[dartx.fold](core.int)(0, dart.gbind(math.max, core.int));
689 return this.frames[dartx.map](core.String)(dart.fn(frame => {
690 if (src__unparsed_frame.UnparsedFrame.is(frame)) return dart.str`${frame }\n`;
691 return dart.str`${src__utils.padRight(frame.location, longest)} ${frame .member}\n`;
692 }, FrameToString()))[dartx.join]();
693 }
694 };
695 dart.defineNamedConstructor(src__trace.Trace, 'parseVM');
696 dart.defineNamedConstructor(src__trace.Trace, 'parseV8');
697 dart.defineNamedConstructor(src__trace.Trace, 'parseJSCore');
698 dart.defineNamedConstructor(src__trace.Trace, 'parseIE');
699 dart.defineNamedConstructor(src__trace.Trace, 'parseFirefox');
700 dart.defineNamedConstructor(src__trace.Trace, 'parseSafari');
701 dart.defineNamedConstructor(src__trace.Trace, 'parseSafari6_1');
702 dart.defineNamedConstructor(src__trace.Trace, 'parseSafari6_0');
703 dart.defineNamedConstructor(src__trace.Trace, 'parseFriendly');
704 src__trace.Trace[dart.implements] = () => [core.StackTrace];
705 dart.setSignature(src__trace.Trace, {
706 constructors: () => ({
707 current: dart.definiteFunctionType(src__trace.Trace, [], [core.int]),
708 from: dart.definiteFunctionType(src__trace.Trace, [core.StackTrace]),
709 parse: dart.definiteFunctionType(src__trace.Trace, [core.String]),
710 parseVM: dart.definiteFunctionType(src__trace.Trace, [core.String]),
711 parseV8: dart.definiteFunctionType(src__trace.Trace, [core.String]),
712 parseJSCore: dart.definiteFunctionType(src__trace.Trace, [core.String]),
713 parseIE: dart.definiteFunctionType(src__trace.Trace, [core.String]),
714 parseFirefox: dart.definiteFunctionType(src__trace.Trace, [core.String]),
715 parseSafari: dart.definiteFunctionType(src__trace.Trace, [core.String]),
716 parseSafari6_1: dart.definiteFunctionType(src__trace.Trace, [core.String]) ,
717 parseSafari6_0: dart.definiteFunctionType(src__trace.Trace, [core.String]) ,
718 parseFriendly: dart.definiteFunctionType(src__trace.Trace, [core.String]),
719 new: dart.definiteFunctionType(src__trace.Trace, [core.Iterable$(src__fram e.Frame)])
720 }),
721 methods: () => ({foldFrames: dart.definiteFunctionType(src__trace.Trace, [da rt.functionType(core.bool, [src__frame.Frame])], {terse: core.bool})}),
722 statics: () => ({
723 format: dart.definiteFunctionType(core.String, [core.StackTrace], {terse: core.bool}),
724 _parseVM: dart.definiteFunctionType(core.List$(src__frame.Frame), [core.St ring])
725 }),
726 names: ['format', '_parseVM']
727 });
728 src__unparsed_frame.UnparsedFrame = class UnparsedFrame extends core.Object {
729 new(member) {
730 this.uri = core.Uri.new({path: "unparsed"});
731 this.member = member;
732 this.line = null;
733 this.column = null;
734 this.isCore = false;
735 this.library = "unparsed";
736 this.package = null;
737 this.location = "unparsed";
738 }
739 toString() {
740 return this.member;
741 }
742 };
743 src__unparsed_frame.UnparsedFrame[dart.implements] = () => [src__frame.Frame];
744 dart.setSignature(src__unparsed_frame.UnparsedFrame, {
745 constructors: () => ({new: dart.definiteFunctionType(src__unparsed_frame.Unp arsedFrame, [core.String])})
746 });
747 src__utils.chainGap = '===== asynchronous gap ===========================\n';
748 dart.defineLazy(src__utils, {
749 get inJS() {
750 return dart.equals(path$.style, src__style.Style.url);
751 }
752 });
753 src__utils.padRight = function(string, length) {
754 if (dart.notNull(string[dartx.length]) >= dart.notNull(length)) return strin g;
755 let result = new core.StringBuffer();
756 result.write(string);
757 for (let i = 0; i < dart.notNull(length) - dart.notNull(string[dartx.length] ); i++) {
758 result.write(' ');
759 }
760 return result.toString();
761 };
762 dart.fn(src__utils.padRight, StringAndintToString());
763 src__vm_trace.VMTrace = class VMTrace extends core.Object {
764 new(frames) {
765 this.frames = frames;
766 }
767 toString() {
768 let i = 1;
769 return this.frames[dartx.map](core.String)(dart.fn(frame => {
770 let number = src__utils.padRight(dart.str`#${i++}`, 8);
771 let member = frame.member[dartx.replaceAllMapped](core.RegExp.new("[^.]+ \\.<async>"), dart.fn(match => dart.str`${match.get(1)}.<${match.get(1)}_async_b ody>`, MatchToString()))[dartx.replaceAll]("<fn>", "<anonymous closure>");
772 let line = frame.line == null ? 0 : frame.line;
773 let column = frame.column == null ? 0 : frame.column;
774 return dart.str`${number}${member} (${frame.uri}:${line}:${column})\n`;
775 }, FrameToString()))[dartx.join]();
776 }
777 };
778 src__vm_trace.VMTrace[dart.implements] = () => [core.StackTrace];
779 dart.setSignature(src__vm_trace.VMTrace, {
780 constructors: () => ({new: dart.definiteFunctionType(src__vm_trace.VMTrace, [core.List$(src__frame.Frame)])})
781 });
782 stack_trace.ChainHandler = src__chain.ChainHandler;
783 stack_trace.Chain = src__chain.Chain;
784 stack_trace.Frame = src__frame.Frame;
785 stack_trace.Trace = src__trace.Trace;
786 stack_trace.UnparsedFrame = src__unparsed_frame.UnparsedFrame;
787 // Exports:
788 exports.src__chain = src__chain;
789 exports.src__frame = src__frame;
790 exports.src__lazy_trace = src__lazy_trace;
791 exports.src__stack_zone_specification = src__stack_zone_specification;
792 exports.src__trace = src__trace;
793 exports.src__unparsed_frame = src__unparsed_frame;
794 exports.src__utils = src__utils;
795 exports.src__vm_trace = src__vm_trace;
796 exports.stack_trace = stack_trace;
797 });
OLDNEW

Powered by Google App Engine