about summary refs log tree commit diff stats
path: root/pkgs/by-name
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-04-27 22:31:08 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-04-27 22:31:08 +0200
commite832e7c6e607b1cc79f2183a44a87455fafbc63b (patch)
tree0ab7b902f97a2dc19dbd1b429871536f4daa0782 /pkgs/by-name
parentpkgs/lf-make-map/tests: Add a test for child insertion (diff)
downloadnixos-config-e832e7c6e607b1cc79f2183a44a87455fafbc63b.zip
pkgs/lf-make-map: Correctly insert a child after a tiebreak
Diffstat (limited to 'pkgs/by-name')
-rw-r--r--pkgs/by-name/lf/lf-make-map/Cargo.lock3
-rw-r--r--pkgs/by-name/lf/lf-make-map/src/mapping/mod.rs18
2 files changed, 16 insertions, 5 deletions
diff --git a/pkgs/by-name/lf/lf-make-map/Cargo.lock b/pkgs/by-name/lf/lf-make-map/Cargo.lock
index 20779f60..51cbf6ad 100644
--- a/pkgs/by-name/lf/lf-make-map/Cargo.lock
+++ b/pkgs/by-name/lf/lf-make-map/Cargo.lock
@@ -1,3 +1,5 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
 # nixos-config - My current NixOS configuration
 #
 # Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
@@ -7,7 +9,6 @@
 #
 # You should have received a copy of the License along with this program.
 # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-
 version = 4
 
 [[package]]
diff --git a/pkgs/by-name/lf/lf-make-map/src/mapping/mod.rs b/pkgs/by-name/lf/lf-make-map/src/mapping/mod.rs
index a5f94067..21392388 100644
--- a/pkgs/by-name/lf/lf-make-map/src/mapping/mod.rs
+++ b/pkgs/by-name/lf/lf-make-map/src/mapping/mod.rs
@@ -10,7 +10,7 @@
 
 use anyhow::Result;
 use keymaps::map_tree::{Node, Trie};
-use log::{debug, log_enabled, trace, Level};
+use log::{Level, debug, log_enabled, trace};
 use map_key::MapKey;
 
 pub mod lf_mapping;
@@ -130,7 +130,7 @@ impl MappingsTrie {
                             {
                                 let mut full_foreign_keys = parent_keys.to_vec();
                                 full_foreign_keys.append(&mut foreign_keys);
-                                self.0.insert_node(&full_foreign_keys, &other_node)?;
+                                self.insert_node(&full_foreign_keys, other_node)?;
                             }
                         }
                     }
@@ -138,13 +138,13 @@ impl MappingsTrie {
                     {
                         let mut full_our_keys = parent_keys.to_vec();
                         full_our_keys.append(&mut our_keys);
-                        self.0.insert_node(&full_our_keys, &node)?;
+                        self.insert_node(&full_our_keys, node)?;
                     }
 
                     Ok(())
                 }
                 keymaps::error::TrieInsert::KeyIncludesChild {
-                    mut child_key,
+                    child_key: key,
                     child_value,
                 } => {
                     // A node that should be a parent was classified
@@ -154,6 +154,16 @@ impl MappingsTrie {
                     //  2. Add the child node to the parent node as child, but with a '.' as MapKey.
                     //  3. Add the original node also as child to the parent node.
 
+                    assert_eq!(key, keys);
+
+                    let (fetched_child_value, mut child_key) = self.0.try_get(keys);
+                    assert_eq!(fetched_child_value.value(), Some(&child_value));
+
+                    trace!(
+                        "Replacing child ('{}') with a parent, so that we can continue from this point.",
+                        MapKey::display(&child_key)
+                    );
+
                     let child = self
                         .0
                         .replace_node(&child_key, Node::new_parent())