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

Side by Side Diff: utils/apidoc/html_diff_dump.dart

Issue 9350049: When dumping JSON for html_diff, don't list renames where the member name (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 /** 5 /**
6 * A script for printing a JSON dump of HTML diff data. In particular, this 6 * A script for printing a JSON dump of HTML diff data. In particular, this
7 * lists a map of `dart:dom` methods that have been renamed to `dart:html` 7 * lists a map of `dart:dom` methods that have been renamed to `dart:html`
8 * methods without changing their semantics, and `dart:dom` methods that have 8 * methods without changing their semantics, and `dart:dom` methods that have
9 * been removed in `dart:html`. As a heuristic, a `dart:html` method doesn't 9 * been removed in `dart:html`. As a heuristic, a `dart:html` method doesn't
10 * change the semantics of the corresponding `dart:dom` method if it's the only 10 * change the semantics of the corresponding `dart:dom` method if it's the only
(...skipping 22 matching lines...) Expand all
33 /** Whether or not a domType represents the same type as an htmlType. */ 33 /** Whether or not a domType represents the same type as an htmlType. */
34 bool sameType(Type domType, Type htmlType) { 34 bool sameType(Type domType, Type htmlType) {
35 if (domType.isVoid || htmlType.isVoid) { 35 if (domType.isVoid || htmlType.isVoid) {
36 return domType.isVoid && htmlType.isVoid; 36 return domType.isVoid && htmlType.isVoid;
37 } 37 }
38 38
39 final htmlTypes = diff.domTypesToHtml[domType]; 39 final htmlTypes = diff.domTypesToHtml[domType];
40 return htmlTypes != null && htmlTypes.some((t) => t == htmlType); 40 return htmlTypes != null && htmlTypes.some((t) => t == htmlType);
41 } 41 }
42 42
43 /** Returns the name of a member, including `get:` if it's a field. */
44 String memberName(Member m) => m is FieldMember ? 'get:${m.name}' : m.name;
45
43 /** 46 /**
44 * Returns a string describing the name of a member. If [type] is passed, it's 47 * Returns a string describing the name of a member. If [type] is passed, it's
45 * used in place of the member's real type name. 48 * used in place of the member's real type name.
46 */ 49 */
47 String memberName(Member m, [Type type = null]) { 50 String memberDesc(Member m, [Type type = null]) {
48 if (type == null) type = m.declaringType; 51 if (type == null) type = m.declaringType;
49 if (m is FieldMember) { 52 return '${type.name}.${memberName(m)}';
50 return '${type.name}.get:${m.name}';
51 } else {
52 return '${type.name}.${m.name}';
53 }
54 } 53 }
55 54
56 /** 55 /**
57 * Same as [memberName], but if [m] is a `dart:dom` type its `dart:html` 56 * Same as [memberDesc], but if [m] is a `dart:dom` type its `dart:html`
58 * typename is used instead. 57 * typename is used instead.
59 */ 58 */
60 String htmlishMemberName(Member m) { 59 String htmlishMemberDesc(Member m) {
61 var type = m.declaringType; 60 var type = m.declaringType;
62 final htmlTypes = diff.domTypesToHtml[type]; 61 final htmlTypes = diff.domTypesToHtml[type];
63 if (htmlTypes != null && htmlTypes.length == 1) { 62 if (htmlTypes != null && htmlTypes.length == 1) {
64 type = htmlTypes.iterator().next(); 63 type = htmlTypes.iterator().next();
65 } 64 }
66 return memberName(m, type); 65 return memberDesc(m, type);
67 } 66 }
68 67
69 bool isGetter(Member member) => member.name.startsWith('get:'); 68 bool isGetter(Member member) => member.name.startsWith('get:');
70 bool isSetter(Member member) => member.name.startsWith('set:'); 69 bool isSetter(Member member) => member.name.startsWith('set:');
71 70
72 /** 71 /**
73 * Add an entry to the map of `dart:dom` names to `dart:html` names if 72 * Add an entry to the map of `dart:dom` names to `dart:html` names if
74 * [domMember] was renamed to [htmlMembers] with the same semantics. 73 * [domMember] was renamed to [htmlMembers] with the same semantics.
75 */ 74 */
76 void maybeAddRename(Map<String, String> renamed, Member domMember, 75 void maybeAddRename(Map<String, String> renamed, Member domMember,
77 Collection<Member> htmlMembers) { 76 Collection<Member> htmlMembers) {
78 if (htmlMembers.length != 1) return; 77 if (htmlMembers.length != 1) return;
79 final htmlMember = htmlMembers.iterator().next(); 78 final htmlMember = htmlMembers.iterator().next();
80 if (memberName(domMember) != memberName(htmlMember) && 79 if (memberName(domMember) != memberName(htmlMember) &&
81 sameType(domMember.returnType, htmlMember.returnType)) { 80 sameType(domMember.returnType, htmlMember.returnType)) {
82 renamed[memberName(domMember)] = memberName(htmlMember); 81 renamed[memberDesc(domMember)] = memberDesc(htmlMember);
83 } 82 }
84 } 83 }
85 84
86 void main() { 85 void main() {
87 var files = new NodeFileSystem(); 86 var files = new NodeFileSystem();
88 parseOptions('../../frog', [] /* args */, files); 87 parseOptions('../../frog', [] /* args */, files);
89 initializeWorld(files); 88 initializeWorld(files);
90 89
91 HtmlDiff.initialize(); 90 HtmlDiff.initialize();
92 diff = new HtmlDiff(); 91 diff = new HtmlDiff();
(...skipping 16 matching lines...) Expand all
109 108
110 final removed = <Set>[]; 109 final removed = <Set>[];
111 for (final type in world.libraries['dart:dom'].types.getValues()) { 110 for (final type in world.libraries['dart:dom'].types.getValues()) {
112 if (type.members.getValues().every((m) => 111 if (type.members.getValues().every((m) =>
113 !diff.domToHtml.containsKey(m))) { 112 !diff.domToHtml.containsKey(m))) {
114 removed.add('${type.name}.*'); 113 removed.add('${type.name}.*');
115 } else { 114 } else {
116 for (final member in type.members.getValues()) { 115 for (final member in type.members.getValues()) {
117 if (!diff.domToHtml.containsKey(member)) { 116 if (!diff.domToHtml.containsKey(member)) {
118 if (member is PropertyMember) { 117 if (member is PropertyMember) {
119 if (member.canGet) removed.add(htmlishMemberName(member.getter)); 118 if (member.canGet) removed.add(htmlishMemberDesc(member.getter));
120 if (member.canSet) removed.add(htmlishMemberName(member.setter)); 119 if (member.canSet) removed.add(htmlishMemberDesc(member.setter));
121 } else { 120 } else {
122 removed.add(htmlishMemberName(member)); 121 removed.add(htmlishMemberDesc(member));
123 } 122 }
124 } else if (member is PropertyMember) { 123 } else if (member is PropertyMember) {
125 final htmlMembers = diff.domToHtml[member]; 124 final htmlMembers = diff.domToHtml[member];
126 if (member.canGet && !htmlMembers.some((m) => m.name.startsWith('get:' ))) { 125 if (member.canGet && !htmlMembers.some((m) => m.name.startsWith('get:' ))) {
127 removed.add(htmlishMemberName(member.getter)); 126 removed.add(htmlishMemberDesc(member.getter));
128 } 127 }
129 if (member.canSet && !htmlMembers.some((m) => m.name.startsWith('set:' ))) { 128 if (member.canSet && !htmlMembers.some((m) => m.name.startsWith('set:' ))) {
130 removed.add(htmlishMemberName(member.setter)); 129 removed.add(htmlishMemberDesc(member.setter));
131 } 130 }
132 } 131 }
133 } 132 }
134 } 133 }
135 } 134 }
136 135
137 print(JSON.stringify({'renamed': renamed, 'removed': removed})); 136 print(JSON.stringify({'renamed': renamed, 'removed': removed}));
138 } 137 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698