Skip to content

Commit

Permalink
Update to stable kotlin.metadata library
Browse files Browse the repository at this point in the history
Uses the new stable metadata library (kotlin.metadata) instead of the old kotlinx.metadata library.
  • Loading branch information
Toon Willemot committed Apr 25, 2024
1 parent f6bfc16 commit f9e9b49
Show file tree
Hide file tree
Showing 35 changed files with 1,190 additions and 1,343 deletions.
5 changes: 3 additions & 2 deletions base/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ plugins {
dependencies {
api "org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}"
api "org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion}"
api "org.jetbrains.kotlinx:kotlinx-metadata-jvm:${kotlinxMetadataVersion}"
api "org.jetbrains.kotlin:kotlin-metadata-jvm:${kotlinVersion}"


implementation 'org.jetbrains:annotations:24.0.0'

Expand All @@ -23,7 +24,7 @@ dependencies {
testImplementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}"
testImplementation "org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}"
testFixturesImplementation "org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}"
testFixturesImplementation group: "dev.zacsweers.kctfork", name: "core", version: "0.3.1"
testFixturesImplementation group: "dev.zacsweers.kctfork", name: "core", version: "0.4.1"
testFixturesImplementation 'io.kotest:kotest-runner-junit5-jvm:5.5.4' // for kotest framework
testImplementation 'io.kotest:kotest-runner-junit5-jvm:5.5.4' // for kotest framework
testImplementation 'io.kotest:kotest-assertions-core-jvm:5.5.4' // for kotest core jvm assertions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1034,7 +1034,7 @@ private static MethodSignature fixPropertyMethod(

if (!oldSignature.equals(newSignature) && flags != null) {
addJvmNameAnnotation((ProgramClass) referencedMethodClass, (ProgramMethod) referencedMethod);
flags.common.hasAnnotations = true;
flags.hasAnnotations = true;
}

return newSignature;
Expand Down
55 changes: 45 additions & 10 deletions base/src/main/java/proguard/classfile/io/LibraryClassReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,51 @@
import static proguard.classfile.util.kotlin.KotlinMetadataInitializer.isValidKotlinMetadataAnnotationField;
import static proguard.classfile.util.kotlin.KotlinMetadataInitializer.metadataTypeOf;

import java.io.*;
import java.util.*;
import proguard.classfile.*;
import proguard.classfile.attribute.annotation.*;
import java.io.DataInput;
import java.util.ArrayList;
import java.util.List;
import proguard.classfile.Clazz;
import proguard.classfile.LibraryClass;
import proguard.classfile.LibraryField;
import proguard.classfile.LibraryMember;
import proguard.classfile.LibraryMethod;
import proguard.classfile.ProgramClass;
import proguard.classfile.ProgramMember;
import proguard.classfile.TypeConstants;
import proguard.classfile.attribute.annotation.Annotation;
import proguard.classfile.attribute.annotation.AnnotationElementValue;
import proguard.classfile.attribute.annotation.ArrayElementValue;
import proguard.classfile.attribute.annotation.ClassElementValue;
import proguard.classfile.attribute.annotation.ConstantElementValue;
import proguard.classfile.attribute.annotation.ElementValue;
import proguard.classfile.attribute.annotation.EnumConstantElementValue;
import proguard.classfile.attribute.annotation.visitor.ElementValueVisitor;
import proguard.classfile.constant.*;
import proguard.classfile.constant.ClassConstant;
import proguard.classfile.constant.Constant;
import proguard.classfile.constant.DoubleConstant;
import proguard.classfile.constant.DynamicConstant;
import proguard.classfile.constant.FieldrefConstant;
import proguard.classfile.constant.FloatConstant;
import proguard.classfile.constant.IntegerConstant;
import proguard.classfile.constant.InterfaceMethodrefConstant;
import proguard.classfile.constant.InvokeDynamicConstant;
import proguard.classfile.constant.LongConstant;
import proguard.classfile.constant.MethodHandleConstant;
import proguard.classfile.constant.MethodTypeConstant;
import proguard.classfile.constant.MethodrefConstant;
import proguard.classfile.constant.ModuleConstant;
import proguard.classfile.constant.NameAndTypeConstant;
import proguard.classfile.constant.PackageConstant;
import proguard.classfile.constant.PrimitiveArrayConstant;
import proguard.classfile.constant.RefConstant;
import proguard.classfile.constant.StringConstant;
import proguard.classfile.constant.Utf8Constant;
import proguard.classfile.constant.visitor.ConstantVisitor;
import proguard.classfile.util.*;
import proguard.classfile.util.kotlin.KotlinMetadataInitializer.MetadataType;
import proguard.classfile.visitor.*;
import proguard.classfile.util.AccessUtil;
import proguard.classfile.util.ClassUtil;
import proguard.classfile.util.kotlin.KotlinMetadataType;
import proguard.classfile.visitor.ClassVisitor;
import proguard.classfile.visitor.MemberVisitor;
import proguard.io.RuntimeDataInput;

/**
Expand Down Expand Up @@ -501,11 +536,11 @@ private ElementValue createElementValue() {

private class KotlinMetadataAnnotationElementValueReader implements ElementValueVisitor {

private final MetadataType elementName;
private final KotlinMetadataType elementName;
private final KotlinMetadataElementValues kotlinMetadataFields;

public KotlinMetadataAnnotationElementValueReader(
MetadataType elementName, KotlinMetadataElementValues kotlinMetadataFields) {
KotlinMetadataType elementName, KotlinMetadataElementValues kotlinMetadataFields) {
this.elementName = elementName;
this.kotlinMetadataFields = kotlinMetadataFields;
}
Expand Down

0 comments on commit f9e9b49

Please sign in to comment.