| OLD | NEW | 
|---|
| 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 /// Library for debugging helpers. The unittest analyze_unused_test checks that | 5 /// Library for debugging helpers. The unittest analyze_unused_test checks that | 
| 6 /// the helper are not used in production code. | 6 /// the helper are not used in production code. | 
| 7 | 7 | 
| 8 library dart2js.helpers; | 8 library dart2js.helpers; | 
| 9 | 9 | 
| 10 import 'dart:async' show EventSink; | 10 import 'dart:async' show EventSink; | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 86 ReportHere get reportHere { | 86 ReportHere get reportHere { | 
| 87   enableDebugMode(); | 87   enableDebugMode(); | 
| 88   return _reportHere; | 88   return _reportHere; | 
| 89 } | 89 } | 
| 90 | 90 | 
| 91 /// Implementation of [reportHere] | 91 /// Implementation of [reportHere] | 
| 92 _reportHere(Compiler compiler, Spannable node, String debugMessage) { | 92 _reportHere(Compiler compiler, Spannable node, String debugMessage) { | 
| 93   compiler.reportInfo(node, | 93   compiler.reportInfo(node, | 
| 94       MessageKind.GENERIC, {'text': 'HERE: $debugMessage'}); | 94       MessageKind.GENERIC, {'text': 'HERE: $debugMessage'}); | 
| 95 } | 95 } | 
|  | 96 | 
|  | 97 /// Set of tracked objects used by [track] and [ifTracked]. | 
|  | 98 var _trackedObjects = new Set(); | 
|  | 99 | 
|  | 100 /// Global default value for the `printTrace` option of [track] and [ifTracked]. | 
|  | 101 bool trackWithTrace = false; | 
|  | 102 | 
|  | 103 /// If [doTrack] is `true`, add [object] to the set of tracked objects. | 
|  | 104 /// | 
|  | 105 /// If tracked, [message] is printed along the hash code and toString of | 
|  | 106 /// [object]. If [printTrace] is `true` a trace printed additionally. | 
|  | 107 /// If [printTrace] is `null`, [trackWithTrace] determines whether a trace is | 
|  | 108 /// printed. | 
|  | 109 /// | 
|  | 110 /// [object] is returned as the result of the method. | 
|  | 111 track(bool doTrack, Object object, String message, {bool printTrace}) { | 
|  | 112   if (!doTrack) return object; | 
|  | 113   _trackedObjects.add(object); | 
|  | 114   String msg = 'track: ${object.hashCode}:$object:$message'; | 
|  | 115   if (printTrace == null) printTrace = trackWithTrace; | 
|  | 116   if (printTrace) { | 
|  | 117     trace(msg); | 
|  | 118   } else { | 
|  | 119     debugPrint(msg); | 
|  | 120   } | 
|  | 121   return object; | 
|  | 122 } | 
|  | 123 | 
|  | 124 /// Returns `true` if [object] is in the set of tracked objects. | 
|  | 125 /// | 
|  | 126 /// If [message] is provided it is printed along the hash code and toString of | 
|  | 127 /// [object]. If [printTrace] is `true` a trace printed additionally. If | 
|  | 128 /// [printTrace] is `null`, [trackWithTrace] determines whether a trace is | 
|  | 129 /// printed. | 
|  | 130 bool ifTracked(Object object, {String message, bool printTrace}) { | 
|  | 131   if (_trackedObjects.contains(object)) { | 
|  | 132     if (message != null) { | 
|  | 133       String msg = 'tracked: ${object.hashCode}:$object:$message'; | 
|  | 134       if (printTrace == null) printTrace = trackWithTrace; | 
|  | 135       if (printTrace) { | 
|  | 136         trace(msg); | 
|  | 137       } else { | 
|  | 138         debugPrint(msg); | 
|  | 139       } | 
|  | 140     } | 
|  | 141     return true; | 
|  | 142   } | 
|  | 143   return false; | 
|  | 144 } | 
| OLD | NEW | 
|---|