Essentially uses a method to compute subgraphs of a type (i.e. the hull between a TypePart and its own end property) and merging them early to prevent exponential runtime behavior. The merging happens every time a subgraph has been successfully traversed (at the end of the recurse method).
Since multiple subgraphs can be chained together, we need a new iterate method that ensures that all subgraphs are traversed to the end of the type.
Closes https://github.com/eclipse-langium/langium/issues/775
Essentially uses a method to compute subgraphs of a type (i.e. the hull between a
TypePart
and its ownend
property) and merging them early to prevent exponential runtime behavior. The merging happens every time a subgraph has been successfully traversed (at the end of therecurse
method).Since multiple subgraphs can be chained together, we need a new
iterate
method that ensures that all subgraphs are traversed to the end of the type.