Class StreamAssemblyOrError

All Implemented Interfaces:
Consumer<StreamAssemblyData>

public class StreamAssemblyOrError extends TypedSymbolAccess implements Consumer<StreamAssemblyData>
Processes/updates and checks that a stream assembly is actually viable in terms of types. This is a bit tricky because some pipeline parts can accept anything in and produce the same thing, but in of themselves they have no idea what that type will be. It's only when we get to this stage we can push the types down from the source through each of the parts. Then finally check to see if the terminal part could receive that type. There are some other constraints as well, like sorting and grouping. This focuses on the checking/population of consumes/produces of types in each of the stages of the pipeline from the sources, pipe-line-parts* and termination. This is quite tricky because some things types are fixed and others more flexible. SymbolFactory.newStreamPart(EK9Parser.StreamPartContext, IScope) This populates the StreamCallSymbol.
This is quite large and a little complex, but it is the main processor of the whole EK9 stream idea.