| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 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 | 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 /// Holds a couple utility functions used at various places in the system. | 5 /// Holds a couple utility functions used at various places in the system. |
| 6 library dev_compiler.src.utils; | 6 library dev_compiler.src.utils; |
| 7 | 7 |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 | 9 |
| 10 import 'package:path/path.dart' as path; | 10 import 'package:path/path.dart' as path; |
| 11 import 'package:analyzer/src/generated/ast.dart' | 11 import 'package:analyzer/src/generated/ast.dart' |
| 12 show | 12 show |
| 13 ImportDirective, | 13 ImportDirective, |
| 14 ExportDirective, | 14 ExportDirective, |
| 15 PartDirective, | 15 PartDirective, |
| 16 CompilationUnit, | 16 CompilationUnit, |
| 17 Identifier, | 17 Identifier, |
| 18 AnnotatedNode, | 18 AnnotatedNode, |
| 19 AstNode; | 19 AstNode, |
| 20 Expression, |
| 21 SimpleIdentifier; |
| 20 import 'package:analyzer/src/generated/engine.dart' | 22 import 'package:analyzer/src/generated/engine.dart' |
| 21 show ParseDartTask, AnalysisContext; | 23 show ParseDartTask, AnalysisContext; |
| 22 import 'package:analyzer/src/generated/source.dart' show Source; | 24 import 'package:analyzer/src/generated/source.dart' show Source; |
| 23 import 'package:analyzer/src/generated/element.dart'; | 25 import 'package:analyzer/src/generated/element.dart'; |
| 24 import 'package:analyzer/analyzer.dart' show parseDirectives; | 26 import 'package:analyzer/analyzer.dart' show parseDirectives; |
| 25 import 'package:crypto/crypto.dart' show CryptoUtils, MD5; | 27 import 'package:crypto/crypto.dart' show CryptoUtils, MD5; |
| 26 import 'package:source_span/source_span.dart'; | 28 import 'package:source_span/source_span.dart'; |
| 27 import 'package:yaml/yaml.dart'; | 29 import 'package:yaml/yaml.dart'; |
| 28 | 30 |
| 29 import 'codegen/js_names.dart' show invalidJSVariableName; | 31 import 'codegen/js_names.dart' show invalidJSVariableName; |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 } catch (e) { | 196 } catch (e) { |
| 195 // TODO(sigmund): remove this try-catch block (see issue #48). | 197 // TODO(sigmund): remove this try-catch block (see issue #48). |
| 196 } | 198 } |
| 197 if (baseMethod == null || baseMethod.isStatic) return null; | 199 if (baseMethod == null || baseMethod.isStatic) return null; |
| 198 return baseMethod.type; | 200 return baseMethod.type; |
| 199 } | 201 } |
| 200 ; | 202 ; |
| 201 return f; | 203 return f; |
| 202 } | 204 } |
| 203 | 205 |
| 206 bool isDynamicTarget(Expression target) { |
| 207 return target != null && |
| 208 !(target is SimpleIdentifier && target.staticElement is PrefixElement) && |
| 209 target.staticType.isDynamic; |
| 210 } |
| 211 |
| 204 /// Returns an ANSII color escape sequence corresponding to [levelName]. Colors | 212 /// Returns an ANSII color escape sequence corresponding to [levelName]. Colors |
| 205 /// are defined for: severe, error, warning, or info. Returns null if the level | 213 /// are defined for: severe, error, warning, or info. Returns null if the level |
| 206 /// name is not recognized. | 214 /// name is not recognized. |
| 207 String colorOf(String levelName) { | 215 String colorOf(String levelName) { |
| 208 levelName = levelName.toLowerCase(); | 216 levelName = levelName.toLowerCase(); |
| 209 if (levelName == 'shout' || levelName == 'severe' || levelName == 'error') { | 217 if (levelName == 'shout' || levelName == 'severe' || levelName == 'error') { |
| 210 return _RED_COLOR; | 218 return _RED_COLOR; |
| 211 } | 219 } |
| 212 if (levelName == 'warning') return _MAGENTA_COLOR; | 220 if (levelName == 'warning') return _MAGENTA_COLOR; |
| 213 if (levelName == 'info') return _CYAN_COLOR; | 221 if (levelName == 'info') return _CYAN_COLOR; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 // TODO(jmesserly): can we implement this without repeatedly reading pubspec? | 337 // TODO(jmesserly): can we implement this without repeatedly reading pubspec? |
| 330 // It seems like we should know our package's root directory without needing | 338 // It seems like we should know our package's root directory without needing |
| 331 // to search like this. | 339 // to search like this. |
| 332 var pubspec = | 340 var pubspec = |
| 333 loadYaml(new File(path.join(dir, 'pubspec.yaml')).readAsStringSync()); | 341 loadYaml(new File(path.join(dir, 'pubspec.yaml')).readAsStringSync()); |
| 334 | 342 |
| 335 // Ensure this is loaded from the dev_compiler package. | 343 // Ensure this is loaded from the dev_compiler package. |
| 336 if (pubspec['name'] != 'dev_compiler') return null; | 344 if (pubspec['name'] != 'dev_compiler') return null; |
| 337 return path.join('dev_compiler', 'runtime', filename); | 345 return path.join('dev_compiler', 'runtime', filename); |
| 338 } | 346 } |
| OLD | NEW |