forked from JavaTX/JavaCompilerCore
36 lines
1.6 KiB
Java
36 lines
1.6 KiB
Java
package de.dhbwstuttgart.syntaxtree;
|
|
|
|
import de.dhbwstuttgart.syntaxtree.statement.Statement;
|
|
import de.dhbwstuttgart.syntaxtree.statement.SuperCall;
|
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
|
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
|
import org.antlr.v4.runtime.Token;
|
|
|
|
import de.dhbwstuttgart.syntaxtree.statement.Block;
|
|
|
|
import java.util.List;
|
|
|
|
public class Constructor extends Method {
|
|
|
|
// TODO: Constructor braucht ein super-Statement
|
|
public Constructor(int modifier, String name, RefTypeOrTPHOrWildcardOrGeneric returnType, ParameterList parameterList, Block codeInsideConstructor, GenericDeclarationList gtvDeclarations, Token offset /* , List<Statement> fieldInitializations geloescht PL 2018-11-24 */) {
|
|
super(modifier, name, returnType, parameterList, /* codeInsideConstructor, */ prepareBlock(codeInsideConstructor) /* ,fieldInitializations )geloescht PL 2018-11-24 ) */, gtvDeclarations, offset);
|
|
|
|
}
|
|
|
|
/**
|
|
* @param fieldInitializations - Das sind die Statements, welche die Felder der zugehörigen Klasse dieses Konstruktor initialisieren
|
|
*/
|
|
protected static Block prepareBlock(Block constructorBlock /* , List<Statement> fieldInitializations new ArrayList<>() geloescht PL 2018-11-24 */) {
|
|
List<Statement> statements = constructorBlock.getStatements();
|
|
statements.add(0, new SuperCall(null, null, constructorBlock.getOffset()));
|
|
/* statements.addAll(fieldInitializations); geloescht PL 2018-11-24 */
|
|
return new Block(statements, constructorBlock.getOffset());
|
|
}
|
|
|
|
@Override
|
|
public void accept(ASTVisitor visitor) {
|
|
visitor.visit(this);
|
|
}
|
|
}
|