Skip to content

Cannot import impls from diamond-shaped libraries #2242

Closed

Description

@erickt

Here's an example of the bug:

https://gist.github.com/2421363

It seems that libraries re-export the ifaces/impls of libraries they're using, which triggers a duplicate symbol error when libraries are used in a diamond shaped pattern.

Activity

  1. added a commit that references this issue on Jun 20, 2012
  2. catamorphism commented on Jun 20, 2012

    @catamorphism
    Contributor

    This is no longer a duplicate symbol error, but has progressed to being a type error. The problem is that resolve adds an extra _impl into the iscopes list for b's re-export of to_str. I think this is a resolve bug: resolve shouldn't add an _impl twice in two different scopes for an impl with the same def_id. I was able to fix it by making typeck::check::method::lookup::add_candidates_from_scope remove duplicate entries from the iscopes -- but that was a terrible performance regression, and anyway, resolve shouldn't add the same def_id twice.

    I checked in the test case as src/test/run-pass/issue-2242-d.rs. Reassigning to @pcwalton , who can hopefully make sure the resolve rewrite doesn't reproduce this bug :-)

  3. pcwalton commented on Aug 7, 2012

    @pcwalton
    Contributor

    Some combination of resolve3 and coherence fixed this. Un-XFAILed in 793c0a1.

  4. added a commit that references this issue on Sep 22, 2022
  5. added a commit that references this issue on Feb 11, 2025
  6. added 2 commits that reference this issue on Aug 21, 2026
    989cebc
    86469d4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

A-codegenArea: Code generationA-linkageArea: linking into static, shared libraries and binaries

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions