diff --git a/.travis.yml b/.travis.yml
index 2b14c55..a86e8d5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,8 +16,8 @@
 # Create a snapshot to improve startup time. Tests will automatically use this
 # snapshot if it's available.
 before_script:
-  - dart --no-checked --snapshot=bin/pub.dart.snapshot --snapshot-kind=app-jit bin/pub.dart --help
-  - dart --preview-dart-2 --snapshot=bin/pub.dart.snapshot.dart2 bin/pub.dart
+  - dart --no-preview-dart-2 --no-checked --snapshot=bin/pub.dart.snapshot --snapshot-kind=app-jit bin/pub.dart --help
+  - dart --snapshot=bin/pub.dart.snapshot.dart2 bin/pub.dart
 
 # Only building these branches means that we don't run two builds for each pull
 # request.
diff --git a/lib/src/dart.dart b/lib/src/dart.dart
index d9ff204..136a47c 100644
--- a/lib/src/dart.dart
+++ b/lib/src/dart.dart
@@ -49,12 +49,15 @@
     {Uri packagesFile, String name}) async {
   name = log.bold(name ?? executableUrl.toString());
 
-  var dart1Args = ['--snapshot=$snapshotPath', executableUrl.toString()];
+  var dart1Args = [
+    '--no-preview-dart-2',
+    '--snapshot=$snapshotPath',
+    executableUrl.toString()
+  ];
 
   var dart2Path = '$snapshotPath.dart2';
-  var dart2Args = isDart2
-      ? ['--preview-dart-2', '--snapshot=$dart2Path', executableUrl.toString()]
-      : null;
+  var dart2Args =
+      isDart2 ? ['--snapshot=$dart2Path', executableUrl.toString()] : null;
 
   if (packagesFile != null) {
     dart1Args.insert(0, "--packages=$packagesFile");
diff --git a/test/ascii_tree_test.dart b/test/ascii_tree_test.dart
index b4f5f6f..1be1c3f 100644
--- a/test/ascii_tree_test.dart
+++ b/test/ascii_tree_test.dart
@@ -150,27 +150,27 @@
 
     test('a complex example', () {
       var map = {
-        ".gitignore": {},
-        "README.md": {},
-        "TODO": {},
+        ".gitignore": <String, Map>{},
+        "README.md": <String, Map>{},
+        "TODO": <String, Map>{},
         "example": {
-          "console_example.dart": {},
-          "main.dart": {},
-          "web copy": {"web_example.dart": {}},
+          "console_example.dart": <String, Map>{},
+          "main.dart": <String, Map>{},
+          "web copy": {"web_example.dart": <String, Map>{}},
         },
-        "lib": {"path.dart": {}},
-        "pubspec.yaml": {},
+        "lib": {"path.dart": <String, Map>{}},
+        "pubspec.yaml": <String, Map>{},
         "test": {
-          "absolute_test.dart": {},
-          "basename_test.dart": {},
-          "dirname_test.dart": {},
-          "extension_test.dart": {},
-          "is_absolute_test.dart": {},
-          "is_relative_test.dart": {},
-          "join_test.dart": {},
-          "normalize_test.dart": {},
-          "relative_test.dart": {},
-          "split_test.dart": {}
+          "absolute_test.dart": <String, Map>{},
+          "basename_test.dart": <String, Map>{},
+          "dirname_test.dart": <String, Map>{},
+          "extension_test.dart": <String, Map>{},
+          "is_absolute_test.dart": <String, Map>{},
+          "is_relative_test.dart": <String, Map>{},
+          "join_test.dart": <String, Map>{},
+          "normalize_test.dart": <String, Map>{},
+          "relative_test.dart": <String, Map>{},
+          "split_test.dart": <String, Map>{}
         }
       };
 
@@ -204,18 +204,18 @@
   test('does not elide children if showAllChildren is true', () {
     var map = {
       'dir': {
-        'a.dart': {},
-        'b.dart': {},
-        'c.dart': {},
-        'd.dart': {},
-        'e.dart': {},
-        'f.dart': {},
-        'g.dart': {},
-        'h.dart': {},
-        'i.dart': {},
-        'j.dart': {},
-        'k.dart': {},
-        'l.dart': {},
+        'a.dart': <String, Map>{},
+        'b.dart': <String, Map>{},
+        'c.dart': <String, Map>{},
+        'd.dart': <String, Map>{},
+        'e.dart': <String, Map>{},
+        'f.dart': <String, Map>{},
+        'g.dart': <String, Map>{},
+        'h.dart': <String, Map>{},
+        'i.dart': <String, Map>{},
+        'j.dart': <String, Map>{},
+        'k.dart': <String, Map>{},
+        'l.dart': <String, Map>{},
       }
     };
     expect(tree.fromMap(map, showAllChildren: true), equals("""
diff --git a/test/test_pub.dart b/test/test_pub.dart
index 42574a1..809c5f9 100644
--- a/test/test_pub.dart
+++ b/test/test_pub.dart
@@ -378,7 +378,7 @@
   if (fileExists(snapshotPath)) pubPath = snapshotPath;
 
   var dartArgs = [await PackageResolver.current.processArgument];
-  if (dart2) dartArgs.add('--preview-dart-2');
+  if (!dart2) dartArgs.add('--no-preview-dart-2');
   dartArgs..addAll([pubPath, '--verbose'])..addAll(args);
 
   return await PubProcess.start(dartBin, dartArgs,
