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 |