diff --git a/crates/ra_hir_def/src/nameres/collector.rs b/crates/ra_hir_def/src/nameres/collector.rs
index 36a61dc3d40..6db9937a432 100644
--- a/crates/ra_hir_def/src/nameres/collector.rs
+++ b/crates/ra_hir_def/src/nameres/collector.rs
@@ -27,7 +27,6 @@ pub(super) fn collect_defs(db: &impl DefDatabase2, mut def_map: CrateDefMap) ->
     let crate_graph = db.crate_graph();
 
     // populate external prelude
-    let mut prelude_is_core = false;
     for dep in crate_graph.dependencies(def_map.krate) {
         let dep_def_map = db.crate_def_map(dep.crate_id);
         log::debug!("crate dep {:?} -> {:?}", dep.name, dep.crate_id);
@@ -37,14 +36,12 @@ pub(super) fn collect_defs(db: &impl DefDatabase2, mut def_map: CrateDefMap) ->
         );
 
         // look for the prelude
-        // If the prelude is the "core" prelude, try to replace it with a higher
-        // level prelude (e.g. "std") if available.
-        if def_map.prelude.is_none() || prelude_is_core {
-            let map = db.crate_def_map(dep.crate_id);
-            if map.prelude.is_some() {
-                def_map.prelude = map.prelude;
-                prelude_is_core = dep.name == "core";
-            }
+        // If the dependency defines a prelude, we overwrite an already defined
+        // prelude. This is necessary to import the "std" prelude if a crate
+        // depends on both "core" and "std".
+        let dep_def_map = db.crate_def_map(dep.crate_id);
+        if dep_def_map.prelude.is_some() {
+            def_map.prelude = dep_def_map.prelude;
         }
     }
 
diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs
index b1268f29bd0..0e14f1b70c9 100644
--- a/crates/ra_project_model/src/lib.rs
+++ b/crates/ra_project_model/src/lib.rs
@@ -241,6 +241,8 @@ impl ProjectWorkspace {
                                 }
                             }
                         }
+                        // core is added as a dependency before std in order to
+                        // mimic rustcs dependency order
                         if let Some(core) = libcore {
                             if let Err(_) = crate_graph.add_dep(from, "core".into(), core) {
                                 log::error!("cyclic dependency on core for {}", pkg.name(&cargo))