Mutually dependent rustc crates


So now we have various librustc_* crates. Does anyone run into the situation in which two such crates ends up depending on each other?

When fixing #18060, I found that rustc::check_match::Constructor and rustc_trans::_match::Opt are almost identical. If only they can be consolidated into one would be nice. Since rustc_trans already depends on rustc, the result of such refactoring would be a modified version of rustc::check_match::Constructor. But then, it needs to use something from rustc_trans::adt! A mutual dependency.

Has anyone had similar problem? And suggestions?

Regards, Edward