Package org.ek9lang.compiler.phase3
Class StreamAssemblyOrError
java.lang.Object
org.ek9lang.compiler.common.RuleSupport
org.ek9lang.compiler.common.TypedSymbolAccess
org.ek9lang.compiler.phase3.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.
This is quite large and a little complex, but it is the main processor of the whole EK9 stream idea.
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.
-
Field Summary
Fields inherited from class org.ek9lang.compiler.common.RuleSupport
errorListener, symbolsAndScopes
-
Constructor Summary
ModifierConstructorDescriptionprotected
StreamAssemblyOrError
(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener) -
Method Summary
Methods inherited from class org.ek9lang.compiler.common.TypedSymbolAccess
getRecordedAndTypedSymbol, isProcessingScopePure, recordATypedSymbol
-
Constructor Details
-
StreamAssemblyOrError
protected StreamAssemblyOrError(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener)
-
-
Method Details
-
accept
- Specified by:
accept
in interfaceConsumer<StreamAssemblyData>
-