ASTCodePrinter cp = new ASTCodePrinter();
switch (defUnit.getNodeType()) {
case DEFINITION_VARIABLE: {
DefinitionVariable elem = (DefinitionVariable) defUnit;
return elem.getName() + getTypeSegment(elem.type) + getDefUnitContainerSuffix(defUnit);
}
case DEFINITION_VAR_FRAGMENT: {
DefVarFragment elem = (DefVarFragment) defUnit;
Reference type = elem.getDeclaredType();
return elem.getName() + getTypeSegment(type) + getDefUnitContainerSuffix(defUnit);
}
case FUNCTION_PARAMETER: {
FunctionParameter elem = (FunctionParameter) defUnit;
return elem.getName() + getTypeSegment(elem.type) + getDefUnitContainerSuffix(defUnit);
}
case DEFINITION_FUNCTION: {
DefinitionFunction elem = (DefinitionFunction) defUnit;
cp.append(elem.getName());
cp.appendList("(", elem.tplParams, ",", ") ");
cp.append(elem.toStringParametersForSignature());
cp.append(getTypeSegment(elem.retType));
cp.append(getDefUnitContainerSuffix(defUnit));
return cp.toString();
}
case DEFINITION_ALIAS_FRAGMENT: {
DefinitionAliasFragment elem = (DefinitionAliasFragment) defUnit;
return elem.getName() + getAliasSegment(elem.target) + getDefUnitContainerSuffix(defUnit);
}
case DEFINITION_ALIAS_VAR_DECL: {
DefinitionAliasVarDecl elem = (DefinitionAliasVarDecl) defUnit;
return elem.getName() + getAliasSegment(elem.target) + getDefUnitContainerSuffix(defUnit);
}
case DEFINITION_ALIAS_FUNCTION_DECL: {
DefinitionAliasFunctionDecl elem = (DefinitionAliasFunctionDecl) defUnit;
// TODO: print a proper alias segment
return elem.getName() + getAliasSegment(elem.target) + getDefUnitContainerSuffix(defUnit);
}
default: break;
}