[KAPT4] KT-51982 Implement generation of @Metadata annotations in Java stubs
Also adds rendering of @Metadata annotations in Kapt3 and Kapt4 tests (currently disabled for a few tests). Co-authored-by: Alexander Udalov <alexander.udalov@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
f40fc1b0c6
commit
2423b7b62f
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.codegen
|
||||
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
import org.jetbrains.kotlin.load.kotlin.JvmBytecodeBinaryVersion
|
||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||
@@ -37,13 +38,7 @@ fun writeKotlinMetadata(
|
||||
av.visit("bv", JvmBytecodeBinaryVersion.INSTANCE.toArray())
|
||||
}
|
||||
av.visit(JvmAnnotationNames.KIND_FIELD_NAME, kind.id)
|
||||
var flags = extraFlags
|
||||
if (state.languageVersionSettings.isPreRelease()) {
|
||||
flags = flags or JvmAnnotationNames.METADATA_PRE_RELEASE_FLAG
|
||||
}
|
||||
if (state.languageVersionSettings.getFlag(JvmAnalysisFlags.strictMetadataVersionSemantics)) {
|
||||
flags = flags or JvmAnnotationNames.METADATA_STRICT_VERSION_SEMANTICS_FLAG
|
||||
}
|
||||
var flags = extraFlags or generateLanguageVersionSettingsBasedMetadataFlags(state.languageVersionSettings)
|
||||
if (publicAbi) {
|
||||
flags = flags or JvmAnnotationNames.METADATA_PUBLIC_ABI_FLAG
|
||||
}
|
||||
@@ -59,3 +54,14 @@ fun writeSyntheticClassMetadata(cb: ClassBuilder, state: GenerationState, public
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
fun generateLanguageVersionSettingsBasedMetadataFlags(languageVersionSettings: LanguageVersionSettings): Int {
|
||||
var flags = 0
|
||||
if (languageVersionSettings.isPreRelease()) {
|
||||
flags = flags or JvmAnnotationNames.METADATA_PRE_RELEASE_FLAG
|
||||
}
|
||||
if (languageVersionSettings.getFlag(JvmAnalysisFlags.strictMetadataVersionSemantics)) {
|
||||
flags = flags or JvmAnnotationNames.METADATA_STRICT_VERSION_SEMANTICS_FLAG
|
||||
}
|
||||
return flags
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user