package slangc.model; import slangc.api.Reporter; public class AliasTypeModel extends SyntheticTypeModel { private PackageModel targetPackage; private String targetName; private TypeModel target; public AliasTypeModel(PackageModel packageModel, String name, TypeLevel level, TypeModel owner, PackageModel targetPackage, String targetname) { super(packageModel, name, level, owner); this.targetPackage = targetPackage; this.targetName = targetname; } @Override public TypeType getTypeType() { return TypeType.ALIAS; } public PackageModel getTargetPackage() { return targetPackage; } public String getTargetName() { return targetName; } @Override public int expand() { if (existsAtRuntime() && target == null) { target = targetPackage.getType(targetName); return 1; } else { return 0; } } @Override public int resolveTypes() { //System.out.println("TODO: resolveTypes in " + this.getClass().getName()); return expand(); } @Override public void dump(Reporter reporter, String indent, String incr) { super.dump(reporter, indent, incr); reporter.note("DUMP", indent + incr + "[points to " + target + "]"); } @Override public TypeModel simplify() { expand(); if (target != null) { return target.simplify(); } else { return this; } } @Override public boolean isObjectType() { return target.isObjectType(); } }