diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/RelocatorRemapper.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/RelocatorRemapper.kt index d178d149b..ae00eb4bd 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/RelocatorRemapper.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/RelocatorRemapper.kt @@ -24,6 +24,8 @@ import java.lang.classfile.attribute.ExceptionsAttribute import java.lang.classfile.attribute.InnerClassInfo import java.lang.classfile.attribute.InnerClassesAttribute import java.lang.classfile.attribute.ModuleAttribute +import java.lang.classfile.attribute.ModuleExportInfo +import java.lang.classfile.attribute.ModuleOpenInfo import java.lang.classfile.attribute.ModuleProvideInfo import java.lang.classfile.attribute.NestHostAttribute import java.lang.classfile.attribute.NestMembersAttribute @@ -55,6 +57,7 @@ import java.lang.constant.DynamicCallSiteDesc import java.lang.constant.DynamicConstantDesc import java.lang.constant.MethodHandleDesc import java.lang.constant.MethodTypeDesc +import java.lang.constant.PackageDesc import java.util.regex.Pattern /** @@ -75,7 +78,7 @@ internal class RelocatorRemapper( cle.fieldName().stringValue(), mapClassDesc(ClassDesc.ofDescriptor(cle.fieldType().stringValue())), ) { fb -> - fb.transform(cle, asFieldTransform()) + fb.withFlags(cle.flags().flagsMask()).transform(cle, asFieldTransform()) } is MethodModel -> clb.withMethod( @@ -123,8 +126,28 @@ internal class RelocatorRemapper( cle.moduleFlagsMask(), cle.moduleVersion().orElse(null), cle.requires(), - cle.exports(), - cle.opens(), + cle.exports().map { mei -> + ModuleExportInfo.of( + clb + .constantPool() + .packageEntry( + PackageDesc.ofInternalName(map(mei.exportedPackage().asSymbol().internalName())) + ), + mei.exportsFlagsMask(), + mei.exportsTo(), + ) + }, + cle.opens().map { moi -> + ModuleOpenInfo.of( + clb + .constantPool() + .packageEntry( + PackageDesc.ofInternalName(map(moi.openedPackage().asSymbol().internalName())) + ), + moi.opensFlagsMask(), + moi.opensTo(), + ) + }, cle.uses().map { clb.constantPool().classEntry(mapClassDesc(it.asSymbol())!!) }, cle.provides().map { mp -> ModuleProvideInfo.of(