package me.tomassetti.turin.resolvers.compiled; import com.google.common.collect.ImmutableList; import me.tomassetti.jvm.JvmNameUtils; import me.tomassetti.turin.parser.ast.FormalParameterNode; import me.tomassetti.turin.parser.ast.invokables.FunctionDefinitionNode; import me.tomassetti.turin.parser.ast.statements.BlockStatement; import me.tomassetti.turin.parser.ast.typeusage.TypeUsageNode; import java.util.List; // TODO it should not be a Node public class LoadedFunctionDefinition extends FunctionDefinitionNode { private String qualifiedName; public LoadedFunctionDefinition(String qualifiedName, TypeUsageNode returnType, List<FormalParameterNode> parameters) { super(JvmNameUtils.canonicalToSimple(qualifiedName), returnType, parameters, new BlockStatement(ImmutableList.of())); this.qualifiedName = qualifiedName; } protected String getGeneratedClassQualifiedName() { String packagePart = JvmNameUtils.getPackagePart(qualifiedName); String simpleName = JvmNameUtils.getSimplePart(qualifiedName); String qName = packagePart + "." + CLASS_PREFIX + simpleName; if (!JvmNameUtils.isValidQualifiedName(qName)) { throw new IllegalStateException(qName); } return qName; } @Override public String getQualifiedName() { return qualifiedName; } }