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
@@ -3,5 +3,5 @@
package testData.libraries
[abstract class AbstractClass {
[public abstract class AbstractClass {
}]
@@ -3,20 +3,20 @@
package testData.libraries
[abstract class ClassWithAbstractAndOpenMembers {
[abstract val abstractVal : jet.String]
[public abstract class ClassWithAbstractAndOpenMembers {
[public abstract val abstractVal : jet.String]
[abstract var abstractVar : jet.String]
[public abstract var abstractVar : jet.String]
[open val openVal : jet.String] /* compiled code */
[public open val openVal : jet.String] /* compiled code */
[open val openValWithGetter : jet.String] /* compiled code */
[public open val openValWithGetter : jet.String] /* compiled code */
[open var openVar : jet.String] /* compiled code */
[public open var openVar : jet.String] /* compiled code */
[open var openVarWithGetter : jet.String] /* compiled code */
[public open var openVarWithGetter : jet.String] /* compiled code */
[abstract fun abstractFun() : Unit]
[public abstract fun abstractFun() : Unit]
[open fun openFun() : Unit { /* compiled code */ }]
[public open fun openFun() : Unit { /* compiled code */ }]
}]
+2 -2
View File
@@ -3,6 +3,6 @@
package testData.libraries
[final class Color {
[final val rgb : jet.Int] /* compiled code */
[public final class Color {
[public final val rgb : jet.Int] /* compiled code */
}]
@@ -3,5 +3,5 @@
package testData.libraries
[final class SimpleClass {
[public final class SimpleClass {
}]
@@ -3,5 +3,5 @@
package testData.libraries
[trait SimpleTrait {
[public trait SimpleTrait {
}]
@@ -3,5 +3,5 @@
package testData.libraries
[final class SimpleTraitImpl : testData.libraries.SimpleTrait {
[public final class SimpleTraitImpl : testData.libraries.SimpleTrait {
}]
@@ -3,14 +3,14 @@
package testData.libraries
[final class WithInnerAndObject {
[public final class WithInnerAndObject {
class object {
[final fun foo() : Unit { /* compiled code */ }]
[public final fun foo() : Unit { /* compiled code */ }]
}
[final class MyInner {
[trait MyInnerInner {
[abstract fun innerInnerMethod() : Unit]
[public final class MyInner {
[public trait MyInnerInner {
[public abstract fun innerInnerMethod() : Unit]
}]
}]
}]
@@ -3,7 +3,7 @@
package testData.libraries
[final class WithTraitClassObject {
[public final class WithTraitClassObject {
class object : testData.libraries.SimpleTrait {
}
}]
+11 -11
View File
@@ -3,24 +3,24 @@
package testData.libraries
[final val <T : jet.Any?>#(T, T).exProp : jet.String] /* compiled code */
[public final val <T : jet.Any?>#(T, T).exProp : jet.String] /* compiled code */
[final val jet.Int.exProp : jet.Int] /* compiled code */
[public final val jet.Int.exProp : jet.Int] /* compiled code */
[final val jet.String.exProp : jet.String] /* compiled code */
[public final val jet.String.exProp : jet.String] /* compiled code */
[final val globalVal : #(jet.Int, jet.String)] /* compiled code */
[public final val globalVal : #(jet.Int, jet.String)] /* compiled code */
[final val globalValWithGetter : jet.Long] /* compiled code */
[public final val globalValWithGetter : jet.Long] /* compiled code */
[final fun func() : Unit { /* compiled code */ }]
[public final fun func() : Unit { /* compiled code */ }]
[final fun func(val a : jet.Int, val b : jet.Int) : Unit { /* compiled code */ }]
[public final fun func(val a : jet.Int, val b : jet.Int) : Unit { /* compiled code */ }]
[final fun func(val a : jet.Int, val b : jet.String) : Unit { /* compiled code */ }]
[public final fun func(val a : jet.Int, val b : jet.String) : Unit { /* compiled code */ }]
[final fun func(val str : jet.String) : Unit { /* compiled code */ }]
[public final fun func(val str : jet.String) : Unit { /* compiled code */ }]
[final fun main(val args : jet.Array<jet.String>) : Unit { /* compiled code */ }]
[public final fun main(val args : jet.Array<jet.String>) : Unit { /* compiled code */ }]
[final fun <T : jet.Any?>T.filter(val predicate : (T) -> jet.Boolean) : T? { /* compiled code */ }]
[public final fun <T : jet.Any?>T.filter(val predicate : (T) -> jet.Boolean) : T? { /* compiled code */ }]