[FIR] Handle expect declarations in JVM backend
1. Do not generate bytecode for expect declarations 2. Serialize @OptionalExpectation annotations into .kotlin_module file ^KT-62931: Fixed
This commit is contained in:
committed by
Space Team
parent
b74501ee93
commit
d753a22fc6
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||
|
||||
open class AbstractAnnotationDeserializerWithTypeAnnotations(
|
||||
session: FirSession, protocol: SerializerExtensionProtocol
|
||||
) : AbstractAnnotationDeserializer(session, protocol) {
|
||||
override fun loadTypeAnnotations(typeProto: ProtoBuf.Type, nameResolver: NameResolver): List<FirAnnotation> {
|
||||
val annotations = typeProto.getExtension(protocol.typeAnnotation).orEmpty()
|
||||
return annotations.map { deserializeAnnotation(it, nameResolver) }
|
||||
}
|
||||
|
||||
override fun loadTypeParameterAnnotations(typeParameterProto: ProtoBuf.TypeParameter, nameResolver: NameResolver): List<FirAnnotation> {
|
||||
val annotations = typeParameterProto.getExtension(protocol.typeParameterAnnotation).orEmpty()
|
||||
return annotations.map { deserializeAnnotation(it, nameResolver) }
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||
|
||||
class MetadataBasedAnnotationDeserializer(session: FirSession) :
|
||||
AbstractAnnotationDeserializerWithTypeAnnotations(session, BuiltInSerializerProtocol)
|
||||
Reference in New Issue
Block a user