DecQualifier.ceylon
import ceylon.ast.core {
DecQualifier,
Node,
PackageQualifier
}
import com.redhat.ceylon.compiler.typechecker.tree {
JNode=Node,
Tree {
JBaseType=BaseType,
JQualifiedType=QualifiedType,
JStaticType=StaticType
}
}
"Converts a RedHat AST [[StaticType|JStaticType]] to a `ceylon.ast` [[DecQualifier]]."
DecQualifier decQualifierToCeylon(JStaticType decQualifier, Anything(JNode,Node) update) {
assert (is JBaseType|JQualifiedType decQualifier);
DecQualifier result;
switch (decQualifier)
case (is JBaseType) {
PackageQualifier? packageQualifier;
if (decQualifier.packageQualified) {
value pq = PackageQualifier();
update(decQualifier, pq);
packageQualifier = pq;
} else {
packageQualifier = null;
}
result = DecQualifier([identifierToCeylon(decQualifier.identifier, update)], packageQualifier);
}
case (is JQualifiedType) {
value nested = decQualifierToCeylon(decQualifier.outerType, update);
result = DecQualifier(nested.components.withTrailing(identifierToCeylon(decQualifier.identifier, update)), nested.packageQualifier);
}
update(decQualifier, result);
return result;
}