Rendering annotations in descriptor renderer.

This commit is contained in:
Evgeny Gerashchenko
2012-12-25 01:04:05 +04:00
parent 74469590b4
commit 2b83b970ed
5 changed files with 25 additions and 3 deletions
@@ -22,6 +22,8 @@ import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.Annotated;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -269,6 +271,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
}
}
private void renderAnnotations(Annotated annotated, StringBuilder builder) {
if (!modifiers) return;
for (AnnotationDescriptor annotation : annotated.getAnnotations()) {
builder.append(renderType(annotation.getType())).append(" ");
}
}
private void renderVisibility(Visibility visibility, StringBuilder builder) {
if (!modifiers) return;
if ("package".equals(visibility.toString())) {
@@ -364,6 +373,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
/* FUNCTIONS */
private void renderFunction(FunctionDescriptor descriptor, StringBuilder builder) {
if (!startFromName) {
renderAnnotations(descriptor, builder);
renderVisibility(descriptor.getVisibility(), builder);
renderModality(descriptor.getModality(), builder);
builder.append(renderKeyword("fun")).append(" ");
@@ -384,6 +394,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
}
private void renderConstructor(ConstructorDescriptor constructorDescriptor, StringBuilder builder) {
renderAnnotations(constructorDescriptor, builder);
renderVisibility(constructorDescriptor.getVisibility(), builder);
builder.append(renderKeyword("ctor")).append(" ");
@@ -471,6 +482,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
private void renderProperty(PropertyDescriptor descriptor, StringBuilder builder) {
if (!startFromName) {
renderAnnotations(descriptor, builder);
renderVisibility(descriptor.getVisibility(), builder);
renderModality(descriptor.getModality(), builder);
renderValVarPrefix(descriptor, builder);
@@ -492,6 +504,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
boolean isNotClassObject = descriptor.getKind() != ClassKind.CLASS_OBJECT;
if (!startFromName) {
if (isNotClassObject) {
renderAnnotations(descriptor, builder);
renderVisibility(descriptor.getVisibility(), builder);
if (descriptor.getKind() != ClassKind.TRAIT && descriptor.getKind() != ClassKind.OBJECT) {
renderModality(descriptor.getModality(), builder);
+1 -1
View File
@@ -26,7 +26,7 @@ trait TheTrait {
//package rendererTest defined in root package
//internal final annotation class TheAnnotation : jet.Annotation defined in rendererTest
//public open class TheClass<out T : jet.Int, X> defined in rendererTest
//rendererTest.TheAnnotation public open class TheClass<out T : jet.Int, X> defined in rendererTest
//<out T : jet.Int> defined in rendererTest.TheClass
//<X> defined in rendererTest.TheClass
//private final val privateVal : jet.Int defined in rendererTest.TheClass
@@ -17,6 +17,8 @@ trait Bar
fun <P> funTypeParameterWithTwoUpperBounds() where P : Foo, P : Bar = 17
deprecated("") fun deprecatedFun()
//package rendererTest defined in root package
//public final fun pub() : Unit defined in rendererTest
//internal final fun int() : jet.String defined in rendererTest
@@ -33,3 +35,4 @@ fun <P> funTypeParameterWithTwoUpperBounds() where P : Foo, P : Bar = 17
//internal trait Bar defined in rendererTest
//internal final fun <P> funTypeParameterWithTwoUpperBounds() : jet.Int where P : rendererTest.Foo, P : rendererTest.Bar defined in rendererTest
//<P : rendererTest.Foo & rendererTest.Bar> defined in rendererTest.funTypeParameterWithTwoUpperBounds
//jet.deprecated internal final fun deprecatedFun() : Unit defined in rendererTest
@@ -11,6 +11,8 @@ private var private = 5
public val Int.ext : Int
get() {}
deprecated("") val deprecatedVal = 5
//package rendererTest defined in root package
//public final val pub : jet.String defined in rendererTest
//internal final var int : jet.String defined in rendererTest
@@ -18,3 +20,4 @@ get() {}
//private final var private : jet.Int defined in rendererTest
//public final val jet.Int.ext : jet.Int defined in rendererTest
//public final fun jet.Int.<get-ext>() : jet.Int defined in rendererTest
//jet.deprecated internal final val deprecatedVal : jet.Int defined in rendererTest
@@ -1,6 +1,8 @@
annotation class `true`
val `val` = 5
trait `trait`
`true` trait `trait`
class `class`<`in`>(p: `in`?) {
class `class`
@@ -11,8 +13,9 @@ val `in` = `class`<`trait`>(null)
fun `trait`.`fun`(`false`: `trait`): `trait`
//internal final annotation class `true` : jet.Annotation defined in root package
//internal final val `val` : jet.Int defined in root package
//internal trait `trait` defined in root package
//`true` internal trait `trait` defined in root package
//internal final class `class`<`in`> defined in root package
//<`in`> defined in `class`
//value-parameter val p : `in`? defined in `class`.<init>