OLD | NEW |
1 #!/usr/bin/env dart | 1 #!/usr/bin/env dart |
2 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 2 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
3 // for details. All rights reserved. Use of this source code is governed by a | 3 // for details. All rights reserved. Use of this source code is governed by a |
4 // BSD-style license that can be found in the LICENSE file. | 4 // BSD-style license that can be found in the LICENSE file. |
5 | 5 |
6 import 'dart:async'; | 6 import 'dart:async'; |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'batch_util.dart'; | 9 import 'batch_util.dart'; |
10 | 10 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 defaultsTo: false) | 70 defaultsTo: false) |
71 ..addOption('D', | 71 ..addOption('D', |
72 abbr: 'D', | 72 abbr: 'D', |
73 allowMultiple: true, | 73 allowMultiple: true, |
74 help: 'Define an environment variable.', | 74 help: 'Define an environment variable.', |
75 hide: true) | 75 hide: true) |
76 ..addFlag('show-external', | 76 ..addFlag('show-external', |
77 help: 'When printing a library as text, also print its dependencies\n' | 77 help: 'When printing a library as text, also print its dependencies\n' |
78 'on external libraries.') | 78 'on external libraries.') |
79 ..addFlag('show-offsets', | 79 ..addFlag('show-offsets', |
80 help: 'When printing a library as text, also print node offsets'); | 80 help: 'When printing a library as text, also print node offsets') |
| 81 ..addFlag('tree-shake', |
| 82 defaultsTo: false, help: 'Enable tree-shaking if the target supports it'); |
81 | 83 |
82 String getUsage() => """ | 84 String getUsage() => """ |
83 Usage: dartk [options] FILE | 85 Usage: dartk [options] FILE |
84 | 86 |
85 Convert .dart or .dill files to kernel's IR and print out its textual | 87 Convert .dart or .dill files to kernel's IR and print out its textual |
86 or binary form. | 88 or binary form. |
87 | 89 |
88 Examples: | 90 Examples: |
89 dartk foo.dart # print text IR for foo.dart | 91 dartk foo.dart # print text IR for foo.dart |
90 dartk foo.dart -ofoo.dill # write binary IR for foo.dart to foo.dill | 92 dartk foo.dart -ofoo.dill # write binary IR for foo.dart to foo.dill |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 List<String> urlMapping = options['url-mapping'] as List<String>; | 283 List<String> urlMapping = options['url-mapping'] as List<String>; |
282 var customUriMappings = parseCustomUriMappings(urlMapping); | 284 var customUriMappings = parseCustomUriMappings(urlMapping); |
283 var repository = new Repository(); | 285 var repository = new Repository(); |
284 | 286 |
285 Program program; | 287 Program program; |
286 | 288 |
287 var watch = new Stopwatch()..start(); | 289 var watch = new Stopwatch()..start(); |
288 List<String> loadedFiles; | 290 List<String> loadedFiles; |
289 Function getLoadedFiles; | 291 Function getLoadedFiles; |
290 List errors = const []; | 292 List errors = const []; |
291 TargetFlags targetFlags = new TargetFlags(strongMode: options['strong']); | 293 TargetFlags targetFlags = new TargetFlags( |
| 294 strongMode: options['strong'], treeShake: options['tree-shake']); |
292 Target target = getTarget(options['target'], targetFlags); | 295 Target target = getTarget(options['target'], targetFlags); |
293 | 296 |
294 var declaredVariables = <String, String>{}; | 297 var declaredVariables = <String, String>{}; |
295 declaredVariables.addAll(target.extraDeclaredVariables); | 298 declaredVariables.addAll(target.extraDeclaredVariables); |
296 for (String define in options['D']) { | 299 for (String define in options['D']) { |
297 int separator = define.indexOf('='); | 300 int separator = define.indexOf('='); |
298 if (separator == -1) { | 301 if (separator == -1) { |
299 fail('Invalid define: -D$define. Format is -D<name>=<value>'); | 302 fail('Invalid define: -D$define. Format is -D<name>=<value>'); |
300 } | 303 } |
301 String name = define.substring(0, separator); | 304 String name = define.substring(0, separator); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 print('writer.time = $time ms'); | 396 print('writer.time = $time ms'); |
394 } | 397 } |
395 | 398 |
396 await ioFuture; | 399 await ioFuture; |
397 | 400 |
398 if (shouldReportMetrics) { | 401 if (shouldReportMetrics) { |
399 int flushTime = watch.elapsedMilliseconds - time; | 402 int flushTime = watch.elapsedMilliseconds - time; |
400 print('writer.flush_time = $flushTime ms'); | 403 print('writer.flush_time = $flushTime ms'); |
401 } | 404 } |
402 | 405 |
| 406 if (options['tolerant']) { |
| 407 return CompilerOutcome.Ok; |
| 408 } |
| 409 |
403 return errors.length > 0 ? CompilerOutcome.Fail : CompilerOutcome.Ok; | 410 return errors.length > 0 ? CompilerOutcome.Fail : CompilerOutcome.Ok; |
404 } | 411 } |
OLD | NEW |