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 |