don't warn if previous prerelease was null safe (#2730)

diff --git a/lib/src/validator/relative_version_numbering.dart b/lib/src/validator/relative_version_numbering.dart
index fc3a902..1eff1e0 100644
--- a/lib/src/validator/relative_version_numbering.dart
+++ b/lib/src/validator/relative_version_numbering.dart
@@ -38,8 +38,7 @@
     }
     existingVersions..sort((a, b) => a.version.compareTo(b.version));
     final previousVersion = existingVersions.lastWhere(
-        (id) =>
-            !id.version.isPreRelease && id.version < entrypoint.root.version,
+        (id) => id.version < entrypoint.root.version,
         orElse: () => null);
     if (previousVersion == null) return;
 
diff --git a/test/validator/relative_version_numbering_test.dart b/test/validator/relative_version_numbering_test.dart
index 3cb69b2..35994e2 100644
--- a/test/validator/relative_version_numbering_test.dart
+++ b/test/validator/relative_version_numbering_test.dart
@@ -71,31 +71,6 @@
       await expectValidation(validator);
     });
 
-    test(
-        'is not opting in to null-safety with previous non-null-safe version. '
-        'Even with an in-between null-safe prerelease', () async {
-      await servePackages(
-        (server) => server
-          ..serve(
-            'test_pkg',
-            '0.0.1',
-            pubspec: {
-              'environment': {'sdk': '>=2.9.0<3.0.0'}
-            },
-          )
-          ..serve(
-            'test_pkg',
-            '0.0.2-dev',
-            pubspec: {
-              'environment': {'sdk': '>=2.12.0<3.0.0'}
-            },
-          ),
-      );
-
-      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
-      await expectValidation(validator);
-    });
-
     test('is opting in to null-safety with previous null-safe version',
         () async {
       await servePackages(
@@ -154,9 +129,22 @@
       await expectValidation(validator);
     });
 
+    test('is opting in to null-safety with no existing versions', () async {
+      await setup(sdkConstraint: '>=2.12.0 <3.0.0');
+      await servePackages((x) => x);
+      await expectValidation(validator);
+    });
+
+    test('is not opting in to null-safety with no existing versions', () async {
+      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+      await servePackages((x) => x);
+
+      await expectValidation(validator);
+    });
+
     test(
-        'is opting in to null-safety with previous null-safe version. '
-        'Even with an in-between non-null-safe prerelease', () async {
+        'is not opting in to null-safety with previous null-safe stable version. '
+        'With an in-between not null-safe prerelease', () async {
       await servePackages(
         (server) => server
           ..serve(
@@ -175,53 +163,32 @@
           ),
       );
 
-      await setup(sdkConstraint: '>=2.12.0 <3.0.0');
-      await expectValidation(validator);
-    });
-
-    test('is opting in to null-safety with no existing versions', () async {
-      await setup(sdkConstraint: '>=2.12.0 <3.0.0');
-      await servePackages((x) => x);
+      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
       await expectValidation(validator);
     });
 
     test(
-        'is opting in to null-safety with no existing versions. '
-        'Even with an in-between non-null-safe prerelease', () async {
+        'opts in to null-safety, with previous stable version not-null-safe. '
+        'With an in-between non-null-safe prerelease', () async {
+      await servePackages(
+        (server) => server
+          ..serve(
+            'test_pkg',
+            '0.0.1',
+            pubspec: {
+              'environment': {'sdk': '>=2.9.0<3.0.0'}
+            },
+          )
+          ..serve(
+            'test_pkg',
+            '0.0.2-dev',
+            pubspec: {
+              'environment': {'sdk': '>=2.12.0<3.0.0'}
+            },
+          ),
+      );
+
       await setup(sdkConstraint: '>=2.12.0 <3.0.0');
-      await servePackages(
-        (server) => server.serve(
-          'test_pkg',
-          '0.0.2-dev',
-          pubspec: {
-            'environment': {'sdk': '>=2.9.0<3.0.0'}
-          },
-        ),
-      );
-      await expectValidation(validator);
-    });
-
-    test('is not opting in to null-safety with no existing versions', () async {
-      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
-      await servePackages((x) => x);
-
-      await expectValidation(validator);
-    });
-
-    test(
-        'is not opting in to null-safety with no existing versions. '
-        'Even with an in-between null-safe prerelease', () async {
-      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
-      await servePackages(
-        (server) => server.serve(
-          'test_pkg',
-          '0.0.2-dev',
-          pubspec: {
-            'environment': {'sdk': '>=2.12.0<3.0.0'}
-          },
-        ),
-      );
-
       await expectValidation(validator);
     });
   });
@@ -244,6 +211,47 @@
     });
 
     test(
+        'is not opting in to null-safety with no existing stable versions. '
+        'With a previous in-between null-safe prerelease', () async {
+      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+      await servePackages(
+        (server) => server.serve(
+          'test_pkg',
+          '0.0.2-dev',
+          pubspec: {
+            'environment': {'sdk': '>=2.12.0<3.0.0'}
+          },
+        ),
+      );
+
+      await expectValidation(validator, hints: isNotEmpty);
+    });
+    test(
+        'is not opting in to null-safety with previous non-null-safe stable version. '
+        'With an in-between null-safe prerelease', () async {
+      await servePackages(
+        (server) => server
+          ..serve(
+            'test_pkg',
+            '0.0.1',
+            pubspec: {
+              'environment': {'sdk': '>=2.9.0<3.0.0'}
+            },
+          )
+          ..serve(
+            'test_pkg',
+            '0.0.2-dev',
+            pubspec: {
+              'environment': {'sdk': '>=2.12.0<3.0.0'}
+            },
+          ),
+      );
+
+      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+      await expectValidation(validator, hints: isNotEmpty);
+    });
+
+    test(
         'opts in to null-safety, with previous version not-null-safe. '
         'Even with a later null-safe version', () async {
       await servePackages(
@@ -268,31 +276,6 @@
       await expectValidation(validator, hints: isNotEmpty);
     });
 
-    test(
-        'opts in to null-safety, with previous version not-null-safe. '
-        'Even with an in-between non-null-safe prerelease', () async {
-      await servePackages(
-        (server) => server
-          ..serve(
-            'test_pkg',
-            '0.0.1',
-            pubspec: {
-              'environment': {'sdk': '>=2.9.0<3.0.0'}
-            },
-          )
-          ..serve(
-            'test_pkg',
-            '0.0.2-dev',
-            pubspec: {
-              'environment': {'sdk': '>=2.12.0<3.0.0'}
-            },
-          ),
-      );
-
-      await setup(sdkConstraint: '>=2.12.0 <3.0.0');
-      await expectValidation(validator, hints: isNotEmpty);
-    });
-
     test('is not opting in to null-safety with previous null-safe version',
         () async {
       await servePackages(
@@ -335,8 +318,8 @@
     });
 
     test(
-        'is not opting in to null-safety with previous null-safe version. '
-        'Even with an in-between not null-safe prerelease', () async {
+        'is opting in to null-safety with previous null-safe stable version. '
+        'with an in-between non-null-safe prerelease', () async {
       await servePackages(
         (server) => server
           ..serve(
@@ -355,7 +338,23 @@
           ),
       );
 
-      await setup(sdkConstraint: '>=2.9.0 <3.0.0');
+      await setup(sdkConstraint: '>=2.12.0 <3.0.0');
+      await expectValidation(validator, hints: isNotEmpty);
+    });
+
+    test(
+        'is opting in to null-safety with no existing stable versions. '
+        'With a previous non-null-safe prerelease', () async {
+      await setup(sdkConstraint: '>=2.12.0 <3.0.0');
+      await servePackages(
+        (server) => server.serve(
+          'test_pkg',
+          '0.0.2-dev',
+          pubspec: {
+            'environment': {'sdk': '>=2.9.0<3.0.0'}
+          },
+        ),
+      );
       await expectValidation(validator, hints: isNotEmpty);
     });
   });