ETupProject has slice indices from a completely flattened representation, but dynamicAcc has to work with the properly nested types of the surface representation. Thus, the indexes need to be converted appropriately.
This means recoverExpType works for nested tuples, and we can re-enable the type checker. There are some places where I didn't bother to correctly determing the resulting type, in which case you'll get an error if you try to recover the type of that expression. Oh well...
It was pushed through the backend-kit passes, and some functions were added to Cilk/JITRuntime.hs to accept a map of vars to arrays at runtime and substitute them into an already compiled C program. Nothing has been tested yet, but AFAIK nothing that previously worked has been broken.
…as ETuples. Flattened from the beginning and ETupProjectFromRight takes an offset and a length
…xpression replaced it with something completely different