| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library source_span.file; | 5 library source_span.file; |
| 6 | 6 |
| 7 import 'dart:math' as math; | 7 import 'dart:math' as math; |
| 8 import 'dart:typed_data'; | 8 import 'dart:typed_data'; |
| 9 | 9 |
| 10 import 'location.dart'; | 10 import 'location.dart'; |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 bool operator ==(other) { | 256 bool operator ==(other) { |
| 257 if (other is! FileSpan) return super == other; | 257 if (other is! FileSpan) return super == other; |
| 258 if (other is! _FileSpan) { | 258 if (other is! _FileSpan) { |
| 259 return super == other && sourceUrl == other.sourceUrl; | 259 return super == other && sourceUrl == other.sourceUrl; |
| 260 } | 260 } |
| 261 | 261 |
| 262 return _start == other._start && _end == other._end && | 262 return _start == other._start && _end == other._end && |
| 263 sourceUrl == other.sourceUrl; | 263 sourceUrl == other.sourceUrl; |
| 264 } | 264 } |
| 265 | 265 |
| 266 // Eliminates dart2js warning about overriding `==`, but not `hashCode` |
| 267 int get hashCode => super.hashCode; |
| 268 |
| 266 /// Returns a new span that covers both [this] and [other]. | 269 /// Returns a new span that covers both [this] and [other]. |
| 267 /// | 270 /// |
| 268 /// Unlike [union], [other] may be disjoint from [this]. If it is, the text | 271 /// Unlike [union], [other] may be disjoint from [this]. If it is, the text |
| 269 /// between the two will be covered by the returned span. | 272 /// between the two will be covered by the returned span. |
| 270 FileSpan expand(FileSpan other) { | 273 FileSpan expand(FileSpan other) { |
| 271 if (sourceUrl != other.sourceUrl) { | 274 if (sourceUrl != other.sourceUrl) { |
| 272 throw new ArgumentError("Source URLs \"${sourceUrl}\" and " | 275 throw new ArgumentError("Source URLs \"${sourceUrl}\" and " |
| 273 " \"${other.sourceUrl}\" don't match."); | 276 " \"${other.sourceUrl}\" don't match."); |
| 274 } | 277 } |
| 275 | 278 |
| 276 if (other is _FileSpan) { | 279 if (other is _FileSpan) { |
| 277 var start = math.min(this._start, other._start); | 280 var start = math.min(this._start, other._start); |
| 278 var end = math.max(this._end, other._end); | 281 var end = math.max(this._end, other._end); |
| 279 return new _FileSpan(file, start, end); | 282 return new _FileSpan(file, start, end); |
| 280 } else { | 283 } else { |
| 281 var start = math.min(this._start, other.start.offset); | 284 var start = math.min(this._start, other.start.offset); |
| 282 var end = math.max(this._end, other.end.offset); | 285 var end = math.max(this._end, other.end.offset); |
| 283 return new _FileSpan(file, start, end); | 286 return new _FileSpan(file, start, end); |
| 284 } | 287 } |
| 285 } | 288 } |
| 286 } | 289 } |
| OLD | NEW |