eval.setCurrentAST(this);
eval.notifyAboutSuspension(this);
Parameters parameters = getParameters();
Type formals = parameters.typeOf(eval.getCurrentEnvt(), true, eval);
RascalTypeFactory RTF = RascalTypeFactory.getInstance();
Type kwParams = TF.voidType();
java.util.List<KeywordFormal> kws = parameters.getKeywordFormals().hasKeywordFormalList() ? parameters.getKeywordFormals().getKeywordFormalList() : Collections.<KeywordFormal>emptyList();
if (parameters.hasKeywordFormals() && parameters.getKeywordFormals().hasKeywordFormalList()) {
kwParams = TypeDeclarationEvaluator.computeKeywordParametersType(kws, eval);
}
return new RascalFunction(this, eval, null, (FunctionType) RTF
.functionType(TF.voidType(), formals, kwParams), kws, this.getParameters()
.isVarArgs(), false, false, this.getStatements0(), eval
.getCurrentEnvt(), eval.__getAccumulators());
}