Package org.ek9lang.compiler.phase3
Class ProcessStreamAssembly
java.lang.Object
org.ek9lang.compiler.common.RuleSupport
org.ek9lang.compiler.common.TypedSymbolAccess
org.ek9lang.compiler.phase3.ProcessStreamAssembly
- All Implemented Interfaces:
Consumer<StreamAssemblyData>
public class ProcessStreamAssembly
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 out,
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.-
Field Summary
Fields inherited from class org.ek9lang.compiler.common.RuleSupport
errorListener, symbolsAndScopes
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
ProcessStreamAssembly
(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener) -
Method Summary
Methods inherited from class org.ek9lang.compiler.common.TypedSymbolAccess
getRecordedAndTypedSymbol, isProcessingScopePure, recordATypedSymbol
-
Constructor Details
-
ProcessStreamAssembly
protected ProcessStreamAssembly(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener)
-
-
Method Details
-
accept
- Specified by:
accept
in interfaceConsumer<StreamAssemblyData>
-