I am attempting to override the typesystem rules that pertain to operators for a C++ implementation. The type rules I've written work as intended, however there seems to be some problem when building them. Sometimes, when the typesystem is built, the overridden rules work correctly. If I rebuild the typesystem after making zero changes whatsoever, then it sometimes ignores my rules and uses the ones from mbeddr.core.
An example of the override sections of the typesystem rule:
And here are typesystem traces for both (no changes between the code itself, just in what gets reported as an error. The only difference is that things were rebuilt for the second image, and now a different type rule is being applied.
This happens with all of my operator overloads independently. That is, the correct rules may be used for binary operators and assignment operators, but array access operators won't work. Then a rebuild of the typesystem might fix one and break another, or do nothing. Very strange. Is this a generation ordering problem? Is there something obvious I am missing?
Any help would be appreciated.