Skip to content
This repository

Cannot import impls from diamond-shaped libraries #2242

Closed
erickt opened this Issue April 19, 2012 · 2 comments

3 participants

Erick Tryzelaar Tim Chevalier Patrick Walton
Erick Tryzelaar
Collaborator

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.

Tim Chevalier
Collaborator

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 :-)

Patrick Walton
Owner

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

Patrick Walton pcwalton closed this August 06, 2012
Jay Anderson jayanderson referenced this issue from a commit November 10, 2013
Commit has since been removed from the repository and is no longer available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.