| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | |
| 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. | |
| 4 | |
| 5 /// This tools verifies that all elements that are included in the output are | |
| 6 /// reachable from the program entrypoint. If there are elements that are not | |
| 7 /// reachable from the entrypoint, then this indicates that we are missing | |
| 8 /// dependencies. If all functions are reachable from the entrypoint, this | |
| 9 /// script will return with exitcode 0. Otherwise it will list the unreachable | |
| 10 /// functions and return with exitcode 1. | |
| 11 library dart2js_info.bin.verify_deps; | |
| 12 | |
| 13 import 'dart:async'; | |
| 14 import 'dart:convert'; | |
| 15 import 'dart:io'; | |
| 16 | |
| 17 import 'package:dart2js_info/info.dart'; | |
| 18 import 'package:dart2js_info/src/graph.dart'; | |
| 19 import 'package:dart2js_info/src/util.dart'; | |
| 20 | |
| 21 Future main(List<String> args) async { | |
| 22 if (args.length > 1) { | |
| 23 printUsage(); | |
| 24 exit(1); | |
| 25 } | |
| 26 var json = JSON.decode(await new File(args[0]).readAsString()); | |
| 27 var info = new AllInfoJsonCodec().decode(json); | |
| 28 var graph = graphFromInfo(info); | |
| 29 var entrypoint = info.program.entrypoint; | |
| 30 var reachables = findReachable(graph, entrypoint); | |
| 31 | |
| 32 var functionsAndFields = []..addAll(info.functions)..addAll(info.fields); | |
| 33 var unreachables = | |
| 34 functionsAndFields.where((func) => !reachables.contains(func)); | |
| 35 if (unreachables.isNotEmpty) { | |
| 36 unreachables.forEach((x) => print(longName(x))); | |
| 37 exit(1); | |
| 38 } else { | |
| 39 print('all elements are reachable from the entrypoint'); | |
| 40 } | |
| 41 } | |
| 42 | |
| 43 /// Finds the set of nodes reachable from [start] in [graph]. | |
| 44 Set<Info> findReachable(Graph<Info> graph, Info start) => | |
| 45 new Set.from(graph.preOrder(start)); | |
| 46 | |
| 47 void printUsage() { | |
| 48 print('usage: dart2js_info_verify_deps <info file>'); | |
| 49 } | |
| OLD | NEW |