001/*
002 * Copyright (c) 2012-2021 Institut National des Sciences Appliquées de Lyon (INSA Lyon) and others
003 *
004 * This program and the accompanying materials are made available under the
005 * terms of the Eclipse Public License 2.0 which is available at
006 * http://www.eclipse.org/legal/epl-2.0.
007 *
008 * SPDX-License-Identifier: EPL-2.0
009 */
010
011package gololang.ir;
012
013public interface GoloIrVisitor {
014
015  void visitModule(GoloModule module);
016
017  void visitModuleImport(ModuleImport moduleImport);
018
019  void visitStruct(Struct struct);
020
021  void visitUnion(Union union);
022
023  void visitUnionValue(UnionValue value);
024
025  void visitAugmentation(Augmentation augment);
026
027  void visitNamedAugmentation(NamedAugmentation augment);
028
029  void visitFunction(GoloFunction function);
030
031  void visitDecorator(Decorator decorator);
032
033  void visitBlock(Block block);
034
035  void visitConstantStatement(ConstantStatement constantStatement);
036
037  void visitReturnStatement(ReturnStatement returnStatement);
038
039  void visitFunctionInvocation(FunctionInvocation functionInvocation);
040
041  void visitAssignmentStatement(AssignmentStatement assignmentStatement);
042
043  void visitDestructuringAssignment(DestructuringAssignment assignmentStatement);
044
045  void visitReferenceLookup(ReferenceLookup referenceLookup);
046
047  void visitConditionalBranching(ConditionalBranching conditionalBranching);
048
049  void visitBinaryOperation(BinaryOperation binaryOperation);
050
051  void visitUnaryOperation(UnaryOperation unaryOperation);
052
053  void visitLoopStatement(LoopStatement loopStatement);
054
055  void visitForEachLoopStatement(ForEachLoopStatement foreachStatement);
056
057  void visitCaseStatement(CaseStatement caseStatement);
058
059  void visitMatchExpression(MatchExpression matchExpression);
060
061  void visitWhenClause(WhenClause<?> whenClause);
062
063  void visitMethodInvocation(MethodInvocation methodInvocation);
064
065  void visitThrowStatement(ThrowStatement throwStatement);
066
067  void visitTryCatchFinally(TryCatchFinally tryCatchFinally);
068
069  void visitClosureReference(ClosureReference closureReference);
070
071  void visitLoopBreakFlowStatement(LoopBreakFlowStatement loopBreakFlowStatement);
072
073  void visitCollectionLiteral(CollectionLiteral collectionLiteral);
074
075  void visitCollectionComprehension(CollectionComprehension collectionComprehension);
076
077  void visitNamedArgument(NamedArgument namedArgument);
078
079  void visitLocalReference(LocalReference localRef);
080
081  void visitMember(Member member);
082
083  void visitMacroInvocation(MacroInvocation macroInvocation);
084
085  void visitNoop(Noop noop);
086
087  void visitToplevelElements(ToplevelElements toplevel);
088}