diff --git a/pkgs/yaml/lib/src/deep_equals.dart b/pkgs/yaml/lib/src/deep_equals.dart
index bce4aad..1e1f7ed 100644
--- a/pkgs/yaml/lib/src/deep_equals.dart
+++ b/pkgs/yaml/lib/src/deep_equals.dart
@@ -4,8 +4,10 @@
 
 library deep_equals;
 
-/// Returns whether two objects are structurally equivalent. This considers NaN
-/// values to be equivalent. It also handles self-referential structures.
+/// Returns whether two objects are structurally equivalent.
+///
+/// This considers `NaN` values to be equivalent. It also handles
+/// self-referential structures.
 bool deepEquals(obj1, obj2, [List parents1, List parents2]) {
   if (identical(obj1, obj2)) return true;
   if (parents1 == null) {
@@ -30,8 +32,8 @@
       return _listEquals(obj1, obj2, parents1, parents2);
     } else if (obj1 is Map && obj2 is Map) {
       return _mapEquals(obj1, obj2, parents1, parents2);
-    } else if (obj1 is double && obj2 is double) {
-      return _doubleEquals(obj1, obj2);
+    } else if (obj1 is num && obj2 is num) {
+      return _numEquals(obj1, obj2);
     } else {
       return obj1 == obj2;
     }
@@ -64,9 +66,11 @@
   return true;
 }
 
-/// Returns whether two doubles are equivalent. This differs from `d1 == d2` in
-/// that it considers NaN to be equal to itself.
-bool _doubleEquals(double d1, double d2) {
-  if (d1.isNaN && d2.isNaN) return true;
-  return d1 == d2;
+/// Returns whether two numbers are equivalent.
+///
+/// This differs from `n1 == n2` in that it considers `NaN` to be equal to
+/// itself.
+bool _numEquals(num n1, num n2) {
+  if (n1.isNaN && n2.isNaN) return true;
+  return n1 == n2;
 }
diff --git a/pkgs/yaml/lib/src/parser.dart b/pkgs/yaml/lib/src/parser.dart
index 2616038..162fef4 100644
--- a/pkgs/yaml/lib/src/parser.dart
+++ b/pkgs/yaml/lib/src/parser.dart
@@ -1106,13 +1106,14 @@
   // 136
   int inFlow(int ctx) {
     switch (ctx) {
-    case FLOW_OUT:
-    case FLOW_IN:
-      return FLOW_IN;
-    case BLOCK_KEY:
-    case FLOW_KEY:
-      return FLOW_KEY;
+      case FLOW_OUT:
+      case FLOW_IN:
+        return FLOW_IN;
+      case BLOCK_KEY:
+      case FLOW_KEY:
+        return FLOW_KEY;
     }
+    throw "unreachable";
   }
 
   // 137
@@ -1434,6 +1435,7 @@
     case CHOMPING_KEEP:
       return b_asLineFeed();
     }
+    throw "unreachable";
   }
 
   // 166
diff --git a/pkgs/yaml/lib/src/yaml_map.dart b/pkgs/yaml/lib/src/yaml_map.dart
index ab07c72..5e3e20a 100644
--- a/pkgs/yaml/lib/src/yaml_map.dart
+++ b/pkgs/yaml/lib/src/yaml_map.dart
@@ -55,7 +55,7 @@
   /// Wraps an object for use as a key in the map.
   _wrapKey(obj) {
     if (obj != null && obj is! bool && obj is! List &&
-        (obj is! double || !obj.isNan) &&
+        (obj is! num || !obj.isNaN) &&
         (obj is! Map || obj is YamlMap)) {
       return obj;
     } else if (obj is Map) {
