Made JetMethodAnnotationWriter.writeFlags(BitSet) back public, since it is more convenient.
This commit is contained in:
@@ -139,14 +139,13 @@ public class FunctionCodegen {
|
|||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
|
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
|
||||||
|
BitSet kotlinFlags = new BitSet();
|
||||||
if (CodegenUtil.isInterface(functionDescriptor.getContainingDeclaration()) && modality != Modality.ABSTRACT) {
|
if (CodegenUtil.isInterface(functionDescriptor.getContainingDeclaration()) && modality != Modality.ABSTRACT) {
|
||||||
aw.writeFlags(modality == Modality.FINAL
|
kotlinFlags.set(modality == Modality.FINAL
|
||||||
? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT
|
? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT
|
||||||
: JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT);
|
: JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT);
|
||||||
}
|
|
||||||
else {
|
|
||||||
aw.writeFlags();
|
|
||||||
}
|
}
|
||||||
|
aw.writeFlags(kotlinFlags);
|
||||||
aw.writeNullableReturnType(functionDescriptor.getReturnType().isNullable());
|
aw.writeNullableReturnType(functionDescriptor.getReturnType().isNullable());
|
||||||
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
||||||
aw.writeReturnType(jvmSignature.getKotlinReturnType());
|
aw.writeReturnType(jvmSignature.getKotlinReturnType());
|
||||||
|
|||||||
@@ -776,16 +776,17 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
|
|
||||||
JvmMethodSignature jvmSignature = typeMapper.mapToCallableMethod(inheritedFun, false, OwnerKind.IMPLEMENTATION).getSignature();
|
JvmMethodSignature jvmSignature = typeMapper.mapToCallableMethod(inheritedFun, false, OwnerKind.IMPLEMENTATION).getSignature();
|
||||||
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
|
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
|
||||||
|
BitSet kotlinFlags = new BitSet();
|
||||||
if (fun instanceof PropertyAccessorDescriptor) {
|
if (fun instanceof PropertyAccessorDescriptor) {
|
||||||
aw.writeFlags(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT);
|
kotlinFlags.set(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT);
|
||||||
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
||||||
aw.writePropertyType(jvmSignature.getKotlinReturnType());
|
aw.writePropertyType(jvmSignature.getKotlinReturnType());
|
||||||
} else {
|
} else {
|
||||||
aw.writeFlags();
|
|
||||||
aw.writeNullableReturnType(fun.getReturnType().isNullable());
|
aw.writeNullableReturnType(fun.getReturnType().isNullable());
|
||||||
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
||||||
aw.writeReturnType(jvmSignature.getKotlinReturnType());
|
aw.writeReturnType(jvmSignature.getKotlinReturnType());
|
||||||
}
|
}
|
||||||
|
aw.writeFlags(kotlinFlags);
|
||||||
aw.visitEnd();
|
aw.visitEnd();
|
||||||
|
|
||||||
if (state.getClassBuilderMode() == ClassBuilderMode.STUBS) {
|
if (state.getClassBuilderMode() == ClassBuilderMode.STUBS) {
|
||||||
|
|||||||
@@ -226,15 +226,14 @@ public class PropertyCodegen {
|
|||||||
@NotNull PropertyDescriptor propertyDescriptor) {
|
@NotNull PropertyDescriptor propertyDescriptor) {
|
||||||
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
|
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
|
||||||
Modality modality = propertyDescriptor.getModality();
|
Modality modality = propertyDescriptor.getModality();
|
||||||
|
BitSet flags = new BitSet();
|
||||||
|
flags.set(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT);
|
||||||
if (CodegenUtil.isInterface(propertyDescriptor.getContainingDeclaration()) && modality != Modality.ABSTRACT) {
|
if (CodegenUtil.isInterface(propertyDescriptor.getContainingDeclaration()) && modality != Modality.ABSTRACT) {
|
||||||
aw.writeFlags(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT,
|
flags.set(modality == Modality.FINAL
|
||||||
modality == Modality.FINAL
|
? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT
|
||||||
? JvmStdlibNames.JET_METHOD_FLAG_FORCE_FINAL_BIT
|
: JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT);
|
||||||
: JvmStdlibNames.JET_METHOD_FLAG_FORCE_OPEN_BIT);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
aw.writeFlags(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT);
|
|
||||||
}
|
}
|
||||||
|
aw.writeFlags(flags);
|
||||||
aw.writeTypeParameters(typeParameters);
|
aw.writeTypeParameters(typeParameters);
|
||||||
aw.writePropertyType(kotlinType);
|
aw.writePropertyType(kotlinType);
|
||||||
aw.visitEnd();
|
aw.visitEnd();
|
||||||
|
|||||||
+1
-9
@@ -33,15 +33,7 @@ public class JetMethodAnnotationWriter {
|
|||||||
this.av = av;
|
this.av = av;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeFlags(int... flagBits) {
|
public void writeFlags(BitSet flags) {
|
||||||
BitSet bitSet = new BitSet();
|
|
||||||
for (int bit : flagBits) {
|
|
||||||
bitSet.set(bit);
|
|
||||||
}
|
|
||||||
writeFlags(bitSet);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void writeFlags(BitSet flags) {
|
|
||||||
int flagsValue = 0;
|
int flagsValue = 0;
|
||||||
for (int bit = 0; bit < flags.length(); bit++) {
|
for (int bit = 0; bit < flags.length(); bit++) {
|
||||||
if (flags.get(bit)) {
|
if (flags.get(bit)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user