diff --git a/lib/src/version_range.dart b/lib/src/version_range.dart
index 2c40884..78cd6d0 100644
--- a/lib/src/version_range.dart
+++ b/lib/src/version_range.dart
@@ -243,8 +243,10 @@
     if (other is VersionRange) {
       // If the two ranges don't overlap, we won't be able to create a single
       // VersionRange for both of them.
-      var edgesTouch = (max == other.min && (includeMax || other.includeMin)) ||
-          (min == other.max && (includeMin || other.includeMax));
+      var edgesTouch = (max != null &&
+              max == other.min &&
+              (includeMax || other.includeMin)) ||
+          (min != null && min == other.max && (includeMin || other.includeMax));
       if (!edgesTouch && !allowsAny(other)) {
         return VersionConstraint.unionOf([this, other]);
       }
diff --git a/test/version_range_test.dart b/test/version_range_test.dart
index bf280c2..67c7f35 100644
--- a/test/version_range_test.dart
+++ b/test/version_range_test.dart
@@ -562,6 +562,29 @@
       expect(result, allows(v140));
     });
 
+    test('returns a VersionUnion for a disjoint range with infinite end', () {
+      void isVersionUnion(VersionConstraint constraint) {
+        expect(constraint, allows(v080));
+        expect(constraint, doesNotAllow(v123));
+        expect(constraint, allows(v140));
+      }
+
+      for (final includeAMin in [true, false]) {
+        for (final includeAMax in [true, false]) {
+          for (final includeBMin in [true, false]) {
+            for (final includeBMax in [true, false]) {
+              final a = VersionRange(
+                  min: v130, includeMin: includeAMin, includeMax: includeAMax);
+              final b = VersionRange(
+                  max: v114, includeMin: includeBMin, includeMax: includeBMax);
+              isVersionUnion(a.union(b));
+              isVersionUnion(b.union(a));
+            }
+          }
+        }
+      }
+    });
+
     test('considers open ranges disjoint', () {
       var result = VersionRange(min: v003, max: v114)
           .union(VersionRange(min: v114, max: v200));
