Skip to content


Cannot import impls from diamond-shaped libraries #2242

erickt opened this Issue · 2 comments

3 participants


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
@pcwalton pcwalton was assigned

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


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

@pcwalton pcwalton closed this
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.