Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: tool/input_sdk/private/debugger.dart

Issue 2033433007: Fixed type error in MapEntry and added keyToStringConfig to display the toString() of a key in a Ma… (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/sdk_expected_errors.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 dart._debugger; 5 library dart._debugger;
6 6
7 import 'dart:_foreign_helper' show JS; 7 import 'dart:_foreign_helper' show JS;
8 import 'dart:_runtime' as dart; 8 import 'dart:_runtime' as dart;
9 import 'dart:core'; 9 import 'dart:core';
10 import 'dart:collection'; 10 import 'dart:collection';
11 import 'dart:html' as html; 11 import 'dart:html' as html;
12 12
13 /// Config object to pass to devtools to signal that an object should not be 13 /// Config String to pass to devtools to signal that an object should not be
14 /// formatted by the Dart formatter. This is used to specify that an Object 14 /// formatted by the Dart formatter. This is used to specify that an Object
15 /// should just be displayed using the regular JavaScript view instead of a 15 /// should just be displayed using the regular JavaScript view instead of a
16 /// custom Dart view. For example, this is used to display the JavaScript view 16 /// custom Dart view. For example, this is used to display the JavaScript view
17 /// of a Dart Function as a child of the regular Function object. 17 /// of a Dart Function as a child of the regular Function object.
18 const skipDartConfig = const Object(); 18 const skipDartConfig = "skipDartConfig";
19
20 /// Config String to pass to devtools to signal that a map key object should
21 /// have its toString() displayed by the Dart formatter.
22 const keyToStringConfig = "keyToStringConfig";
Jacob 2016/06/03 23:11:50 A cleaner solution would be to have an enum of co
priscillalee 2016/06/07 22:58:01 Used a class JsonMLConfig that simulated an enum i
23
19 final int maxIterableChildrenToDisplay = 50; 24 final int maxIterableChildrenToDisplay = 50;
20 25
21 var _devtoolsFormatter = new JsonMLFormatter(new DartFormatter()); 26 var _devtoolsFormatter = new JsonMLFormatter(new DartFormatter());
22 27
23 String _typeof(object) => JS('String', 'typeof #', object); 28 String _typeof(object) => JS('String', 'typeof #', object);
24 29
25 List<String> getOwnPropertyNames(object) => JS('List<String>', 30 List<String> getOwnPropertyNames(object) => JS('List<String>',
26 'dart.list(Object.getOwnPropertyNames(#), #)', object, String); 31 'dart.list(Object.getOwnPropertyNames(#), #)', object, String);
27 32
28 List getOwnPropertySymbols(object) => 33 List getOwnPropertySymbols(object) =>
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 bool hasMethod(object, String name) { 83 bool hasMethod(object, String name) {
79 try { 84 try {
80 return dart.hasMethod(object, name); 85 return dart.hasMethod(object, name);
81 } catch (e) { 86 } catch (e) {
82 return false; 87 return false;
83 } 88 }
84 } 89 }
85 90
86 /// [JsonMLFormatter] consumes [NameValuePair] objects and 91 /// [JsonMLFormatter] consumes [NameValuePair] objects and
87 class NameValuePair { 92 class NameValuePair {
88 NameValuePair({this.name, this.value, bool skipDart}) 93 NameValuePair({this.name, this.value, bool skipDart, bool keyToString})
Jacob 2016/06/03 23:11:50 change this to just take an entry of the enum Jso
priscillalee 2016/06/07 22:58:01 Done.
89 : skipDart = skipDart == true; 94 : skipDart = skipDart == true,
95 keyToString = keyToString == true;
90 96
91 // Define equality and hashCode so that NameValuePair can be used 97 // Define equality and hashCode so that NameValuePair can be used
92 // in a Set to dedupe entries with duplicate names. 98 // in a Set to dedupe entries with duplicate names.
93 operator ==(other) => other is NameValuePair && other.name == name; 99 operator ==(other) => other is NameValuePair && other.name == name;
94 int get hashCode => name.hashCode; 100 int get hashCode => name.hashCode;
95 101
96 final String name; 102 final String name;
97 final Object value; 103 final Object value;
98 final bool skipDart; 104 final bool skipDart;
105 final bool keyToString;
99 } 106 }
100 107
101 class MapEntry { 108 class MapEntry {
102 MapEntry({this.key, this.value}); 109 MapEntry({this.key, this.value});
103 110
104 final String key; 111 final Object key;
105 final Object value; 112 final Object value;
106 } 113 }
107 114
108 class ClassMetadata { 115 class ClassMetadata {
109 ClassMetadata(this.object); 116 ClassMetadata(this.object);
110 117
111 final Object object; 118 final Object object;
112 } 119 }
113 120
114 class HeritageClause { 121 class HeritageClause {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 // TODO(jacobr): define a SimpleFormatter base class that DartFormatter 193 // TODO(jacobr): define a SimpleFormatter base class that DartFormatter
187 // implements if we decide to use this class elsewhere. We specify that the 194 // implements if we decide to use this class elsewhere. We specify that the
188 // type is DartFormatter here purely to get type checking benefits not because 195 // type is DartFormatter here purely to get type checking benefits not because
189 // this class is really intended to only support instances of type 196 // this class is really intended to only support instances of type
190 // DartFormatter. 197 // DartFormatter.
191 DartFormatter _simpleFormatter; 198 DartFormatter _simpleFormatter;
192 199
193 JsonMLFormatter(this._simpleFormatter); 200 JsonMLFormatter(this._simpleFormatter);
194 201
195 header(object, config) { 202 header(object, config) {
196 if (identical(config, skipDartConfig) || isNativeJavaScriptObject(object)) { 203 if (identical(config, skipDartConfig) || isNativeJavaScriptObject(object)) {
Jacob 2016/06/03 23:11:50 switch to using == once you switch to an enum
priscillalee 2016/06/07 22:58:01 Done.
197 return null; 204 return null;
198 } 205 }
199 206
200 var c = _simpleFormatter.preview(object); 207 var c = _simpleFormatter.preview(object);
201 if (c == null) return null; 208 if (c == null) return null;
202 209
210 if (identical(config, keyToStringConfig)) {
Jacob 2016/06/03 23:11:50 switch to using == instead of identical
priscillalee 2016/06/07 22:58:01 Done.
211 c = object.toString();
212 }
213
203 // Indicate this is a Dart Object by using a Dart background color. 214 // Indicate this is a Dart Object by using a Dart background color.
204 // This is stylistically a bit ugly but it eases distinguishing Dart and 215 // This is stylistically a bit ugly but it eases distinguishing Dart and
205 // JS objects. 216 // JS objects.
206 var element = new JsonMLElement('span') 217 var element = new JsonMLElement('span')
207 ..setStyle('background-color: #d9edf7') 218 ..setStyle('background-color: #d9edf7')
208 ..createTextChild(c); 219 ..createTextChild(c);
209 return element.toJsonML(); 220 return element.toJsonML();
210 } 221 }
211 222
212 bool hasBody(object) => _simpleFormatter.hasChildren(object); 223 bool hasBody(object) => _simpleFormatter.hasChildren(object);
(...skipping 13 matching lines...) Expand all
226 ..setStyle('color: rgb(136, 19, 145);'); 237 ..setStyle('color: rgb(136, 19, 145);');
227 if (_typeof(child.value) == 'object' || 238 if (_typeof(child.value) == 'object' ||
228 _typeof(child.value) == 'function') { 239 _typeof(child.value) == 'function') {
229 nameSpan.addStyle("padding-left: 13px;"); 240 nameSpan.addStyle("padding-left: 13px;");
230 241
231 li.appendChild(nameSpan); 242 li.appendChild(nameSpan);
232 var objectTag = li.createObjectTag(child.value); 243 var objectTag = li.createObjectTag(child.value);
233 if (child.skipDart) { 244 if (child.skipDart) {
234 objectTag.addAttribute('config', skipDartConfig); 245 objectTag.addAttribute('config', skipDartConfig);
235 } 246 }
247 if (child.keyToString) {
248 objectTag.addAttribute('config', keyToStringConfig);
249 }
236 if (!_simpleFormatter.hasChildren(child.value)) { 250 if (!_simpleFormatter.hasChildren(child.value)) {
237 li.setStyle("padding-left: 13px;"); 251 li.setStyle("padding-left: 13px;");
238 } 252 }
239 } else { 253 } else {
240 li.setStyle("padding-left: 13px;"); 254 li.setStyle("padding-left: 13px;");
241 li.createChild('span') 255 li.createChild('span')
242 ..appendChild(nameSpan) 256 ..appendChild(nameSpan)
243 ..createTextChild(safePreview(child.value)); 257 ..createTextChild(safePreview(child.value));
244 } 258 }
245 } 259 }
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 accept(object) => object is MapEntry; 568 accept(object) => object is MapEntry;
555 569
556 String preview(object) { 570 String preview(object) {
557 MapEntry entry = object; 571 MapEntry entry = object;
558 return '${safePreview(entry.key)} => ${safePreview(entry.value)}'; 572 return '${safePreview(entry.key)} => ${safePreview(entry.value)}';
559 } 573 }
560 574
561 bool hasChildren(object) => true; 575 bool hasChildren(object) => true;
562 576
563 List<NameValuePair> children(object) => <NameValuePair>[ 577 List<NameValuePair> children(object) => <NameValuePair>[
564 new NameValuePair(name: 'key', value: object.key), 578 new NameValuePair(name: 'key', value: object.key, keyToString: true),
565 new NameValuePair(name: 'value', value: object.value) 579 new NameValuePair(name: 'value', value: object.value)
566 ]; 580 ];
567 } 581 }
568 582
569 /// Formatter for Dart Iterable objects including List and Set. 583 /// Formatter for Dart Iterable objects including List and Set.
570 class HeritageClauseFormatter implements Formatter { 584 class HeritageClauseFormatter implements Formatter {
571 bool accept(object) => object is HeritageClause; 585 bool accept(object) => object is HeritageClause;
572 586
573 String preview(object) { 587 String preview(object) {
574 HeritageClause clause = object; 588 HeritageClause clause = object;
(...skipping 12 matching lines...) Expand all
587 return ret; 601 return ret;
588 } 602 }
589 } 603 }
590 604
591 /// This entry point is automatically invoked by the code generated by 605 /// This entry point is automatically invoked by the code generated by
592 /// Dart Dev Compiler 606 /// Dart Dev Compiler
593 registerDevtoolsFormatter() { 607 registerDevtoolsFormatter() {
594 var formatters = [_devtoolsFormatter]; 608 var formatters = [_devtoolsFormatter];
595 JS('', 'dart.global.devtoolsFormatters = #', formatters); 609 JS('', 'dart.global.devtoolsFormatters = #', formatters);
596 } 610 }
OLDNEW
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/sdk_expected_errors.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698