| 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; |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 /// value of that field. | 368 /// value of that field. |
| 369 /// | 369 /// |
| 370 /// If the field is missing or is not [expectedType], returns null. | 370 /// If the field is missing or is not [expectedType], returns null. |
| 371 Object getConstantField( | 371 Object getConstantField( |
| 372 DartObjectImpl value, String fieldName, DartType expectedType) { | 372 DartObjectImpl value, String fieldName, DartType expectedType) { |
| 373 if (value == null) return null; | 373 if (value == null) return null; |
| 374 var f = value.fields[fieldName]; | 374 var f = value.fields[fieldName]; |
| 375 return (f == null || f.type != expectedType) ? null : f.value; | 375 return (f == null || f.type != expectedType) ? null : f.value; |
| 376 } | 376 } |
| 377 | 377 |
| 378 ParameterizedType fillDynamicTypeArgs(ParameterizedType t, TypeProvider types) { | 378 DartType fillDynamicTypeArgs(DartType t, TypeProvider types) { |
| 379 var dyn = new List.filled(t.typeArguments.length, types.dynamicType); | 379 if (t is ParameterizedType) { |
| 380 return t.substitute2(dyn, t.typeArguments); | 380 var dyn = new List.filled(t.typeArguments.length, types.dynamicType); |
| 381 return t.substitute2(dyn, t.typeArguments); |
| 382 } |
| 383 return t; |
| 381 } | 384 } |
| 382 | 385 |
| 383 /// Similar to [SimpleIdentifier] inGetterContext, inSetterContext, and | 386 /// Similar to [SimpleIdentifier] inGetterContext, inSetterContext, and |
| 384 /// inDeclarationContext, this method returns true if [node] is used in an | 387 /// inDeclarationContext, this method returns true if [node] is used in an |
| 385 /// invocation context such as a MethodInvocation. | 388 /// invocation context such as a MethodInvocation. |
| 386 bool inInvocationContext(SimpleIdentifier node) { | 389 bool inInvocationContext(SimpleIdentifier node) { |
| 387 var parent = node.parent; | 390 var parent = node.parent; |
| 388 return parent is MethodInvocation && parent.methodName == node; | 391 return parent is MethodInvocation && parent.methodName == node; |
| 389 } | 392 } |
| 390 | 393 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 int lineEnd = endLoc.offset; | 453 int lineEnd = endLoc.offset; |
| 451 int unitEnd = unit.endToken.end; | 454 int unitEnd = unit.endToken.end; |
| 452 int lineNum = lineInfo.getLocation(lineEnd).lineNumber; | 455 int lineNum = lineInfo.getLocation(lineEnd).lineNumber; |
| 453 while (lineEnd < unitEnd && | 456 while (lineEnd < unitEnd && |
| 454 lineInfo.getLocation(++lineEnd).lineNumber == lineNum); | 457 lineInfo.getLocation(++lineEnd).lineNumber == lineNum); |
| 455 | 458 |
| 456 var text = content.substring(start, end); | 459 var text = content.substring(start, end); |
| 457 var lineText = content.substring(lineStart, lineEnd); | 460 var lineText = content.substring(lineStart, lineEnd); |
| 458 return new SourceSpanWithContext(startLoc, endLoc, text, lineText); | 461 return new SourceSpanWithContext(startLoc, endLoc, text, lineText); |
| 459 } | 462 } |
| OLD | NEW |