KT-1973 Added class kind to JetClass annotations to distinguish object declarations and regular classes.

#KT-1973 in progress
This commit is contained in:
Evgeny Gerashchenko
2012-10-03 22:58:19 +04:00
parent 889a238fbc
commit 998095c55c
4 changed files with 13 additions and 1 deletions
@@ -112,6 +112,10 @@ public class CodegenUtil {
return 0;
}
public static int getFlagsForClassKind(@NotNull ClassDescriptor descriptor) {
return descriptor.getKind() == ClassKind.OBJECT ? JvmStdlibNames.FLAG_CLASS_KIND_OBJECT : JvmStdlibNames.FLAG_CLASS_KIND_DEFAULT;
}
@NotNull
public static JvmClassName getInternalClassName(FunctionDescriptor descriptor) {
final int paramCount = descriptor.getValueParameters().size();
@@ -250,7 +250,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
if (signature.getKotlinGenericSignature() != null || descriptor.getVisibility() != Visibilities.PUBLIC) {
AnnotationVisitor annotationVisitor = v.newAnnotation(JvmStdlibNames.JET_CLASS.getDescriptor(), true);
annotationVisitor.visit(JvmStdlibNames.JET_CLASS_SIGNATURE, signature.getKotlinGenericSignature());
int flags = getFlagsForVisibility(descriptor.getVisibility());
int flags = getFlagsForVisibility(descriptor.getVisibility()) | getFlagsForClassKind(descriptor);
if (JvmStdlibNames.FLAGS_DEFAULT_VALUE != flags) {
annotationVisitor.visit(JvmStdlibNames.JET_FLAGS_FIELD, flags);
}