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