Refactoring: extracted 'renderParameter' function
This commit is contained in:
@@ -30,40 +30,35 @@ import org.jetbrains.jet.lang.resolve.name.FqName
|
|||||||
import org.jetbrains.jet.plugin.highlighter.IdeRenderers
|
import org.jetbrains.jet.plugin.highlighter.IdeRenderers
|
||||||
|
|
||||||
fun <D : CallableDescriptor> renderResolvedCall(resolvedCall: ResolvedCall<D>): String {
|
fun <D : CallableDescriptor> renderResolvedCall(resolvedCall: ResolvedCall<D>): String {
|
||||||
|
val htmlRenderer = DescriptorRenderer.HTML
|
||||||
|
fun renderParameter(parameter: ValueParameterDescriptor): String {
|
||||||
|
val varargElementType = parameter.getVarargElementType()
|
||||||
|
val parameterType = varargElementType ?: parameter.getType()
|
||||||
|
val renderedParameter =
|
||||||
|
(if (varargElementType != null) "<b>vararg</b> " else "") +
|
||||||
|
htmlRenderer.renderType(parameterType) +
|
||||||
|
if (parameter.hasDefaultValue()) " = ..." else ""
|
||||||
|
if (resolvedCall.hasErrorOnParameter(parameter)) {
|
||||||
|
return IdeRenderers.error(renderedParameter)
|
||||||
|
}
|
||||||
|
return renderedParameter
|
||||||
|
}
|
||||||
|
|
||||||
val stringBuilder = StringBuilder("")
|
val stringBuilder = StringBuilder("")
|
||||||
val funDescriptor = resolvedCall.getResultingDescriptor()
|
val funDescriptor = resolvedCall.getResultingDescriptor()
|
||||||
|
|
||||||
val htmlRenderer = DescriptorRenderer.HTML
|
|
||||||
val receiverParameter = funDescriptor.getReceiverParameter()
|
val receiverParameter = funDescriptor.getReceiverParameter()
|
||||||
if (receiverParameter != null) {
|
if (receiverParameter != null) {
|
||||||
stringBuilder.append(htmlRenderer.renderType(receiverParameter.getType())).append(".")
|
stringBuilder.append(htmlRenderer.renderType(receiverParameter.getType())).append(".")
|
||||||
}
|
}
|
||||||
stringBuilder.append(funDescriptor.getName()).append("(")
|
stringBuilder.append(funDescriptor.getName()).append("(")
|
||||||
var first = true
|
stringBuilder.append(funDescriptor.getValueParameters().map(::renderParameter).makeString(","))
|
||||||
for (parameter in funDescriptor.getValueParameters()) {
|
|
||||||
if (!first) {
|
|
||||||
stringBuilder.append(", ")
|
|
||||||
}
|
|
||||||
var parameterType = parameter.getType()
|
|
||||||
val varargElementType = parameter.getVarargElementType()
|
|
||||||
if (varargElementType != null) {
|
|
||||||
parameterType = varargElementType
|
|
||||||
}
|
|
||||||
var paramString: String = (if (varargElementType != null) "<b>vararg</b> " else "") + htmlRenderer.renderType(parameterType)
|
|
||||||
if (parameter.hasDefaultValue()) {
|
|
||||||
paramString += " = ..."
|
|
||||||
}
|
|
||||||
if (resolvedCall.hasErrorOnParameter(parameter)) {
|
|
||||||
paramString = IdeRenderers.error(paramString)
|
|
||||||
}
|
|
||||||
stringBuilder.append(paramString)
|
|
||||||
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
stringBuilder.append(if (resolvedCall.hasUnmappedArguments()) IdeRenderers.error(")") else ")")
|
stringBuilder.append(if (resolvedCall.hasUnmappedArguments()) IdeRenderers.error(")") else ")")
|
||||||
|
|
||||||
stringBuilder.append(" <i>defined in</i> ")
|
stringBuilder.append(" <i>defined in</i> ")
|
||||||
val containingDeclaration = funDescriptor.getContainingDeclaration()
|
val containingDeclaration = funDescriptor.getContainingDeclaration()
|
||||||
val fqName = DescriptorUtils.getFqName(containingDeclaration)
|
val fqName = DescriptorUtils.getFqName(containingDeclaration)
|
||||||
stringBuilder.append(if (FqName.ROOT.equalsTo(fqName)) "root package" else fqName.asString())
|
stringBuilder.append(if (FqName.ROOT.equalsTo(fqName)) "root package" else fqName.asString())
|
||||||
return stringBuilder.toString()
|
return stringBuilder.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user