Sorting upper bounds when rendering "where" to workaround failing test.
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.jet.renderer;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -449,25 +450,21 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
}
|
||||
|
||||
private void renderWhereSuffix(@NotNull List<TypeParameterDescriptor> typeParameters, @NotNull StringBuilder builder) {
|
||||
boolean first = true;
|
||||
List<String> upperBoundStrings = Lists.newArrayList();
|
||||
|
||||
for (TypeParameterDescriptor typeParameter : typeParameters) {
|
||||
if (typeParameter.getUpperBounds().size() > 1) {
|
||||
for (JetType upperBound : typeParameter.getUpperBounds()) {
|
||||
if (first) {
|
||||
builder.append(" ");
|
||||
builder.append(renderKeyword("where"));
|
||||
builder.append(" ");
|
||||
}
|
||||
else {
|
||||
builder.append(", ");
|
||||
}
|
||||
builder.append(typeParameter.getName());
|
||||
builder.append(" : ");
|
||||
builder.append(escape(renderType(upperBound)));
|
||||
first = false;
|
||||
upperBoundStrings.add(typeParameter.getName() + " : " + escape(renderType(upperBound)));
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(upperBoundStrings); // TODO workaround for failing load kotlin test
|
||||
|
||||
if (!upperBoundStrings.isEmpty()) {
|
||||
builder.append(" ").append(renderKeyword("where")).append(" ");
|
||||
builder.append(StringUtil.join(upperBoundStrings, ", "));
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -51,5 +51,5 @@ public trait TwoUpperBounds<T> where T: Number, T: Any
|
||||
//public constructor WithReified<reified A, reified out B>() defined in rendererTest.WithReified
|
||||
//<reified A> defined in rendererTest.WithReified
|
||||
//<reified out B> defined in rendererTest.WithReified
|
||||
//public trait TwoUpperBounds<T> where T : jet.Number, T : jet.Any defined in rendererTest
|
||||
//public trait TwoUpperBounds<T> where T : jet.Any, T : jet.Number defined in rendererTest
|
||||
//<T : jet.Number & jet.Any> defined in rendererTest.TwoUpperBounds
|
||||
|
||||
@@ -33,6 +33,6 @@ deprecated("") fun deprecatedFun()
|
||||
//value-parameter val a : jet.Array<T> defined in rendererTest.withTypeParam
|
||||
//internal trait Foo defined in rendererTest
|
||||
//internal trait Bar defined in rendererTest
|
||||
//internal final fun <P> funTypeParameterWithTwoUpperBounds() : jet.Int where P : rendererTest.Foo, P : rendererTest.Bar defined in rendererTest
|
||||
//internal final fun <P> funTypeParameterWithTwoUpperBounds() : jet.Int where P : rendererTest.Bar, P : rendererTest.Foo defined in rendererTest
|
||||
//<P : rendererTest.Foo & rendererTest.Bar> defined in rendererTest.funTypeParameterWithTwoUpperBounds
|
||||
//jet.deprecated internal final fun deprecatedFun() : Unit defined in rendererTest
|
||||
|
||||
@@ -22,7 +22,7 @@ t : T</td>
|
||||
<td style="white-space:nowrap;font-weight:bold;">
|
||||
: Unit <b>
|
||||
where</b>
|
||||
E : java.lang.Cloneable, E : java.io.Closeable</td>
|
||||
E : java.io.Closeable, E : java.lang.Cloneable</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="8" style="white-space:nowrap;">
|
||||
|
||||
Reference in New Issue
Block a user