render type correctly in html for TYPE_INFERENCE_UPPER_BOUND_VIOLATED error
This commit is contained in:
@@ -277,15 +277,18 @@ public class Renderers {
|
||||
.table(newTable().
|
||||
descriptor(inferenceErrorData.descriptor));
|
||||
|
||||
JetType type = ConstraintsUtil.getValue(inferenceErrorData.constraintSystem.getTypeConstraints(typeParameterDescriptor));
|
||||
JetType inferredValueForTypeParameter = ConstraintsUtil.getValue(inferenceErrorData.constraintSystem.getTypeConstraints(typeParameterDescriptor));
|
||||
assert inferredValueForTypeParameter != null;
|
||||
JetType upperBound = typeParameterDescriptor.getUpperBoundsAsType();
|
||||
JetType substitute = inferenceErrorData.constraintSystem.getResultingSubstitutor().substitute(upperBound, Variance.INVARIANT);
|
||||
JetType upperBoundWithSubstitutedInferredTypes = inferenceErrorData.constraintSystem.getResultingSubstitutor().substitute(upperBound, Variance.INVARIANT);
|
||||
assert upperBoundWithSubstitutedInferredTypes != null;
|
||||
|
||||
Renderer<JetType> typeRenderer = result.getTypeRenderer();
|
||||
result.text(newText()
|
||||
.normal(" is not satisfied: inferred type ")
|
||||
.error(type)
|
||||
.error(typeRenderer.render(inferredValueForTypeParameter))
|
||||
.normal(" is not a subtype of ")
|
||||
.strong(substitute));
|
||||
.strong(typeRenderer.render(upperBoundWithSubstitutedInferredTypes)));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+7
-2
@@ -152,6 +152,11 @@ public class TabledDescriptorRenderer {
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Renderer<JetType> getTypeRenderer() {
|
||||
return Renderers.RENDER_TYPE;
|
||||
}
|
||||
|
||||
protected void renderText(TextRenderer textRenderer, StringBuilder result) {
|
||||
for (TextElement element : textRenderer.elements) {
|
||||
result.append(element.text);
|
||||
@@ -179,7 +184,7 @@ public class TabledDescriptorRenderer {
|
||||
boolean hasReceiver = receiverType != null;
|
||||
if (hasReceiver) {
|
||||
result.append("receiver: ");
|
||||
result.append(Renderers.RENDER_TYPE.render(receiverType));
|
||||
result.append(getTypeRenderer().render(receiverType));
|
||||
result.append(" arguments: ");
|
||||
}
|
||||
if (argumentTypes.isEmpty()) {
|
||||
@@ -190,7 +195,7 @@ public class TabledDescriptorRenderer {
|
||||
result.append("(");
|
||||
for (Iterator<JetType> iterator = argumentTypes.iterator(); iterator.hasNext(); ) {
|
||||
JetType argumentType = iterator.next();
|
||||
String renderedArgument = Renderers.RENDER_TYPE.render(argumentType);
|
||||
String renderedArgument = getTypeRenderer().render(argumentType);
|
||||
|
||||
result.append(renderedArgument);
|
||||
if (iterator.hasNext()) {
|
||||
|
||||
Reference in New Issue
Block a user