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}