Remove support for legacy arguments (#9)

Closes #8

Remove deprecated `packageRoot` argument, nothing should be using this.

Change `sdkUri` to be statically a `Uri` for more type safety. We only
ever really need the String representation, but by enforcing the type we
keep usage more on the rails. The only usage in `package:test_core` is
passing a Uri, and other uses can easily wrap with `Uri.parse`.

Bump the minimum SDK to `2.4.0`. Not version of `package:test` will
support this package with a lower SDK bound, so it is not useful to
claim support for earlier SDKs that we can't test on.
diff --git a/.travis.yml b/.travis.yml
index e518c82..a16db93 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,7 @@
 
 dart:
   - dev
-  - 2.0.0
+  - 2.4.0
 
 dart_task:
   - test: -p chrome,vm
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a3dc43c..9af1b28 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,8 @@
-## 1.1.6-dev
+## 2.0.0-dev
+
+* **Breaking** The `sdkRoot` argument must be an `Uri`. Use `Uri.parse` for use
+  cases previously passing a `String`.
+* **Breaking** The deprecated `packageRoot` argument has been removed.
 
 ## 1.1.5
 
diff --git a/lib/source_map_stack_trace.dart b/lib/source_map_stack_trace.dart
index 1b08952..ae6967a 100644
--- a/lib/source_map_stack_trace.dart
+++ b/lib/source_map_stack_trace.dart
@@ -16,26 +16,10 @@
 /// If [packageResolver] is passed, it's used to reconstruct `package:` URIs for
 /// stack frames that come from packages.
 ///
-/// [sdkRoot] is the URI (usually a `file:` URI) for the SDK containing dart2js.
-/// It can be a [String] or a [Uri]. If it's passed, stack frames from the SDK
-/// will have `dart:` URLs.
-///
-/// `packageRoot` is deprecated and shouldn't be used in new code. This throws
-/// an [ArgumentError] if `packageRoot` and [packageResolver] are both passed.
+/// [sdkRoot] is the URI surfaced in the stack traces for SDK libraries.
+/// If it's passed, stack frames from the SDK will have `dart:` URLs.
 StackTrace mapStackTrace(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false,
-    SyncPackageResolver packageResolver,
-    sdkRoot,
-    @Deprecated('Use the packageResolver parameter instead.') packageRoot}) {
-  if (packageRoot != null) {
-    if (packageResolver != null) {
-      throw ArgumentError(
-          'packageResolver and packageRoot may not both be passed.');
-    }
-
-    packageResolver = SyncPackageResolver.root(packageRoot);
-  }
-
+    {bool minified = false, SyncPackageResolver packageResolver, Uri sdkRoot}) {
   if (stackTrace is Chain) {
     return Chain(stackTrace.traces.map((trace) {
       return Trace.from(mapStackTrace(sourceMap, trace,
@@ -45,10 +29,6 @@
     }));
   }
 
-  if (sdkRoot != null && sdkRoot is! String && sdkRoot is! Uri) {
-    throw ArgumentError('sdkRoot must be a String or a Uri, was "$sdkRoot".');
-  }
-
   var sdkLib = sdkRoot == null ? null : '$sdkRoot/lib';
 
   var trace = Trace.from(stackTrace);
diff --git a/pubspec.yaml b/pubspec.yaml
index aa69de5..3c1c82d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,12 +1,12 @@
 name: source_map_stack_trace
-version: 1.1.6-dev
+version: 2.0.0-dev
 
 description: A package for applying source maps to stack traces.
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/source_map_stack_trace
 
 environment:
-  sdk: '>=2.0.0 <3.0.0'
+  sdk: '>=2.4.0 <3.0.0'
 
 dependencies:
   package_resolver: ^1.0.0
@@ -15,5 +15,8 @@
   source_maps: ^0.10.2
 
 dev_dependencies:
-  test: '>=0.12.0 <2.0.0'
+  test: ^1.12.0
   pedantic: ^1.0.0
+
+dependency_overrides:
+  test_core: ^0.3.0
diff --git a/test/source_map_stack_trace_test.dart b/test/source_map_stack_trace_test.dart
index 0bb3081..a7b8deb 100644
--- a/test/source_map_stack_trace_test.dart
+++ b/test/source_map_stack_trace_test.dart
@@ -127,25 +127,6 @@
     expect(frame.column, equals(4));
   });
 
-  test('uses package: URIs for frames within packageRoot', () {
-    var trace = Trace.parse('foo.dart.js 10  foo');
-    var builder = SourceMapBuilder()
-      ..addSpan(
-          SourceMapSpan.identifier(
-              SourceLocation(1,
-                  line: 1, column: 3, sourceUrl: 'packages/foo/foo.dart'),
-              'qux'),
-          SourceSpan(SourceLocation(8, line: 5, column: 0),
-              SourceLocation(12, line: 9, column: 1), '\n' * 4));
-
-    var mapping = parseJson(builder.build('foo.dart.js.map'));
-    var frame =
-        _mapTrace(mapping, trace, packageRoot: 'packages/').frames.first;
-    expect(frame.uri, equals(Uri.parse('package:foo/foo.dart')));
-    expect(frame.line, equals(2));
-    expect(frame.column, equals(4));
-  });
-
   test('uses package: URIs for frames within packageResolver.packageRoot', () {
     var trace = Trace.parse('foo.dart.js 10  foo');
     var builder = SourceMapBuilder()
@@ -200,7 +181,8 @@
               SourceLocation(12, line: 9, column: 1), '\n' * 4));
 
     var mapping = parseJson(builder.build('foo.dart.js.map'));
-    var frame = _mapTrace(mapping, trace, sdkRoot: 'sdk/').frames.first;
+    var frame =
+        _mapTrace(mapping, trace, sdkRoot: Uri.parse('sdk/')).frames.first;
     expect(frame.uri, equals(Uri.parse('dart:async/foo.dart')));
     expect(frame.line, equals(2));
     expect(frame.column, equals(4));
@@ -282,31 +264,17 @@
 /// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be
 /// inspected.
 Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false,
-    SyncPackageResolver packageResolver,
-    sdkRoot,
-    packageRoot}) {
+    {bool minified = false, SyncPackageResolver packageResolver, Uri sdkRoot}) {
   return Trace.from(mapStackTrace(sourceMap, stackTrace,
-      minified: minified,
-      packageResolver: packageResolver,
-      sdkRoot: sdkRoot,
-      // ignore: deprecated_member_use_from_same_package
-      packageRoot: packageRoot));
+      minified: minified, packageResolver: packageResolver, sdkRoot: sdkRoot));
 }
 
 /// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be
 /// inspected.
 Chain _mapChain(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false,
-    SyncPackageResolver packageResolver,
-    sdkRoot,
-    packageRoot}) {
+    {bool minified = false, SyncPackageResolver packageResolver, Uri sdkRoot}) {
   return Chain.forTrace(mapStackTrace(sourceMap, stackTrace,
-      minified: minified,
-      packageResolver: packageResolver,
-      sdkRoot: sdkRoot,
-      // ignore: deprecated_member_use_from_same_package
-      packageRoot: packageRoot));
+      minified: minified, packageResolver: packageResolver, sdkRoot: sdkRoot));
 }
 
 /// Runs the mapper's prettification logic on [member] and returns the result.