| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 /// A transformation to create a self-contained modular kernel without | 5 /// A transformation to create a self-contained modular kernel without |
| 6 /// unnecessary references to other libraries. | 6 /// unnecessary references to other libraries. |
| 7 library fasta.kernel.kernel_outline_shaker; | 7 library fasta.kernel.kernel_outline_shaker; |
| 8 | 8 |
| 9 import 'package:kernel/ast.dart'; | 9 import 'package:kernel/ast.dart'; |
| 10 import 'package:kernel/core_types.dart'; | 10 import 'package:kernel/core_types.dart'; |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 data.markClass(coreTypes.mapClass); | 195 data.markClass(coreTypes.mapClass); |
| 196 data.markClass(coreTypes.iterableClass); | 196 data.markClass(coreTypes.iterableClass); |
| 197 data.markClass(coreTypes.iteratorClass); | 197 data.markClass(coreTypes.iteratorClass); |
| 198 data.markClass(coreTypes.futureClass); | 198 data.markClass(coreTypes.futureClass); |
| 199 data.markClass(coreTypes.streamClass); | 199 data.markClass(coreTypes.streamClass); |
| 200 data.markClass(coreTypes.symbolClass); | 200 data.markClass(coreTypes.symbolClass); |
| 201 data.markClass(coreTypes.internalSymbolClass); | 201 data.markClass(coreTypes.internalSymbolClass); |
| 202 data.markClass(coreTypes.typeClass); | 202 data.markClass(coreTypes.typeClass); |
| 203 data.markClass(coreTypes.functionClass); | 203 data.markClass(coreTypes.functionClass); |
| 204 data.markClass(coreTypes.invocationClass); | 204 data.markClass(coreTypes.invocationClass); |
| 205 data.markMember(coreTypes.getMember("dart:_internal", "ExternalName", "")); | 205 data.markMember(coreTypes.externalNameDefaultConstructor); |
| 206 | 206 |
| 207 // These are needed by the continuation (async/await) transformer: | 207 // These are needed by the continuation (async/await) transformer: |
| 208 data.markClass(coreTypes.getClass('dart:core', 'Iterator')); | 208 data.markClass(coreTypes.iteratorClass); |
| 209 data.markClass(coreTypes.getClass('dart:async', 'Future')); | 209 data.markClass(coreTypes.futureClass); |
| 210 data.markClass(coreTypes.getClass('dart:async', 'FutureOr')); | 210 data.markClass(coreTypes.futureOrClass); |
| 211 data.markClass(coreTypes.getClass('dart:async', 'Completer')); | 211 data.markClass(coreTypes.completerClass); |
| 212 data.markMember(coreTypes.getMember('dart:async', 'Completer', 'sync')); | 212 data.markMember(coreTypes.completerSyncConstructor); |
| 213 data.markMember(coreTypes.getMember('dart:core', '_SyncIterable', '')); | 213 data.markMember(coreTypes.syncIterableDefaultConstructor); |
| 214 data.markMember(coreTypes.getMember('dart:async', '_StreamIterator', '')); | 214 data.markMember(coreTypes.streamIteratorDefaultConstructor); |
| 215 data.markMember(coreTypes.getMember('dart:async', 'Future', 'microtask')); | 215 data.markMember(coreTypes.futureMicrotaskConstructor); |
| 216 data.markMember( | 216 data.markMember(coreTypes.asyncStarStreamControllerDefaultConstructor); |
| 217 coreTypes.getMember('dart:async', '_AsyncStarStreamController', '')); | 217 data.markMember(coreTypes.printProcedure); |
| 218 data.markMember(coreTypes.getTopLevelMember('dart:core', 'print')); | 218 data.markMember(coreTypes.asyncThenWrapperHelperProcedure); |
| 219 data.markMember( | 219 data.markMember(coreTypes.asyncErrorWrapperHelperProcedure); |
| 220 coreTypes.getTopLevelMember('dart:async', '_asyncThenWrapperHelper')); | 220 data.markMember(coreTypes.awaitHelperProcedure); |
| 221 data.markMember( | |
| 222 coreTypes.getTopLevelMember('dart:async', '_asyncErrorWrapperHelper')); | |
| 223 data.markMember(coreTypes.getTopLevelMember('dart:async', '_awaitHelper')); | |
| 224 | 221 |
| 225 // These are needed by the mixin transformer | 222 // These are needed by the mixin transformer |
| 226 data.markMember(coreTypes.getMember('dart:core', '_InvocationMirror', '')); | 223 data.markMember(coreTypes.invocationMirrorDefaultConstructor); |
| 227 data.markMember(coreTypes.getMember('dart:core', 'List', 'from')); | 224 data.markMember(coreTypes.listFromConstructor); |
| 228 } | 225 } |
| 229 | 226 |
| 230 visitConstructor(Constructor node) { | 227 visitConstructor(Constructor node) { |
| 231 if (!node.initializers.any((i) => i is SuperInitializer)) { | 228 if (!node.initializers.any((i) => i is SuperInitializer)) { |
| 232 // super() is currently implicit. | 229 // super() is currently implicit. |
| 233 for (var ctor in node.enclosingClass.supertype.classNode.constructors) { | 230 for (var ctor in node.enclosingClass.supertype.classNode.constructors) { |
| 234 if (ctor.name.name == '') data.markMember(ctor); | 231 if (ctor.name.name == '') data.markMember(ctor); |
| 235 } | 232 } |
| 236 } | 233 } |
| 237 node.visitChildren(this); | 234 node.visitChildren(this); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 /// Types appear to be encoded directly, so we have no need to preserve | 394 /// Types appear to be encoded directly, so we have no need to preserve |
| 398 /// typedefs. | 395 /// typedefs. |
| 399 // TODO(sigmund): revisit if this is not the case, the `inputError` in | 396 // TODO(sigmund): revisit if this is not the case, the `inputError` in |
| 400 // [RootsMarker] is meant to detect this. | 397 // [RootsMarker] is meant to detect this. |
| 401 Typedef visitTypedef(Typedef node) => null; | 398 Typedef visitTypedef(Typedef node) => null; |
| 402 | 399 |
| 403 TreeNode defaultTreeNode(TreeNode node) => node; | 400 TreeNode defaultTreeNode(TreeNode node) => node; |
| 404 } | 401 } |
| 405 | 402 |
| 406 typedef bool Filter(Uri uri); | 403 typedef bool Filter(Uri uri); |
| OLD | NEW |