{"record":{"id":"fa25cd11fa0a5fcc","repo":"diem/diem","slug":"duplicate-renaming-of-named-address-0-found-fo","errorCode":null,"errorMessage":"Duplicate renaming of named address '{0}' found for dependency {1}","messagePattern":"Duplicate renaming of named address '(.+?)' found for dependency (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"language/tools/move-package/src/resolution/resolution_graph.rs","lineNumber":376,"sourceCode":"                match rename_from_or_assign {\n                    SubstOrRename::RenameFrom(ident) => {\n                        // Make sure dep has the address that we're importing\n                        if !resolving_dep.resolution_table.contains_key(&ident) {\n                            bail!(\n                                \"Tried to rename named address {0} from package '{1}'.\\\n                                However, {1} does not contain that address\",\n                                ident,\n                                dep_name_in_pkg\n                            );\n                        }\n\n                        // Apply the substitution, NB that the refcell for the address's value is kept!\n                        if let Some(other_val) = resolution_table.remove(&ident) {\n                            resolution_table.insert(name, other_val);\n                        }\n\n                        if renaming.insert(name, (dep_name_in_pkg, ident)).is_some() {\n                            bail!(\"Duplicate renaming of named address '{0}' found for dependency {1}\",\n                                name,\n                                dep_name_in_pkg,\n                            );\n                        }\n                    }\n                    SubstOrRename::Assign(value) => {\n                        resolution_table\n                            .get(&name)\n                            .map(|named_addr| named_addr.unify(Some(value)))\n                            .transpose()\n                            .with_context(|| {\n                                format!(\n                                    \"Unable to assign value to named address {} in dependency {}\",\n                                    name, dep_name_in_pkg\n                                )\n                            })?;\n                    }\n                }","sourceCodeStart":358,"sourceCodeEnd":394,"githubUrl":"https://github.com/diem/diem/blob/fc4714a8ea273b6efe8b13dbce72ea60aad9a16c/language/tools/move-package/src/resolution/resolution_graph.rs#L358-L394","documentation":"Within one dependency entry, two different named addresses are renamed to the same target name. The renaming map would lose one mapping, so the substitution is rejected.","triggerScenarios":"process_dependency's renaming.insert(name, ...) returns Some because the same target name was already used by a previous RenameFrom in the same dep's subst.","commonSituations":"Copy-pasted substitution lines in Move.toml where two renames accidentally share the target key; bulk renames during a refactor.","solutions":["Give each rename a unique target name in the dependency substitution","Delete the duplicated rename entry"],"exampleFix":"// before\n[dependencies.Dep]\na1 = { rename_from = \"x\" }\na1 = { rename_from = \"y\" } // same target\n// after\n[dependencies.Dep]\na1 = { rename_from = \"x\" }\na2 = { rename_from = \"y\" }","handlingStrategy":"validation","validationCode":"def check_dep_renames(subst):\n    targets = [name for name, _ in subst.items()]\n    assert len(targets) == len(set(targets)), 'duplicate rename targets in dep'","typeGuard":"def unique_targets(subst: dict) -> bool:\n    return len(subst) == len(set(subst.keys()))","tryCatchPattern":null,"preventionTips":["Never duplicate a rename target key within one dependency block","Review generated Move.toml templates for repeated keys","TOML parsers reject exact duplicate keys — watch for same-target renames instead"],"tags":["move","named-addresses","dependency-resolution"],"backgroundTag":"duplicate-address-rename","analyzedSha":"fc4714a8ea273b6efe8b13dbce72ea60aad9a16c","analyzedAt":"2026-09-04T21:07:05.890Z","contentChangedAt":"2026-09-04T21:07:05.890Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}