package com.redhat.ceylon.eclipse.core.model; import com.redhat.ceylon.model.typechecker.util.ModuleManager; import com.redhat.ceylon.model.typechecker.model.Package; import com.redhat.ceylon.eclipse.core.typechecker.IdePhasedUnit; import com.redhat.ceylon.eclipse.util.SingleSourceUnitPackage; public abstract class SourceFile extends CeylonUnit { public SourceFile(IdePhasedUnit phasedUnit) { createPhasedUnitRef(phasedUnit); } @Override protected IdePhasedUnit setPhasedUnitIfNecessary() { return phasedUnitRef.get(); } @Override public String getSourceFileName() { return getFilename(); } @Override public String getSourceRelativePath() { return getRelativePath(); } @Override public String getSourceFullPath() { return getFullPath(); } @Override public String getCeylonSourceRelativePath() { return getRelativePath(); } @Override public String getCeylonSourceFullPath() { return getSourceFullPath(); } @Override public String getCeylonFileName() { return getFilename(); } @Override public void setPackage(Package p) { super.setPackage(p); if (p instanceof SingleSourceUnitPackage && p.getUnit() == null && getFilename().equals(ModuleManager.PACKAGE_FILE)) { SingleSourceUnitPackage ssup = (SingleSourceUnitPackage) p; if (ssup.getFullPathOfSourceUnitToTypecheck().equals(getFullPath())) { p.setUnit(this); } } } }