diff --git a/pkgs/string_scanner/CHANGELOG.md b/pkgs/string_scanner/CHANGELOG.md
index fa4cb6e..83ca15b 100644
--- a/pkgs/string_scanner/CHANGELOG.md
+++ b/pkgs/string_scanner/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.0.2
+
+* `SpanScanner` no longer crashes when creating a span that contains a UTF-16
+  surrogate pair.
+
 ## 1.0.1
 
 * Fix the error text emitted by `StringScanner.expectChar()`.
diff --git a/pkgs/string_scanner/lib/src/span_scanner.dart b/pkgs/string_scanner/lib/src/span_scanner.dart
index 043021b..f362223 100644
--- a/pkgs/string_scanner/lib/src/span_scanner.dart
+++ b/pkgs/string_scanner/lib/src/span_scanner.dart
@@ -56,7 +56,7 @@
   /// [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),
+      : _sourceFile = new SourceFile.fromString(string, url: sourceUrl),
         super(string, sourceUrl: sourceUrl, position: position);
 
   /// Creates a new [SpanScanner] that eagerly computes line and column numbers.
diff --git a/pkgs/string_scanner/lib/src/string_scanner.dart b/pkgs/string_scanner/lib/src/string_scanner.dart
index 5817d56..712292c 100644
--- a/pkgs/string_scanner/lib/src/string_scanner.dart
+++ b/pkgs/string_scanner/lib/src/string_scanner.dart
@@ -204,7 +204,7 @@
     }
     if (length == null) length = match == null ? 0 : match.end - match.start;
 
-    var sourceFile = new SourceFile(string, url: sourceUrl);
+    var sourceFile = new SourceFile.fromString(string, url: sourceUrl);
     var span = sourceFile.span(position, position + length);
     throw new StringScannerException(message, span, string);
   }
diff --git a/pkgs/string_scanner/pubspec.yaml b/pkgs/string_scanner/pubspec.yaml
index ac893e2..f0862ee 100644
--- a/pkgs/string_scanner/pubspec.yaml
+++ b/pkgs/string_scanner/pubspec.yaml
@@ -1,12 +1,12 @@
 name: string_scanner
-version: 1.0.1
+version: 1.0.2
 author: "Dart Team <misc@dartlang.org>"
 homepage: https://github.com/dart-lang/string_scanner
 description: >
   A class for parsing strings using a sequence of patterns.
 dependencies:
   charcode: "^1.1.0"
-  source_span: "^1.0.0"
+  source_span: "^1.4.0"
 dev_dependencies:
   test: ">=0.12.0 <0.13.0"
 environment:
diff --git a/pkgs/string_scanner/test/span_scanner_test.dart b/pkgs/string_scanner/test/span_scanner_test.dart
index 84d7b94..ab3cc80 100644
--- a/pkgs/string_scanner/test/span_scanner_test.dart
+++ b/pkgs/string_scanner/test/span_scanner_test.dart
@@ -9,12 +9,13 @@
 import 'utils.dart';
 
 void main() {
-  testForImplementation("lazy", () {
-    return new SpanScanner('foo\nbar\nbaz', sourceUrl: 'source');
+  testForImplementation("lazy", ([string]) {
+    return new SpanScanner(string ?? 'foo\nbar\nbaz', sourceUrl: 'source');
   });
 
-  testForImplementation("eager", () {
-    return new SpanScanner.eager('foo\nbar\nbaz', sourceUrl: 'source');
+  testForImplementation("eager", ([string]) {
+    return new SpanScanner.eager(string ?? 'foo\nbar\nbaz',
+        sourceUrl: 'source');
   });
 
   group("within", () {
@@ -23,7 +24,7 @@
 
     var scanner;
     setUp(() {
-      var file = new SourceFile(text, url: 'source');
+      var file = new SourceFile.fromString(text, url: 'source');
       scanner = new SpanScanner.within(
           file.span(startOffset, text.indexOf(' :after')));
     });
@@ -136,6 +137,15 @@
       expect(span.text, equals('o\nbar\nba'));
     });
 
+    test(".spanFrom() handles surrogate pairs correctly", () {
+      scanner = create('fo\u{12345}o');
+      scanner.scan('fo');
+      var state = scanner.state;
+      scanner.scan('\u{12345}o');
+      var span = scanner.spanFrom(state);
+      expect(span.text, equals('\u{12345}o'));
+    });
+
     test(".emptySpan returns an empty span at the current location", () {
       scanner.scan('foo\nba');
 
