add inner class aw processing
All checks were successful
Publish to snapshot maven / build (push) Successful in 21s

This commit is contained in:
moehreag 2024-06-11 23:39:27 +02:00
parent bdc9fe585c
commit 3138da0797
2 changed files with 20 additions and 4 deletions

View file

@ -23,7 +23,7 @@ object AccessWidener {
private val PARSER = TomlParser()
private var awHash = ""
private val awHashes = mutableMapOf<Project, String>()
private val HEADER = Pattern.compile("accessWidener\\s+v[12]\\s+.*").asMatchPredicate()
private val SEPARATOR = "[\\t ]+".toRegex()
@ -54,8 +54,8 @@ object AccessWidener {
fun needsUpdate(project: Project): Boolean {
getAWFile(project)?.let {
val hash = Hashing.sha256().hashBytes(it.readBytes()).toString()
if (hash != awHash) {
awHash = hash
if (!awHashes.containsKey(project) || hash != awHashes[project]) {
awHashes[project] = hash
return true
}
}
@ -298,4 +298,21 @@ class AWClassVisitor(
}
return super.visitMethod(access, name, descriptor, signature, exceptions)
}
override fun visitInnerClass(name: String?, outerName: String?, innerName: String?, acc: Int) {
var access = acc
val e = classMap[name!!]
if (e != null) {
access = access and (Opcodes.ACC_PRIVATE or Opcodes.ACC_PROTECTED or Opcodes.ACC_PUBLIC).inv()
access = access or e.type.access
}
if (fields.containsKey(name) || methods.containsKey(name) || mutations.containsKey(
name
)
) { // make all classes with modifications public as well
access = access and (Opcodes.ACC_PRIVATE or Opcodes.ACC_PROTECTED or Opcodes.ACC_PUBLIC).inv()
access = access or Opcodes.ACC_PUBLIC
}
super.visitInnerClass(name, outerName, innerName, access)
}
}

View file

@ -6,7 +6,6 @@ import com.electronwill.nightconfig.core.io.WritingMode
import com.electronwill.nightconfig.toml.TomlParser
import com.electronwill.nightconfig.toml.TomlWriter
import dev.frogmc.phytotelma.Constants
import dev.frogmc.phytotelma.PhytotelmaPlugin
import dev.frogmc.phytotelma.ProjectStorage
import dev.frogmc.phytotelma.nest.Nester
import org.gradle.api.DefaultTask