package de.dhbwstuttgart.syntaxtree; import java.util.ArrayList; import java.util.List; import de.dhbwstuttgart.parser.NullToken; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPH; import de.dhbwstuttgart.typeinference.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; import org.antlr.v4.runtime.Token; import de.dhbwstuttgart.core.IItemWithOffset; import de.dhbwstuttgart.syntaxtree.statement.Block; /** * Stellt eine Methode dar. Problem: Parser kann nicht zwischen Methode und * Konstruktor unterscheiden. Daher kann diese Klasse beides sein. Dies wird mit * dem ParserPostProcessing behoben. * * @author janulrich * */ public class Method extends Field implements IItemWithOffset { private Block block; public ParameterList parameterlist = new ParameterList(null, new NullToken()); private ExceptionList exceptionlist; private String name; private List types_in_parameterlist = new ArrayList<>(); private int modifiers; public Method(String name, RefTypeOrTPH returnType, int modifiers, ParameterList parameterList, Block block, GenericDeclarationList gtvDeclarations, Token offset) { super(name, returnType, modifiers, offset); this.name = name; this.parameterlist = parameterList; this.block = block; } public ConstraintSet getConstraints(TypeInferenceInformation info) { ConstraintSet ret = new ConstraintSet(); info.setMethodContext(this); ret.addAll(block.getConstraints(info)); return ret; } }