| Index: pkg/compiler/lib/src/deferred_load.dart
|
| diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
|
| index ab4f1cad961ce585453b5ebe6636f775a580bc51..7ababab27fd66e290efde20c05ca85c85ea54bc4 100644
|
| --- a/pkg/compiler/lib/src/deferred_load.dart
|
| +++ b/pkg/compiler/lib/src/deferred_load.dart
|
| @@ -48,7 +48,9 @@ import 'tree/tree.dart' show
|
| NewExpression,
|
| Node;
|
| import 'universe/use.dart' show
|
| - StaticUse;
|
| + StaticUse,
|
| + TypeUse,
|
| + TypeUseKind;
|
| import 'universe/world_impact.dart' show
|
| WorldImpact;
|
| import 'util/setlet.dart' show
|
| @@ -318,18 +320,27 @@ class DeferredLoadTask extends CompilerTask {
|
| elements.add(staticUse.element);
|
| });
|
| elements.addAll(worldImpact.closures);
|
| - for (DartType type in worldImpact.typeLiterals) {
|
| - if (type.isTypedef || type.isInterfaceType) {
|
| - elements.add(type.element);
|
| + for (TypeUse typeUse in worldImpact.typeUses) {
|
| + DartType type = typeUse.type;
|
| + switch (typeUse.kind) {
|
| + case TypeUseKind.TYPE_LITERAL:
|
| + if (type.isTypedef || type.isInterfaceType) {
|
| + elements.add(type.element);
|
| + }
|
| + break;
|
| + case TypeUseKind.INSTANTIATION:
|
| + case TypeUseKind.IS_CHECK:
|
| + case TypeUseKind.AS_CAST:
|
| + case TypeUseKind.CATCH_TYPE:
|
| + collectTypeDependencies(type);
|
| + break;
|
| + case TypeUseKind.CHECKED_MODE_CHECK:
|
| + if (compiler.enableTypeAssertions) {
|
| + collectTypeDependencies(type);
|
| + }
|
| + break;
|
| }
|
| }
|
| - worldImpact.instantiatedTypes.forEach(collectTypeDependencies);
|
| - worldImpact.isChecks.forEach(collectTypeDependencies);
|
| - worldImpact.asCasts.forEach(collectTypeDependencies);
|
| - worldImpact.onCatchTypes.forEach(collectTypeDependencies);
|
| - if (compiler.enableTypeAssertions) {
|
| - worldImpact.checkedModeChecks.forEach(collectTypeDependencies);
|
| - }
|
|
|
| TreeElements treeElements = analyzableElement.resolvedAst.elements;
|
| assert(treeElements != null);
|
|
|