Cannot import impls from diamond-shaped libraries #2242

erickt opened this Issue Apr 19, 2012 · 2 comments


None yet

3 participants

erickt commented Apr 19, 2012

Here's an example of the bug:

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.

@catamorphism catamorphism was assigned Apr 19, 2012
@pcwalton pcwalton was assigned Jun 20, 2012

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/ Reassigning to @pcwalton , who can hopefully make sure the resolve rewrite doesn't reproduce this bug :-)

pcwalton commented Aug 7, 2012

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

@pcwalton pcwalton closed this Aug 7, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment