Added rendering visibility in DescriptorRenderer.

This commit is contained in:
Evgeny Gerashchenko
2012-04-06 18:06:15 +04:00
parent c21e3b837a
commit da9973a822
12 changed files with 63 additions and 44 deletions
@@ -297,6 +297,7 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
@Override
public Void visitPropertyDescriptor(PropertyDescriptor descriptor, StringBuilder builder) {
renderVisibility(descriptor.getVisibility(), builder);
renderModality(descriptor.getModality(), builder);
String typeString = renderPropertyPrefixAndComputeTypeString(
builder,
@@ -309,6 +310,10 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
return null;
}
private void renderVisibility(Visibility visibility, StringBuilder builder) {
builder.append(visibility).append(" ");
}
private void renderModality(Modality modality, StringBuilder builder) {
switch (modality) {
case FINAL:
@@ -326,6 +331,7 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
@Override
public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) {
renderVisibility(descriptor.getVisibility(), builder);
renderModality(descriptor.getModality(), builder);
builder.append(renderKeyword("fun")).append(" ");
if (renderTypeParameters(descriptor.getTypeParameters(), builder)) {
@@ -420,7 +426,20 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
return super.visitClassDescriptor(descriptor, builder);
}
private boolean isClassObjectDescriptor(ClassDescriptor descriptor) {
if (descriptor.getKind() == ClassKind.OBJECT) {
DeclarationDescriptor containing = descriptor.getContainingDeclaration();
if (containing instanceof ClassDescriptor) {
return ((ClassDescriptor)containing).getClassObjectDescriptor() == descriptor;
}
}
return false;
}
public void renderClassDescriptor(ClassDescriptor descriptor, StringBuilder builder, String keyword) {
if (!isClassObjectDescriptor(descriptor)) {
renderVisibility(descriptor.getVisibility(), builder);
}
if (descriptor.getKind() != ClassKind.TRAIT && descriptor.getKind() != ClassKind.OBJECT) {
renderModality(descriptor.getModality(), builder);
}
@@ -4,15 +4,15 @@ public fun pub() {}
internal fun int : String {}
val int2 : Int = 5
fun int2() : Int = 5
private fun prv() = 5
public fun Int.ext() : Int {}
//package rendererTest defined in <module>.<root>
//final fun pub() : Unit defined in <module>.<root>.rendererTest
//final fun int() : jet.String defined in <module>.<root>.rendererTest
//final val int2 : jet.Int defined in <module>.<root>.rendererTest
//final fun prv() : jet.Int defined in <module>.<root>.rendererTest
//final fun jet.Int.ext() : jet.Int defined in <module>.<root>.rendererTest
//public final fun pub() : Unit defined in <module>.<root>.rendererTest
//internal final fun int() : jet.String defined in <module>.<root>.rendererTest
//internal final fun int2() : jet.Int defined in <module>.<root>.rendererTest
//private final fun prv() : jet.Int defined in <module>.<root>.rendererTest
//public final fun jet.Int.ext() : jet.Int defined in <module>.<root>.rendererTest
@@ -12,9 +12,9 @@ public val Int.ext : Int
get() {}
//package rendererTest defined in <module>.<root>
//final val pub : jet.String defined in <module>.<root>.rendererTest
//final var int : jet.String defined in <module>.<root>.rendererTest
//final val int2 : jet.Int defined in <module>.<root>.rendererTest
//final var private : jet.Int defined in <module>.<root>.rendererTest
//final val jet.Int.ext : jet.Int defined in <module>.<root>.rendererTest
//final fun jet.Int.get-ext() : jet.Int defined in <module>.<root>.rendererTest
//public final val pub : jet.String defined in <module>.<root>.rendererTest
//internal final var int : jet.String defined in <module>.<root>.rendererTest
//internal final val int2 : jet.Int defined in <module>.<root>.rendererTest
//private final var private : jet.Int defined in <module>.<root>.rendererTest
//public final val jet.Int.ext : jet.Int defined in <module>.<root>.rendererTest
//public final fun jet.Int.get-ext() : jet.Int defined in <module>.<root>.rendererTest