Support native on [platformStatic] functions

This commit is contained in:
Andrey Breslav
2014-11-18 14:27:10 +03:00
parent cba6652c05
commit d20651b881
3 changed files with 36 additions and 2 deletions
@@ -33,9 +33,10 @@ class PlatformStaticGenerator(
override fun invoke(codegen: ImplementationBodyCodegen, classBuilder: ClassBuilder) {
val typeMapper = state.getTypeMapper()
val asmMethod = typeMapper.mapSignature(descriptor).getAsmMethod()
val flags = Opcodes.ACC_STATIC or AsmUtil.getMethodAsmFlags(descriptor, OwnerKind.IMPLEMENTATION)
val methodVisitor = classBuilder.newMethod(
Synthetic(declarationOrigin.element, descriptor),
Opcodes.ACC_STATIC or AsmUtil.getMethodAsmFlags(descriptor, OwnerKind.IMPLEMENTATION),
flags,
asmMethod.getName()!!,
asmMethod.getDescriptor()!!,
typeMapper.mapSignature(descriptor).getGenericsSignature(),
@@ -43,7 +44,7 @@ class PlatformStaticGenerator(
AnnotationCodegen.forMethod(methodVisitor, typeMapper)!!.genAnnotations(descriptor, asmMethod.getReturnType())
if (state.getClassBuilderMode() == ClassBuilderMode.FULL) {
if (state.getClassBuilderMode() == ClassBuilderMode.FULL && flags and Opcodes.ACC_NATIVE == 0) {
methodVisitor.visitCode();
val iv = InstructionAdapter(methodVisitor)
val classDescriptor = descriptor.getContainingDeclaration() as ClassDescriptor