See for the details.
Basically, that was fixed by reverting to the old parser output of generating duplicate joins. This should be fixed to use the same join both times for effeciency.
There were a number of ways we might acheive this:
1) Somehow suspend processing of subqueries until their containing query is completely processed. The trick here is that the join definition from the outer query would already have been resolved when processing the inner query resumes at which point we could simply reuse the join def from the outer query (this is the same thing as putting the implicit join in the outer query before the subquery, which works). This approach (while simple in its concept) seems very difficult to acheive with the ANTLR parser.
2) Perform some post processing sort of like we do with the "join post processing". Yuck!
3) When attempting to resolve the DotNode (representing the implicit join) take a peek at "child from clauses" to see if any of them defined the same "implicit join path"; if so "promote" that join fragment from the child FromClause to the current FromClause.
I will attempt #3.