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, visitWhenClausepublic 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 GoloIrVisitorvisitFunction in class AbstractGoloIrVisitorpublic GoloElement<?> expand(GoloElement<?> element)
public void visitModule(GoloModule module)
visitModule in interface GoloIrVisitorvisitModule in class AbstractGoloIrVisitorpublic void visitMacroInvocation(MacroInvocation macroInvocation)
visitMacroInvocation in interface GoloIrVisitorvisitMacroInvocation in class AbstractGoloIrVisitorpublic void visitFunctionInvocation(FunctionInvocation macroInvocation)
visitFunctionInvocation in interface GoloIrVisitorvisitFunctionInvocation in class AbstractGoloIrVisitorpublic MacroExpansionIrVisitor useMacroModule(java.lang.String name)
public boolean macroExists(MacroInvocation invocation)