Output a summary when there are newer version, but they cannot resolv… (#2387)

diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart
index a4d6419..5826688 100644
--- a/lib/src/command/outdated.dart
+++ b/lib/src/command/outdated.dart
@@ -322,6 +322,11 @@
           'To update these dependencies, edit pubspec.yaml.');
     }
   }
+
+  if (notAtResolvable == 0 && upgradable == 0 && rows.isNotEmpty) {
+    log.message('\nDependencies are all on the latest resolvable versions.'
+        '\nNewer versions, while available, are not mutually compatible.');
+  }
 }
 
 Future<List<_FormattedString>> oudatedMarker(
diff --git a/test/outdated/goldens/mutually_incompatible.txt b/test/outdated/goldens/mutually_incompatible.txt
new file mode 100644
index 0000000..b88a3e1
--- /dev/null
+++ b/test/outdated/goldens/mutually_incompatible.txt
@@ -0,0 +1,89 @@
+$ pub outdated --format=json
+Resolving...
+{
+  "packages": [
+    {
+      "package": "bar",
+      "current": "1.0.0",
+      "upgradable": "1.0.0",
+      "resolvable": "1.0.0",
+      "latest": "2.0.0"
+    },
+    {
+      "package": "foo",
+      "current": "1.0.0",
+      "upgradable": "1.0.0",
+      "resolvable": "1.0.0",
+      "latest": "2.0.0"
+    }
+  ]
+}
+
+$ pub outdated --format=no-color
+Resolving...
+Package  Current  Upgradable  Resolvable  Latest  
+dependencies
+bar      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+foo      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+
+dev_dependencies: all up-to-date
+
+transitive dependencies: all up-to-date
+
+Dependencies are all on the latest resolvable versions.
+Newer versions, while available, are not mutually compatible.
+
+$ pub outdated --format=no-color --mark=none
+Resolving...
+Package  Current  Upgradable  Resolvable  Latest  
+dependencies
+bar      1.0.0    1.0.0       1.0.0       2.0.0   
+foo      1.0.0    1.0.0       1.0.0       2.0.0   
+
+dev_dependencies: all up-to-date
+
+transitive dependencies: all up-to-date
+
+Dependencies are all on the latest resolvable versions.
+Newer versions, while available, are not mutually compatible.
+
+$ pub outdated --format=no-color --up-to-date
+Resolving...
+Package  Current  Upgradable  Resolvable  Latest  
+dependencies
+bar      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+foo      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+
+dev_dependencies: all up-to-date
+
+transitive dependencies: all up-to-date
+
+Dependencies are all on the latest resolvable versions.
+Newer versions, while available, are not mutually compatible.
+
+$ pub outdated --format=no-color --pre-releases
+Resolving...
+Package  Current  Upgradable  Resolvable  Latest  
+dependencies
+bar      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+foo      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+
+dev_dependencies: all up-to-date
+
+transitive dependencies: all up-to-date
+
+Dependencies are all on the latest resolvable versions.
+Newer versions, while available, are not mutually compatible.
+
+$ pub outdated --format=no-color --no-dev-dependencies
+Resolving...
+Package  Current  Upgradable  Resolvable  Latest  
+dependencies
+bar      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+foo      *1.0.0   *1.0.0      *1.0.0      2.0.0   
+
+transitive dependencies: all up-to-date
+
+Dependencies are all on the latest resolvable versions.
+Newer versions, while available, are not mutually compatible.
+
diff --git a/test/outdated/outdated_test.dart b/test/outdated/outdated_test.dart
index 31a31ba..ef4ba37 100644
--- a/test/outdated/outdated_test.dart
+++ b/test/outdated/outdated_test.dart
@@ -103,4 +103,26 @@
     );
     await variations('circular_dependencies');
   });
+
+  test('mutually incompatible newer versions', () async {
+    await d.dir(appPath, [
+      d.pubspec({
+        'name': 'app',
+        'version': '1.0.1',
+        'dependencies': {
+          'foo': '^1.0.0',
+          'bar': '^1.0.0',
+        },
+      })
+    ]).create();
+
+    await servePackages((builder) => builder
+      ..serve('foo', '1.0.0', deps: {'bar': '^1.0.0'})
+      ..serve('bar', '1.0.0', deps: {'foo': '^1.0.0'})
+      ..serve('foo', '2.0.0', deps: {'bar': '^1.0.0'})
+      ..serve('bar', '2.0.0', deps: {'foo': '^1.0.0'}));
+    await pubGet();
+
+    await variations('mutually_incompatible');
+  });
 }