Index: source_span/lib/src/location.dart |
diff --git a/source_span/lib/src/location.dart b/source_span/lib/src/location.dart |
deleted file mode 100644 |
index afb37c768c97e4018075c094cea1eae25ed1adaf..0000000000000000000000000000000000000000 |
--- a/source_span/lib/src/location.dart |
+++ /dev/null |
@@ -1,100 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library source_span.location; |
- |
-import 'span.dart'; |
- |
-// TODO(nweiz): Use SourceLocationMixin once we decide to cut a release with |
-// breaking changes. See SourceLocationMixin for details. |
- |
-/// A class that describes a single location within a source file. |
-/// |
-/// This class should not be extended. Instead, [SourceLocationBase] should be |
-/// extended instead. |
-class SourceLocation implements Comparable<SourceLocation> { |
- /// URL of the source containing this location. |
- /// |
- /// This may be null, indicating that the source URL is unknown or |
- /// unavailable. |
- final Uri sourceUrl; |
- |
- /// The 0-based offset of this location in the source. |
- final int offset; |
- |
- /// The 0-based line of this location in the source. |
- final int line; |
- |
- /// The 0-based column of this location in the source |
- final int column; |
- |
- /// Returns a representation of this location in the `source:line:column` |
- /// format used by text editors. |
- /// |
- /// This prints 1-based lines and columns. |
- String get toolString { |
- var source = sourceUrl == null ? 'unknown source' : sourceUrl; |
- return '$source:${line + 1}:${column + 1}'; |
- } |
- |
- /// Creates a new location indicating [offset] within [sourceUrl]. |
- /// |
- /// [line] and [column] default to assuming the source is a single line. This |
- /// means that [line] defaults to 0 and [column] defaults to [offset]. |
- /// |
- /// [sourceUrl] may be either a [String], a [Uri], or `null`. |
- SourceLocation(int offset, {sourceUrl, int line, int column}) |
- : sourceUrl = sourceUrl is String ? Uri.parse(sourceUrl) : sourceUrl, |
- offset = offset, |
- line = line == null ? 0 : line, |
- column = column == null ? offset : column { |
- if (offset < 0) { |
- throw new RangeError("Offset may not be negative, was $offset."); |
- } else if (line != null && line < 0) { |
- throw new RangeError("Line may not be negative, was $line."); |
- } else if (column != null && column < 0) { |
- throw new RangeError("Column may not be negative, was $column."); |
- } |
- } |
- |
- /// Returns the distance in characters between [this] and [other]. |
- /// |
- /// This always returns a non-negative value. |
- int distance(SourceLocation other) { |
- if (sourceUrl != other.sourceUrl) { |
- throw new ArgumentError("Source URLs \"${sourceUrl}\" and " |
- "\"${other.sourceUrl}\" don't match."); |
- } |
- return (offset - other.offset).abs(); |
- } |
- |
- /// Returns a span that covers only a single point: this location. |
- SourceSpan pointSpan() => new SourceSpan(this, this, ""); |
- |
- /// Compares two locations. |
- /// |
- /// [other] must have the same source URL as [this]. |
- int compareTo(SourceLocation other) { |
- if (sourceUrl != other.sourceUrl) { |
- throw new ArgumentError("Source URLs \"${sourceUrl}\" and " |
- "\"${other.sourceUrl}\" don't match."); |
- } |
- return offset - other.offset; |
- } |
- |
- bool operator ==(other) => |
- other is SourceLocation && sourceUrl == other.sourceUrl && |
- offset == other.offset; |
- |
- int get hashCode => sourceUrl.hashCode + offset; |
- |
- String toString() => '<$runtimeType: $offset $toolString>'; |
-} |
- |
-/// A base class for source locations with [offset], [line], and [column] known |
-/// at construction time. |
-class SourceLocationBase extends SourceLocation { |
- SourceLocationBase(int offset, {sourceUrl, int line, int column}) |
- : super(offset, sourceUrl: sourceUrl, line: line, column: column); |
-} |