Override dependencies of locked packages (#1854)

Partially addresses #1853
diff --git a/lib/src/solver/package_lister.dart b/lib/src/solver/package_lister.dart
index 90c0158..3cbc403 100644
--- a/lib/src/solver/package_lister.dart
+++ b/lib/src/solver/package_lister.dart
@@ -227,6 +227,7 @@
         return incompatibilities;
       } else {
         return pubspec.dependencies.values
+            .where((range) => !_overriddenPackages.contains(range.name))
             .map((range) => _dependency(depender, range))
             .toList();
       }
diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart
index 5d7e0fc..bc9fbfc 100644
--- a/test/version_solver_test.dart
+++ b/test/version_solver_test.dart
@@ -1839,6 +1839,29 @@
 
     await expectResolves(result: {'foo': '0.0.0'});
   });
+
+  // Regression test for #1853
+  test("overrides a locked package's dependency", () async {
+    await servePackages((builder) {
+      builder.serve("foo", "1.2.3", deps: {"bar": "1.2.3"});
+      builder.serve("bar", "1.2.3");
+      builder.serve("bar", "0.0.1");
+    });
+
+    await d.appDir({"foo": "any"}).create();
+
+    await expectResolves(result: {'foo': '1.2.3', 'bar': '1.2.3'});
+
+    await d.dir(appPath, [
+      d.pubspec({
+        "name": "myapp",
+        "dependencies": {"foo": "any"},
+        "dependency_overrides": {"bar": '0.0.1'}
+      })
+    ]).create();
+
+    await expectResolves(result: {'foo': '1.2.3', 'bar': '0.0.1'});
+  });
 }
 
 void downgrade() {