Add script metedata flag
This commit is contained in:
@@ -205,6 +205,7 @@ class ClassCodegen private constructor(
|
||||
val kind = when {
|
||||
facadeClassName != null -> KotlinClassHeader.Kind.MULTIFILE_CLASS_PART
|
||||
metadata is MetadataSource.Class -> KotlinClassHeader.Kind.CLASS
|
||||
metadata is MetadataSource.Script -> KotlinClassHeader.Kind.CLASS
|
||||
metadata is MetadataSource.File -> KotlinClassHeader.Kind.FILE_FACADE
|
||||
metadata is MetadataSource.Function -> KotlinClassHeader.Kind.SYNTHETIC_CLASS
|
||||
entry is MultifileFacadeFileEntry -> KotlinClassHeader.Kind.MULTIFILE_CLASS
|
||||
@@ -217,6 +218,9 @@ class ClassCodegen private constructor(
|
||||
if (isMultifileClassOrPart && state.languageVersionSettings.getFlag(JvmAnalysisFlags.inheritMultifileParts)) {
|
||||
extraFlags = extraFlags or JvmAnnotationNames.METADATA_MULTIFILE_PARTS_INHERIT_FLAG
|
||||
}
|
||||
if (metadata is MetadataSource.Script) {
|
||||
extraFlags = extraFlags or JvmAnnotationNames.METADATA_SCRIPT_FLAG
|
||||
}
|
||||
|
||||
writeKotlinMetadata(visitor, state, kind, extraFlags) {
|
||||
if (metadata != null) {
|
||||
|
||||
+4
@@ -34,6 +34,9 @@ class DescriptorMetadataSerializer(
|
||||
is DescriptorMetadataSource.Class -> DescriptorSerializer.create(
|
||||
metadata.descriptor, serializerExtension, (parent as? DescriptorMetadataSerializer)?.serializer, context.state.project
|
||||
)
|
||||
is DescriptorMetadataSource.Script -> DescriptorSerializer.create(
|
||||
metadata.descriptor, serializerExtension, (parent as? DescriptorMetadataSerializer)?.serializer, context.state.project
|
||||
)
|
||||
is DescriptorMetadataSource.File -> DescriptorSerializer.createTopLevel(serializerExtension)
|
||||
is DescriptorMetadataSource.Function -> DescriptorSerializer.createForLambda(serializerExtension)
|
||||
else -> null
|
||||
@@ -55,6 +58,7 @@ class DescriptorMetadataSerializer(
|
||||
}
|
||||
val message = when (metadata) {
|
||||
is DescriptorMetadataSource.Class -> serializer!!.classProto(metadata.descriptor).build()
|
||||
is DescriptorMetadataSource.Script -> serializer!!.classProto(metadata.descriptor).build()
|
||||
is DescriptorMetadataSource.File ->
|
||||
serializer!!.packagePartProto(irClass.getPackageFragment()!!.fqName, metadata.descriptors).apply {
|
||||
serializerExtension.serializeJvmPackage(this, type)
|
||||
|
||||
@@ -45,7 +45,7 @@ class ScriptGenerator(declarationGenerator: DeclarationGenerator) : DeclarationG
|
||||
|
||||
return context.symbolTable.declareScript(descriptor).buildWithScope { irScript ->
|
||||
|
||||
irScript.metadata = DescriptorMetadataSource.Class(descriptor)
|
||||
irScript.metadata = DescriptorMetadataSource.Script(descriptor)
|
||||
|
||||
val importedScripts = descriptor.implicitReceivers.filterIsInstanceTo(HashSet<ScriptDescriptor>())
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ interface MetadataSource {
|
||||
|
||||
interface File : MetadataSource
|
||||
interface Class : MetadataSource
|
||||
interface Script : MetadataSource
|
||||
interface Function : MetadataSource
|
||||
interface Property : MetadataSource {
|
||||
val isConst: Boolean
|
||||
@@ -30,6 +31,8 @@ sealed class DescriptorMetadataSource : MetadataSource {
|
||||
|
||||
class Class(override val descriptor: ClassDescriptor) : DescriptorMetadataSource(), MetadataSource.Class
|
||||
|
||||
class Script(override val descriptor: ScriptDescriptor) : DescriptorMetadataSource(), MetadataSource.Script
|
||||
|
||||
class Function(override val descriptor: FunctionDescriptor) : DescriptorMetadataSource(), MetadataSource.Function
|
||||
|
||||
class Property(override val descriptor: PropertyDescriptor) : DescriptorMetadataSource(), MetadataSource.Property {
|
||||
|
||||
Reference in New Issue
Block a user