| 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 import 'dart:io'; | 5 import 'dart:io'; | 
| 6 import 'package:analyzer/src/command_line/arguments.dart' | 6 import 'package:analyzer/src/command_line/arguments.dart' | 
| 7     show | 7     show | 
| 8         defineAnalysisArguments, | 8         defineAnalysisArguments, | 
| 9         filterUnknownArguments, | 9         filterUnknownArguments, | 
| 10         ignoreUnrecognizedFlagsFlag; | 10         ignoreUnrecognizedFlagsFlag; | 
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 173       _usageException('Output file $firstOutPath must be within the module ' | 173       _usageException('Output file $firstOutPath must be within the module ' | 
| 174           'root directory $moduleRoot'); | 174           'root directory $moduleRoot'); | 
| 175     } | 175     } | 
| 176     modulePath = | 176     modulePath = | 
| 177         path.withoutExtension(path.relative(firstOutPath, from: moduleRoot)); | 177         path.withoutExtension(path.relative(firstOutPath, from: moduleRoot)); | 
| 178   } else { | 178   } else { | 
| 179     moduleRoot = path.dirname(firstOutPath); | 179     moduleRoot = path.dirname(firstOutPath); | 
| 180     modulePath = path.basenameWithoutExtension(firstOutPath); | 180     modulePath = path.basenameWithoutExtension(firstOutPath); | 
| 181   } | 181   } | 
| 182 | 182 | 
| 183   var unit = new BuildUnit(modulePath, libraryRoot, argResults.rest, | 183   var unit = new BuildUnit( | 
| 184       (source) => _moduleForLibrary(moduleRoot, source, compilerOpts)); | 184       modulePath, | 
|  | 185       libraryRoot, | 
|  | 186       argResults.rest, | 
|  | 187       (source) => | 
|  | 188           _moduleForLibrary(moduleRoot, source, analyzerOptions, compilerOpts)); | 
| 185 | 189 | 
| 186   var module = compiler.compile(unit, compilerOpts); | 190   var module = compiler.compile(unit, compilerOpts); | 
| 187   module.errors.forEach(printFn); | 191   module.errors.forEach(printFn); | 
| 188 | 192 | 
| 189   if (!module.isValid) { | 193   if (!module.isValid) { | 
| 190     throw compilerOpts.unsafeForceCompile | 194     throw compilerOpts.unsafeForceCompile | 
| 191         ? new ForceCompileErrorException() | 195         ? new ForceCompileErrorException() | 
| 192         : new CompileErrorException(); | 196         : new CompileErrorException(); | 
| 193   } | 197   } | 
| 194 | 198 | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 210       var file = new File(summaryPath); | 214       var file = new File(summaryPath); | 
| 211       if (!file.existsSync() || | 215       if (!file.existsSync() || | 
| 212           _changed(file.readAsBytesSync(), module.summaryBytes)) { | 216           _changed(file.readAsBytesSync(), module.summaryBytes)) { | 
| 213         if (!file.parent.existsSync()) file.parent.createSync(recursive: true); | 217         if (!file.parent.existsSync()) file.parent.createSync(recursive: true); | 
| 214         file.writeAsBytesSync(module.summaryBytes); | 218         file.writeAsBytesSync(module.summaryBytes); | 
| 215       } | 219       } | 
| 216     } | 220     } | 
| 217   } | 221   } | 
| 218 } | 222 } | 
| 219 | 223 | 
| 220 String _moduleForLibrary( | 224 String _moduleForLibrary(String moduleRoot, Source source, | 
| 221     String moduleRoot, Source source, CompilerOptions compilerOpts) { | 225     AnalyzerOptions analyzerOptions, CompilerOptions compilerOpts) { | 
| 222   if (source is InSummarySource) { | 226   if (source is InSummarySource) { | 
| 223     var summaryPath = source.summaryPath; | 227     var summaryPath = source.summaryPath; | 
|  | 228 | 
|  | 229     if (analyzerOptions.customSummaryModules.containsKey(summaryPath)) { | 
|  | 230       return analyzerOptions.customSummaryModules[summaryPath]; | 
|  | 231     } | 
|  | 232 | 
| 224     var ext = '.${compilerOpts.summaryExtension}'; | 233     var ext = '.${compilerOpts.summaryExtension}'; | 
| 225     if (path.isWithin(moduleRoot, summaryPath) && summaryPath.endsWith(ext)) { | 234     if (path.isWithin(moduleRoot, summaryPath) && summaryPath.endsWith(ext)) { | 
| 226       var buildUnitPath = | 235       var buildUnitPath = | 
| 227           summaryPath.substring(0, summaryPath.length - ext.length); | 236           summaryPath.substring(0, summaryPath.length - ext.length); | 
| 228       return path.url | 237       return path.url | 
| 229           .joinAll(path.split(path.relative(buildUnitPath, from: moduleRoot))); | 238           .joinAll(path.split(path.relative(buildUnitPath, from: moduleRoot))); | 
| 230     } | 239     } | 
| 231 | 240 | 
| 232     _usageException('Imported file ${source.uri} is not within the module root ' | 241     _usageException('Imported file ${source.uri} is not within the module root ' | 
| 233         'directory $moduleRoot'); | 242         'directory $moduleRoot'); | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 265 /// Thrown when the input source code has errors. | 274 /// Thrown when the input source code has errors. | 
| 266 class CompileErrorException implements Exception { | 275 class CompileErrorException implements Exception { | 
| 267   toString() => '\nPlease fix all errors before compiling (warnings are okay).'; | 276   toString() => '\nPlease fix all errors before compiling (warnings are okay).'; | 
| 268 } | 277 } | 
| 269 | 278 | 
| 270 /// Thrown when force compilation failed (probably due to static errors). | 279 /// Thrown when force compilation failed (probably due to static errors). | 
| 271 class ForceCompileErrorException extends CompileErrorException { | 280 class ForceCompileErrorException extends CompileErrorException { | 
| 272   toString() => | 281   toString() => | 
| 273       '\nForce-compilation not successful. Please check static errors.'; | 282       '\nForce-compilation not successful. Please check static errors.'; | 
| 274 } | 283 } | 
| OLD | NEW | 
|---|