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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/mirrors_used.dart

Issue 22301009: Retain fewer names for reflection. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Make sure that receiver-less symbols are retained when there is insufficient @MirrorsUsed. Created 7 years, 4 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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dart2js.mirrors_used; 5 library dart2js.mirrors_used;
6 6
7 import 'dart2jslib.dart' show 7 import 'dart2jslib.dart' show
8 Compiler, 8 Compiler,
9 CompilerTask, 9 CompilerTask,
10 Constant, 10 Constant,
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 /// [MirrorUsageAnalyzerTask.hasMirrorUsage]). 179 /// [MirrorUsageAnalyzerTask.hasMirrorUsage]).
180 void run() { 180 void run() {
181 wildcard = compiler.libraries.values.toList(); 181 wildcard = compiler.libraries.values.toList();
182 Map<LibraryElement, List<MirrorUsage>> usageMap = 182 Map<LibraryElement, List<MirrorUsage>> usageMap =
183 collectMirrorsUsedAnnotation(); 183 collectMirrorsUsedAnnotation();
184 propagateOverrides(usageMap); 184 propagateOverrides(usageMap);
185 Set<LibraryElement> librariesWithoutUsage = new Set<LibraryElement>(); 185 Set<LibraryElement> librariesWithoutUsage = new Set<LibraryElement>();
186 usageMap.forEach((LibraryElement library, List<MirrorUsage> usage) { 186 usageMap.forEach((LibraryElement library, List<MirrorUsage> usage) {
187 if (usage.isEmpty) librariesWithoutUsage.add(library); 187 if (usage.isEmpty) librariesWithoutUsage.add(library);
188 }); 188 });
189 if (librariesWithoutUsage.isEmpty) { 189 if (librariesWithoutUsage.isEmpty) {
karlklose 2013/08/07 15:31:20 Could we warn if there is an import with and one w
ahe 2013/08/07 15:44:17 Yes. Filed http://dartbug.com/12297.
190 mergedMirrorUsage = mergeUsages(usageMap); 190 mergedMirrorUsage = mergeUsages(usageMap);
191 } else { 191 } else {
192 mergedMirrorUsage = new MirrorUsage(null, wildcard, null, null); 192 mergedMirrorUsage = new MirrorUsage(null, null, null, null);
193 } 193 }
194 } 194 }
195 195
196 /// Collect all @MirrorsUsed from all libraries and represent them as 196 /// Collect all @MirrorsUsed from all libraries and represent them as
197 /// [MirrorUsage]. 197 /// [MirrorUsage].
198 Map<LibraryElement, List<MirrorUsage>> collectMirrorsUsedAnnotation() { 198 Map<LibraryElement, List<MirrorUsage>> collectMirrorsUsedAnnotation() {
199 Map<LibraryElement, List<MirrorUsage>> result = 199 Map<LibraryElement, List<MirrorUsage>> result =
200 new Map<LibraryElement, List<MirrorUsage>>(); 200 new Map<LibraryElement, List<MirrorUsage>>();
201 for (LibraryElement library in compiler.libraries.values) { 201 for (LibraryElement library in compiler.libraries.values) {
202 if (library.isInternalLibrary) continue; 202 if (library.isInternalLibrary) continue;
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 // @MirrorsUsed(targets: fisk) 583 // @MirrorsUsed(targets: fisk)
584 // ^^^^ 584 // ^^^^
585 // 585 //
586 // Instead of saying 'fisk' should pretty print the problematic constant 586 // Instead of saying 'fisk' should pretty print the problematic constant
587 // value. 587 // value.
588 return spannable; 588 return spannable;
589 } 589 }
590 return node; 590 return node;
591 } 591 }
592 } 592 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698