66 lines
1.4 KiB
Plaintext
66 lines
1.4 KiB
Plaintext
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();
|
|
}
|
|
}
|