public final class MacroExpansionIrVisitor extends AbstractGoloIrVisitor
This visitor replace the MacroInvocation
nodes with the result of the macro
expansion.
Modifier and Type | Class and Description |
---|---|
static class |
MacroExpansionIrVisitor.RecursionLimitException |
Constructor and Description |
---|
MacroExpansionIrVisitor(java.lang.ClassLoader loader,
boolean defaultRecurse,
GoloCompilationException.Builder exceptionBuilder) |
Modifier and Type | Method and Description |
---|---|
GoloElement<?> |
expand(GoloElement<?> element) |
MacroExpansionIrVisitor |
expandRegularCalls(boolean v)
Defines if regular function invocations must be tried to expand.
|
boolean |
macroExists(MacroInvocation invocation) |
MacroExpansionIrVisitor |
recurse(boolean v)
Defines if the macros must be expanded recursively.
|
int |
recursionLevel()
Returns the current macro recursion level.
|
MacroExpansionIrVisitor |
recursionLimit(int v)
Defines the expansion recursion limit.
|
void |
setExceptionBuilder(GoloCompilationException.Builder builder) |
MacroExpansionIrVisitor |
useMacroModule(java.lang.String name) |
void |
visitFunction(GoloFunction function) |
void |
visitFunctionInvocation(FunctionInvocation macroInvocation) |
void |
visitMacroInvocation(MacroInvocation macroInvocation) |
void |
visitModule(GoloModule module) |
visitAssignmentStatement, visitAugmentation, visitBinaryOperation, visitBlock, visitCaseStatement, visitClosureReference, visitCollectionComprehension, visitCollectionLiteral, visitConditionalBranching, visitConstantStatement, visitDecorator, visitDestructuringAssignment, visitForEachLoopStatement, visitLocalReference, visitLoopBreakFlowStatement, visitLoopStatement, visitMatchExpression, visitMember, visitMethodInvocation, visitModuleImport, visitNamedArgument, visitNamedAugmentation, visitNoop, visitReferenceLookup, visitReturnStatement, visitStruct, visitThrowStatement, visitToplevelElements, visitTryCatchFinally, visitUnaryOperation, visitUnion, visitUnionValue, visitWhenClause
public MacroExpansionIrVisitor(java.lang.ClassLoader loader, boolean defaultRecurse, GoloCompilationException.Builder exceptionBuilder)
public MacroExpansionIrVisitor recurse(boolean v)
Mainly for debugging purpose.
public MacroExpansionIrVisitor recursionLimit(int v)
public int recursionLevel()
public MacroExpansionIrVisitor expandRegularCalls(boolean v)
Mainly for debugging purpose.
public void setExceptionBuilder(GoloCompilationException.Builder builder)
public void visitFunction(GoloFunction function)
visitFunction
in interface GoloIrVisitor
visitFunction
in class AbstractGoloIrVisitor
public GoloElement<?> expand(GoloElement<?> element)
public void visitModule(GoloModule module)
visitModule
in interface GoloIrVisitor
visitModule
in class AbstractGoloIrVisitor
public void visitMacroInvocation(MacroInvocation macroInvocation)
visitMacroInvocation
in interface GoloIrVisitor
visitMacroInvocation
in class AbstractGoloIrVisitor
public void visitFunctionInvocation(FunctionInvocation macroInvocation)
visitFunctionInvocation
in interface GoloIrVisitor
visitFunctionInvocation
in class AbstractGoloIrVisitor
public MacroExpansionIrVisitor useMacroModule(java.lang.String name)
public boolean macroExists(MacroInvocation invocation)