forked from JavaTX/JavaCompilerCore
48 lines
1.5 KiB
Java
Executable File
48 lines
1.5 KiB
Java
Executable File
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<String> 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;
|
|
}
|
|
}
|