When I try to comp pipes, the geometry flies apart despite nothing telling it to do so. Is this expected behavior?

Here's the rule:
@Range<SPAN class="punctuation token">(</SPAN>true<SPAN class="punctuation token">,</SPAN>false<SPAN class="punctuation token">)</SPAN>
attr Comp <SPAN class="operator token">=</SPAN> true
@StartRule
Lot <SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN>
case Comp <SPAN class="operator token">==</SPAN> true<SPAN class="punctuation token">:</SPAN> comp<SPAN class="punctuation token">(</SPAN>f<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">{</SPAN>all<SPAN class="punctuation token">:</SPAN> X<SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> X<SPAN class="punctuation token">.</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>