Closed
Description
The purpose of this issue is to setup a trait-solving structure that can change between the current trait solver and the type checker, allowing for us to easily switch to the chalk-style solving when a command line flag is given.
Currently, the interface between the two is the FulfillmentContext
, so we have a relationship like this:
[ type checker ] --> [ fulfillment context ] --> [ existing trait solver ]
The first phase then is to introduce another layer in between, let's call it the TraitEngine
:
[ type checker ] --> [ TraitEngine ] --> [ fulfillment context ] --> [ existing trait solver ]
When we're done with this phase, everything should work exactly the same, but that the type checker never interacts directly with the fulfillment context.