Package gnu.expr

Class ChainLambdas

All Implemented Interfaces:
SourceLocator, SourceLocator, Locator

public class ChainLambdas extends ExpExpVisitor<ScopeExp>
Sets up the firstChild/nextSibling links of each LambdaExp. Setup 'outer' links of ScopeExp and its sub-classes. Also generates a class name for each ClassExp and registers each class. Also, if lambda is bound to a unique declaration, make that its name. This pass also checks for unreachable code, which happens if a neverReturns expression is followed dynamically by another expression. Doing this check after InlineCalls allows benefiting from data-flow; OTOH checking for unreachable code this late yields less precise type inference, but only when there actually is unreachable code, which is bogus anyway.