OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 /// Dart classes representing the souce spans and source files. | 5 /// Dart classes representing the souce spans and source files. |
6 library source_maps.span; | 6 library source_maps.span; |
7 | 7 |
8 import 'dart:math' show min, max; | 8 import 'dart:math' show min, max; |
9 | 9 |
10 import 'package:path/path.dart' as p; | 10 import 'package:path/path.dart' as p; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 int d = start.compareTo(other.start); | 57 int d = start.compareTo(other.start); |
58 return d == 0 ? end.compareTo(other.end) : d; | 58 return d == 0 ? end.compareTo(other.end) : d; |
59 } | 59 } |
60 | 60 |
61 /// Gets the location in standard printed form `filename:line:column`, where | 61 /// Gets the location in standard printed form `filename:line:column`, where |
62 /// line and column are adjusted by 1 to match the convention in editors. | 62 /// line and column are adjusted by 1 to match the convention in editors. |
63 String get formatLocation => start.formatString; | 63 String get formatLocation => start.formatString; |
64 | 64 |
65 String getLocationMessage(String message, | 65 String getLocationMessage(String message, |
66 {bool useColors: false, String color}) { | 66 {bool useColors: false, String color}) { |
67 var source = url == null ? '' : ' of ${p.prettyUri(url)}'; | 67 var source = start.sourceUrl == null ? '' : |
| 68 ' of ${p.prettyUri(start.sourceUrl)}'; |
68 return 'line ${start.line + 1}, column ${start.column + 1}$source: ' + | 69 return 'line ${start.line + 1}, column ${start.column + 1}$source: ' + |
69 message; | 70 message; |
70 } | 71 } |
71 | 72 |
72 bool operator ==(Span other) => | 73 bool operator ==(Span other) => |
73 sourceUrl == other.sourceUrl && start == other.start && end == other.end; | 74 sourceUrl == other.sourceUrl && start == other.start && end == other.end; |
74 | 75 |
75 int get hashCode => sourceUrl.hashCode + start.offset + (31 * length); | 76 int get hashCode => sourceUrl.hashCode + start.offset + (31 * length); |
76 | 77 |
77 String toString() => '<$runtimeType: $start $end $formatLocation $text>'; | 78 String toString() => '<$runtimeType: $start $end $formatLocation $text>'; |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 return "Error on " + span.getLocationMessage(message, | 381 return "Error on " + span.getLocationMessage(message, |
381 useColors: useColors, color: color); | 382 useColors: useColors, color: color); |
382 } | 383 } |
383 } | 384 } |
384 | 385 |
385 /// A [SpanException] that's also a [FormatException]. | 386 /// A [SpanException] that's also a [FormatException]. |
386 class SpanFormatException extends SpanException implements FormatException { | 387 class SpanFormatException extends SpanException implements FormatException { |
387 SpanFormatException(String message, Span span) | 388 SpanFormatException(String message, Span span) |
388 : super(message, span); | 389 : super(message, span); |
389 } | 390 } |
OLD | NEW |