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