We should probably just make the thing that calls compileNode do this. I just spend 30 minutes figuring out why a crash was happening, and it was because I forgot to call noResult(node) for a node I'm implementing.
We pass various arguments to noResult that could be hard to infer. We should probably just have an assert that it gets called exactly once for each node that doesn't have a result