Don't include extra whitespace in YAML scalar spans.

R=rnystrom@google.com
BUG=21841

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/yaml@42307 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/yaml/CHANGELOG.md b/pkgs/yaml/CHANGELOG.md
index f454255..80548ed 100644
--- a/pkgs/yaml/CHANGELOG.md
+++ b/pkgs/yaml/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.1
+
+* Properly scope `SourceSpan`s for scalar values surrounded by whitespace.
+
 ## 2.1.0
 
 * Rewrite the parser for a 10x speed improvement.
diff --git a/pkgs/yaml/lib/src/scanner.dart b/pkgs/yaml/lib/src/scanner.dart
index 0068553..6c702c8 100644
--- a/pkgs/yaml/lib/src/scanner.dart
+++ b/pkgs/yaml/lib/src/scanner.dart
@@ -1156,6 +1156,7 @@
     var leadingBreak = '';
     var leadingBlank = false;
     var trailingBlank = false;
+    var end = _scanner.position;
     while (_scanner.column == indent && !_scanner.isDone) {
       // Check for a document indicator. libyaml doesn't do this, but the spec
       // mandates it. See example 9.5:
@@ -1188,6 +1189,7 @@
         _scanner.readChar();
       }
       buffer.write(_scanner.substring(startPosition));
+      end = _scanner.position;
 
       // libyaml always reads a line here, but this breaks on block scalars at
       // the end of the document that end without newlines. See example 8.1:
@@ -1204,7 +1206,7 @@
     if (chomping != _Chomping.STRIP) buffer.write(leadingBreak);
     if (chomping == _Chomping.KEEP) buffer.write(trailingBreaks);
 
-    return new ScalarToken(_scanner.spanFrom(start), buffer.toString(),
+    return new ScalarToken(_scanner.spanFrom(start, end), buffer.toString(),
         literal ? ScalarStyle.LITERAL : ScalarStyle.FOLDED);
   }
 
@@ -1430,6 +1432,7 @@
   /// Scans a plain scalar.
   Token _scanPlainScalar() {
     var start = _scanner.state;
+    var end = _scanner.state;
     var buffer = new StringBuffer();
     var leadingBreak = '';
     var trailingBreaks = '';
@@ -1466,6 +1469,7 @@
         _scanner.readChar();
       }
       buffer.write(_scanner.substring(startPosition));
+      end = _scanner.state;
 
       // Is it the end?
       if (!_isBlank && !_isBreak) break;
@@ -1501,7 +1505,7 @@
     // Allow a simple key after a plain scalar with leading blanks.
     if (leadingBreak.isNotEmpty) _simpleKeyAllowed = true;
 
-    return new ScalarToken(_scanner.spanFrom(start), buffer.toString(),
+    return new ScalarToken(_scanner.spanFrom(start, end), buffer.toString(),
         ScalarStyle.PLAIN);
   }
 
diff --git a/pkgs/yaml/pubspec.yaml b/pkgs/yaml/pubspec.yaml
index d0d51c5..f149b1f 100644
--- a/pkgs/yaml/pubspec.yaml
+++ b/pkgs/yaml/pubspec.yaml
@@ -1,12 +1,12 @@
 name: yaml
-version: 2.1.0
+version: 2.1.1
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://www.dartlang.org
 description: A parser for YAML.
 dependencies:
   collection: ">=1.1.0 <2.0.0"
   path: ">=1.2.0 <2.0.0"
-  string_scanner: ">=0.1.2 <0.2.0"
+  string_scanner: ">=0.1.3 <0.2.0"
   source_span: ">=1.0.0 <2.0.0"
 dev_dependencies:
   unittest: ">=0.9.0 <0.12.0"