Add SpanScanner.location.

Also explicitly expose FileSpans and FileLocations.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//683323002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/string_scanner@41383 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f1d8763..d7f09f3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## 0.1.1
+
+* Declare `SpanScanner`'s exposed `SourceSpan`s and `SourceLocation`s to be
+  `FileSpan`s and `FileLocation`s. They always were underneath, but callers may
+  now rely on it.
+
+* Add `SpanScanner.location`, which returns the scanner's current
+  `SourceLocation`.
+
 ## 0.1.0
 
 * Switch from `source_maps`' `Span` class to `source_span`'s `SourceSpan` class.
diff --git a/lib/src/span_scanner.dart b/lib/src/span_scanner.dart
index d8dc230..a70d5fd 100644
--- a/lib/src/span_scanner.dart
+++ b/lib/src/span_scanner.dart
@@ -34,28 +34,31 @@
     this.position = state.position;
   }
 
-  /// The [SourceSpan] for [lastMatch].
+  /// The [FileSpan] for [lastMatch].
   ///
   /// This is the span for the entire match. There's no way to get spans for
   /// subgroups since [Match] exposes no information about their positions.
-  SourceSpan get lastSpan => _lastSpan;
-  SourceSpan _lastSpan;
+  FileSpan get lastSpan => _lastSpan;
+  FileSpan _lastSpan;
+
+  /// The current location of the scanner.
+  FileLocation get location => _sourceFile.location(position);
 
   /// Returns an empty span at the current location.
-  SourceSpan get emptySpan => _sourceFile.location(position).pointSpan();
+  FileSpan get emptySpan => location.pointSpan();
 
   /// Creates a new [SpanScanner] that starts scanning from [position].
   ///
   /// [sourceUrl] is used as [SourceLocation.sourceUrl] for the returned
-  /// [SourceSpan]s as well as for error reporting. It can be a [String], a
+  /// [FileSpan]s as well as for error reporting. It can be a [String], a
   /// [Uri], or `null`.
   SpanScanner(String string, {sourceUrl, int position})
       : _sourceFile = new SourceFile(string, url: sourceUrl),
         super(string, sourceUrl: sourceUrl, position: position);
 
-  /// Creates a [SourceSpan] representing the source range between [startState]
+  /// Creates a [FileSpan] representing the source range between [startState]
   /// and the current position.
-  SourceSpan spanFrom(LineScannerState startState) =>
+  FileSpan spanFrom(LineScannerState startState) =>
       _sourceFile.span(startState.position, position);
 
   bool matches(Pattern pattern) {
diff --git a/pubspec.yaml b/pubspec.yaml
index 1451fc5..831dfac 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: string_scanner
-version: 0.1.0
+version: 0.1.1
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://www.dartlang.org
 description: >