Rendering where suffix for classes.
This commit is contained in:
@@ -388,7 +388,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
renderName(descriptor, builder);
|
||||
renderValueParameters(descriptor, builder);
|
||||
builder.append(" : ").append(escape(renderType(descriptor.getReturnType())));
|
||||
renderWhereSuffix(descriptor, builder);
|
||||
renderWhereSuffix(descriptor.getTypeParameters(), builder);
|
||||
}
|
||||
|
||||
private void renderConstructor(ConstructorDescriptor constructorDescriptor, StringBuilder builder) {
|
||||
@@ -404,10 +404,9 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
renderValueParameters(constructorDescriptor, builder);
|
||||
}
|
||||
|
||||
|
||||
private void renderWhereSuffix(@NotNull CallableMemberDescriptor callable, @NotNull StringBuilder builder) {
|
||||
private void renderWhereSuffix(@NotNull List<TypeParameterDescriptor> typeParameters, @NotNull StringBuilder builder) {
|
||||
boolean first = true;
|
||||
for (TypeParameterDescriptor typeParameter : callable.getTypeParameters()) {
|
||||
for (TypeParameterDescriptor typeParameter : typeParameters) {
|
||||
if (typeParameter.getUpperBounds().size() > 1) {
|
||||
for (JetType upperBound : typeParameter.getUpperBounds()) {
|
||||
if (first) {
|
||||
@@ -513,9 +512,11 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
builder.append(" ");
|
||||
}
|
||||
}
|
||||
|
||||
List<TypeParameterDescriptor> typeParameters = descriptor.getTypeConstructor().getParameters();
|
||||
if (isNotClassObject) {
|
||||
renderName(descriptor, builder);
|
||||
renderTypeParameters(descriptor.getTypeConstructor().getParameters(), builder);
|
||||
renderTypeParameters(typeParameters, builder);
|
||||
if (classWithPrimaryConstructor) {
|
||||
ConstructorDescriptor primaryConstructor = descriptor.getUnsubstitutedPrimaryConstructor();
|
||||
if (primaryConstructor != null) {
|
||||
@@ -523,6 +524,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!descriptor.equals(KotlinBuiltIns.getInstance().getNothing())) {
|
||||
Collection<JetType> supertypes = descriptor.getTypeConstructor().getSupertypes();
|
||||
if (supertypes.isEmpty() || supertypes.size() == 1 && KotlinBuiltIns.getInstance().isAny(supertypes.iterator().next())) {
|
||||
@@ -538,6 +540,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
renderWhereSuffix(typeParameters, builder);
|
||||
}
|
||||
|
||||
private static String getClassKindPrefix(ClassDescriptor descriptor) {
|
||||
|
||||
@@ -26,6 +26,8 @@ trait TheTrait {
|
||||
|
||||
public class WithReified<reified A, reified out B>
|
||||
|
||||
public trait TwoUpperBounds<T> where T: Number, T: Any
|
||||
|
||||
//package rendererTest defined in root package
|
||||
//internal final annotation class TheAnnotation : jet.Annotation defined in rendererTest
|
||||
//public ctor TheAnnotation() defined in rendererTest.TheAnnotation
|
||||
@@ -48,4 +50,6 @@ public class WithReified<reified A, reified out B>
|
||||
//public final class WithReified<reified A, reified out B> defined in rendererTest
|
||||
//public ctor WithReified<reified A, reified out B>() defined in rendererTest.WithReified
|
||||
//<reified A> defined in rendererTest.WithReified
|
||||
//<reified out B> 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
|
||||
//<T : jet.Number & jet.Any> defined in rendererTest.TwoUpperBounds
|
||||
|
||||
Reference in New Issue
Block a user