SInterfaceConcept vs SConcept a false dichotomy?

I spent hours today tracing through the MPS kernel because I wanted to understand childConcept.isExactly(ConceptA) was failing in a constraints method.  It came down to the fact that in order to call the constraint method, it converted an SInterfaceConcepAdaptorById into an SConceptAdaptorById, which aren't comparable, apparently.

I've noticed a lot of places in the code where this conversion happens.  It seems like if you can convert an interface to a concept, you should be able to compare that interface to a concept.  

From what I could tell, it would be a relatively simple change to the .equals method of those two functions. Maybe even making a AdapterById interface which can be checked in the equals method, and call the getId from that.  Of course I don't know enough about the internals to know if there is some reason you need those to not be equals. There is a unit test that validates they are false, but I can't find any justification of the test.

I'd be willing to open a pull-request in github, if this is something worth doing. 

Please sign in to leave a comment.