package st.gravel.support.compiler.jvm;
/*
This file is automatically generated from typed smalltalk source. Do not edit by hand.
(C) AG5.com
*/
import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.ast.NodeVisitor;
import st.gravel.support.compiler.jvm.JVMType;
import st.gravel.support.compiler.ast.NodeVisitor.NodeVisitor_Factory;
import st.gravel.support.compiler.ast.Node;
import st.gravel.support.compiler.jvm.JVMDynamicObjectType;
import st.gravel.support.compiler.ast.TypeNode;
import st.gravel.support.compiler.ast.TypeVariableNode;
import st.gravel.support.compiler.jvm.JVMIntType;
import st.gravel.support.compiler.jvm.JVMBooleanType;
public class TypeNodeToJVMTypeConverter extends NodeVisitor<JVMType> implements Cloneable {
public static TypeNodeToJVMTypeConverter_Factory factory = new TypeNodeToJVMTypeConverter_Factory();
st.gravel.core.Symbol[] _namespace;
public static class TypeNodeToJVMTypeConverter_Factory extends NodeVisitor_Factory<JVMType> {
public TypeNodeToJVMTypeConverter basicNew() {
TypeNodeToJVMTypeConverter newInstance = new TypeNodeToJVMTypeConverter();
newInstance.initialize();
return newInstance;
}
public TypeNodeToJVMTypeConverter namespace_(final st.gravel.core.Symbol[] _anArray) {
return this.basicNew().initializeNamespace_(_anArray);
}
}
static public TypeNodeToJVMTypeConverter _namespace_(Object receiver, final st.gravel.core.Symbol[] _anArray) {
return factory.namespace_(_anArray);
}
public TypeNodeToJVMTypeConverter copy() {
try {
TypeNodeToJVMTypeConverter _temp1 = (TypeNodeToJVMTypeConverter) this.clone();
_temp1.postCopy();
return _temp1;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
public TypeNodeToJVMTypeConverter_Factory factory() {
return factory;
}
public TypeNodeToJVMTypeConverter initializeNamespace_(final st.gravel.core.Symbol[] _anArray) {
_namespace = _anArray;
this.initialize();
return this;
}
public st.gravel.core.Symbol[] namespace() {
return _namespace;
}
@Override
public JVMType visitTypeNode_(final TypeNode _anObject) {
return JVMDynamicObjectType.factory.basicNew();
}
@Override
public JVMType visitTypeVariableNode_(final TypeVariableNode _anObject) {
if (st.gravel.support.jvm.StringExtensions.equals_(_anObject.name(), "Integer")) {
return JVMIntType.factory.basicNew();
}
if (st.gravel.support.jvm.StringExtensions.equals_(_anObject.name(), "Boolean")) {
return JVMBooleanType.factory.basicNew();
}
return JVMDynamicObjectType.factory.basicNew();
}
@Override
public JVMType visit_(final Node _anObject) {
if (_anObject == null) {
return JVMDynamicObjectType.factory.basicNew();
}
return ((JVMType) _anObject.accept_(this));
}
}