Sorting upper bounds when rendering "where" to workaround failing test.

This commit is contained in:
Evgeny Gerashchenko
2012-12-26 17:52:16 +04:00
parent 20341a84e6
commit ef1ffa4bf7
4 changed files with 13 additions and 16 deletions
@@ -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
+1 -1
View File
@@ -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;">