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

Side by Side Diff: pkg/compiler/lib/src/deferred_load.dart

Issue 1422623014: Add TypeUse. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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
OLDNEW
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 deferred_load; 5 library deferred_load;
6 6
7 import 'common.dart'; 7 import 'common.dart';
8 import 'common/backend_api.dart' show 8 import 'common/backend_api.dart' show
9 Backend; 9 Backend;
10 import 'common/tasks.dart' show 10 import 'common/tasks.dart' show
(...skipping 30 matching lines...) Expand all
41 import 'tree/tree.dart' as ast; 41 import 'tree/tree.dart' as ast;
42 import 'tree/tree.dart' show 42 import 'tree/tree.dart' show
43 Import, 43 Import,
44 LibraryTag, 44 LibraryTag,
45 LibraryDependency, 45 LibraryDependency,
46 LiteralDartString, 46 LiteralDartString,
47 LiteralString, 47 LiteralString,
48 NewExpression, 48 NewExpression,
49 Node; 49 Node;
50 import 'universe/use.dart' show 50 import 'universe/use.dart' show
51 StaticUse; 51 StaticUse,
52 TypeUse,
53 TypeUseKind;
52 import 'universe/world_impact.dart' show 54 import 'universe/world_impact.dart' show
53 WorldImpact; 55 WorldImpact;
54 import 'util/setlet.dart' show 56 import 'util/setlet.dart' show
55 Setlet; 57 Setlet;
56 import 'util/uri_extras.dart' as uri_extras; 58 import 'util/uri_extras.dart' as uri_extras;
57 import 'util/util.dart' show 59 import 'util/util.dart' show
58 Link, makeUnique; 60 Link, makeUnique;
59 61
60 /// A "hunk" of the program that will be loaded whenever one of its [imports] 62 /// A "hunk" of the program that will be loaded whenever one of its [imports]
61 /// are loaded. 63 /// are loaded.
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 if (!compiler.enqueuer.resolution.hasBeenProcessed(analyzableElement)) { 313 if (!compiler.enqueuer.resolution.hasBeenProcessed(analyzableElement)) {
312 return; 314 return;
313 } 315 }
314 316
315 WorldImpact worldImpact = 317 WorldImpact worldImpact =
316 compiler.resolution.getWorldImpact(analyzableElement); 318 compiler.resolution.getWorldImpact(analyzableElement);
317 worldImpact.staticUses.forEach((StaticUse staticUse) { 319 worldImpact.staticUses.forEach((StaticUse staticUse) {
318 elements.add(staticUse.element); 320 elements.add(staticUse.element);
319 }); 321 });
320 elements.addAll(worldImpact.closures); 322 elements.addAll(worldImpact.closures);
321 for (DartType type in worldImpact.typeLiterals) { 323 for (TypeUse typeUse in worldImpact.typeUses) {
322 if (type.isTypedef || type.isInterfaceType) { 324 DartType type = typeUse.type;
323 elements.add(type.element); 325 switch (typeUse.kind) {
326 case TypeUseKind.TYPE_LITERAL:
327 if (type.isTypedef || type.isInterfaceType) {
328 elements.add(type.element);
329 }
330 break;
331 case TypeUseKind.INSTANTIATION:
332 case TypeUseKind.IS_CHECK:
333 case TypeUseKind.AS_CAST:
334 case TypeUseKind.CATCH_TYPE:
335 collectTypeDependencies(type);
336 break;
337 case TypeUseKind.CHECKED_MODE_CHECK:
338 if (compiler.enableTypeAssertions) {
339 collectTypeDependencies(type);
340 }
341 break;
324 } 342 }
325 } 343 }
326 worldImpact.instantiatedTypes.forEach(collectTypeDependencies);
327 worldImpact.isChecks.forEach(collectTypeDependencies);
328 worldImpact.asCasts.forEach(collectTypeDependencies);
329 worldImpact.onCatchTypes.forEach(collectTypeDependencies);
330 if (compiler.enableTypeAssertions) {
331 worldImpact.checkedModeChecks.forEach(collectTypeDependencies);
332 }
333 344
334 TreeElements treeElements = analyzableElement.resolvedAst.elements; 345 TreeElements treeElements = analyzableElement.resolvedAst.elements;
335 assert(treeElements != null); 346 assert(treeElements != null);
336 347
337 treeElements.forEachConstantNode((Node node, _) { 348 treeElements.forEachConstantNode((Node node, _) {
338 // Explicitly depend on the backend constants. 349 // Explicitly depend on the backend constants.
339 ConstantValue value = 350 ConstantValue value =
340 backend.constants.getConstantValueForNode(node, treeElements); 351 backend.constants.getConstantValueForNode(node, treeElements);
341 if (value != null) { 352 if (value != null) {
342 // TODO(johnniwinther): Assert that all constants have values when 353 // TODO(johnniwinther): Assert that all constants have values when
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 return result; 997 return result;
987 } 998 }
988 999
989 bool operator ==(other) { 1000 bool operator ==(other) {
990 if (other is! _DeclaredDeferredImport) return false; 1001 if (other is! _DeclaredDeferredImport) return false;
991 return declaration == other.declaration; 1002 return declaration == other.declaration;
992 } 1003 }
993 1004
994 int get hashCode => declaration.hashCode * 17; 1005 int get hashCode => declaration.hashCode * 17;
995 } 1006 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698