// Path: src/main/java/ast/Literal.java
// public abstract class Literal<T> extends Expression {
//     private T value;
//     private Type type;
// 
//     public Literal(T value, TConstructor type){
//         this.value = value;
//         this.type = type;
//     }
// 
//     public T value() {
//         return value;
//     }
// 
//     @Override
//     public Type infer(TypeInferenceEnv typeInferenceEnv) {
//         return type;
//     }
// 
//     @Override
//     public String toString() {
//         return value.toString();
//     }
// }
// 
// Path: src/main/java/types/TConstructor.java
// public static TConstructor constructor(String name) {
//     TConstructor cons = instantiated.get(name);
//     if(cons == null) {
//         cons = new TConstructor(name);
//         instantiated.put(name, cons);
//     }
//     return cons;
// }


import ast.Literal;
import static types.TConstructor.constructor;
package ast.lit;



/**
 * Created by valentin on 25/10/2016.
 */
public class Int extends Literal<Integer> {

    public Int(Integer value) {
// Path: src/main/java/ast/Literal.java
// public abstract class Literal<T> extends Expression {
//     private T value;
//     private Type type;
// 
//     public Literal(T value, TConstructor type){
//         this.value = value;
//         this.type = type;
//     }
// 
//     public T value() {
//         return value;
//     }
// 
//     @Override
//     public Type infer(TypeInferenceEnv typeInferenceEnv) {
//         return type;
//     }
// 
//     @Override
//     public String toString() {
//         return value.toString();
//     }
// }
// 
// Path: src/main/java/types/TConstructor.java
// public static TConstructor constructor(String name) {
//     TConstructor cons = instantiated.get(name);
//     if(cons == null) {
//         cons = new TConstructor(name);
//         instantiated.put(name, cons);
//     }
//     return cons;
// }


// Path: src/main/java/ast/lit/Int.java
import ast.Literal;
import static types.TConstructor.constructor;

package ast.lit;



/**
 * Created by valentin on 25/10/2016.
 */
public class Int extends Literal<Integer> {

    public Int(Integer value) {
        super(value, constructor("Int"));