Open raehik opened 2 years ago
I'm getting test failures related to the block analysis. uniplate behaviour has changed because with DoSpec
s no longer storing a Statement
, it doesn't get picked up by universeBi
. I'm trying to convert DoSpec
s to StExpressionAssign
s to remove the need to rewrite the traversals or reconsider the AST, but it's not working.
I think it's due to analyseAllLhsVars
. It won't work for DoSpecification
s, I need to pass it a different processor that knows to turn them into assign statements.
Nope, same issue. I'm scratching my head at this - assuming there are more places where the missing StExpressionAssign
causes uniplate to skip some do-related analysis
Another solution would be to change ExpImpliedDo
instead. But DoSpecification
shouldn't store a Statement
, the only thing allowed in there is StExpressionAssign
(which I've essentially expanded out).
The 5 failing tests are all related to DataFlow.reachingDefinitions
, which calls allLhsVars
, which were the problematic functions. Will spend a bit more time on this today... but if I can't solve it, I'll leave it for now.
bit lost, only 2 changes seem to have any impact on test results. Leaving for now.
This removes
Expression
's mutual recursion withStatement
.