@@ -13,9 +13,12 @@ import java.util.zip.ZipFile
1313
1414open class CheckClassesSame : DefaultTask () {
1515 private val logger = LoggerFactory .getLogger(" CheckClassesSame" )
16- @InputFile var src: File ? = null
17- @InputFile var dst: File ? = null
18- @Input var rootPackage: String? = null
16+ @InputFile
17+ var src: File ? = null
18+ @InputFile
19+ var dst: File ? = null
20+ @Input
21+ var rootPackage: String? = null
1922
2023 private val differences = mutableSetOf<Difference >()
2124
@@ -33,8 +36,8 @@ open class CheckClassesSame : DefaultTask() {
3336 val srcClasses = mutableSetOf<String >()
3437
3538 srcZip.entries().asSequence().forEach { srcEntry ->
36- if (! srcEntry.name.endsWith(" .class" )) return @forEach
37- if (! srcEntry.name.startsWith(rootPackagePath)) return @forEach
39+ if (! srcEntry.name.endsWith(" .class" )) return @forEach
40+ if (! srcEntry.name.startsWith(rootPackagePath)) return @forEach
3841 srcClasses.add(srcEntry.name)
3942 val dstEntry = dstZip.getEntry(srcEntry.name)
4043 if (dstEntry == null ) return @forEach addDiff(Difference .ClassOnlyInSrc (srcEntry.name.removeSuffix(" .class" )))
@@ -45,8 +48,8 @@ open class CheckClassesSame : DefaultTask() {
4548 }
4649
4750 srcZip.entries().asSequence().forEach { dstEntry ->
48- if (! dstEntry.name.endsWith(" .class" )) return @forEach
49- if (! dstEntry.name.startsWith(rootPackagePath)) return @forEach
51+ if (! dstEntry.name.endsWith(" .class" )) return @forEach
52+ if (! dstEntry.name.startsWith(rootPackagePath)) return @forEach
5053 if (dstEntry.name !in srcClasses)
5154 addDiff(Difference .ClassOnlyInDst (dstEntry.name.removeSuffix(" .class" )))
5255 }
@@ -140,67 +143,81 @@ open class CheckClassesSame : DefaultTask() {
140143 if (srcInsn.opcode != dstInsn.opcode) return false
141144 if (srcInsn.javaClass != dstInsn.javaClass) return false
142145 when (srcInsn) {
143- is FieldInsnNode -> { dstInsn as FieldInsnNode
146+ is FieldInsnNode -> {
147+ dstInsn as FieldInsnNode
144148 if (srcInsn.owner != dstInsn.owner) return false
145149 if (srcInsn.name != dstInsn.name) return false
146150 if (srcInsn.desc != dstInsn.desc) return false
147151 }
148- is IincInsnNode -> { dstInsn as IincInsnNode
152+ is IincInsnNode -> {
153+ dstInsn as IincInsnNode
149154 if (srcInsn.`var ` != dstInsn.`var `) return false
150155 if (srcInsn.incr != dstInsn.incr) return false
151156 }
152- is InsnNode -> { dstInsn as InsnNode
157+ is InsnNode -> {
158+ dstInsn as InsnNode
153159 }
154- is IntInsnNode -> { dstInsn as IntInsnNode
160+ is IntInsnNode -> {
161+ dstInsn as IntInsnNode
155162 if (srcInsn.operand != dstInsn.operand) return false
156163 }
157- is InvokeDynamicInsnNode -> { dstInsn as InvokeDynamicInsnNode
164+ is InvokeDynamicInsnNode -> {
165+ dstInsn as InvokeDynamicInsnNode
158166 if (srcInsn.name != dstInsn.name) return false
159167 if (srcInsn.desc != dstInsn.desc) return false
160168 if (srcInsn.bsm != dstInsn.bsm) return false
161169 if (! srcInsn.bsmArgs.contentEquals(dstInsn.bsmArgs)) return false
162170 }
163- is JumpInsnNode -> { dstInsn as JumpInsnNode
171+ is JumpInsnNode -> {
172+ dstInsn as JumpInsnNode
164173 // if (srcInsn.label != dstInsn.label) return false
165174 }
166- is LdcInsnNode -> { dstInsn as LdcInsnNode
175+ is LdcInsnNode -> {
176+ dstInsn as LdcInsnNode
167177 if (srcInsn.cst != dstInsn.cst) return false
168178 }
169- is LookupSwitchInsnNode -> { dstInsn as LookupSwitchInsnNode
179+ is LookupSwitchInsnNode -> {
180+ dstInsn as LookupSwitchInsnNode
170181 // if (srcInsn.dflt != dstInsn.dflt) return false
171182 if (srcInsn.keys != dstInsn.keys) return false
172183 // if (srcInsn.labels != dstInsn.labels) return false
173184 }
174- is MethodInsnNode -> { dstInsn as MethodInsnNode
185+ is MethodInsnNode -> {
186+ dstInsn as MethodInsnNode
175187 if (srcInsn.owner != dstInsn.owner) return false
176188 if (srcInsn.name != dstInsn.name) return false
177189 if (srcInsn.desc != dstInsn.desc) return false
178190 if (srcInsn.itf != dstInsn.itf) return false
179191 }
180- is MultiANewArrayInsnNode -> { dstInsn as MultiANewArrayInsnNode
192+ is MultiANewArrayInsnNode -> {
193+ dstInsn as MultiANewArrayInsnNode
181194 if (srcInsn.desc != dstInsn.desc) return false
182195 if (srcInsn.dims != dstInsn.dims) return false
183196 }
184- is TableSwitchInsnNode -> { dstInsn as TableSwitchInsnNode
197+ is TableSwitchInsnNode -> {
198+ dstInsn as TableSwitchInsnNode
185199 if (srcInsn.min != dstInsn.min) return false
186200 if (srcInsn.max != dstInsn.max) return false
187201 // if (srcInsn.dflt != dstInsn.dflt) return false
188202 // if (srcInsn.labels != dstInsn.labels) return false
189203 }
190- is TypeInsnNode -> { dstInsn as TypeInsnNode
204+ is TypeInsnNode -> {
205+ dstInsn as TypeInsnNode
191206 if (srcInsn.desc != dstInsn.desc) return false
192207 }
193- is VarInsnNode -> { dstInsn as VarInsnNode
208+ is VarInsnNode -> {
209+ dstInsn as VarInsnNode
194210 if (srcInsn.`var ` != dstInsn.`var `) return false
195211 }
196212 else -> error(" Not yet implemented: ${srcInsn.javaClass.simpleName} " )
197213 }
198214 return true
199215 }
200216
201- private fun readClass (byteArray : ByteArray ): ClassNode
202- = ClassNode ().apply { ClassReader (byteArray)
203- .accept(this , ClassReader .SKIP_DEBUG + ClassReader .SKIP_FRAMES ) }
217+ private fun readClass (byteArray : ByteArray ): ClassNode = ClassNode ().apply {
218+ ClassReader (byteArray)
219+ .accept(this , ClassReader .SKIP_DEBUG + ClassReader .SKIP_FRAMES )
220+ }
204221
205222 private fun <K , V > Map <K , V >.zipNullable (other : Map <K , V >): Map <K , Pair <V ?, V ?>> {
206223 val result = mutableMapOf<K , Pair <V ?, V ?>>()
@@ -225,12 +242,33 @@ open class CheckClassesSame : DefaultTask() {
225242 data class MethodOnlyInSrc (val owner : String , val name : String , val desc : String ) : Difference()
226243 data class MethodOnlyInDst (val owner : String , val name : String , val desc : String ) : Difference()
227244 data class ClassSignatureChanged (val className : String , val src : String? , val dst : String? ) : Difference()
228- data class FieldSignatureChanged (val owner : String , val name : String , val desc : String , val src : String? , val dst : String? ) : Difference()
229- data class MethodSignatureChanged (val owner : String , val name : String , val desc : String , val src : String? , val dst : String? ) : Difference()
245+ data class FieldSignatureChanged (
246+ val owner : String ,
247+ val name : String ,
248+ val desc : String ,
249+ val src : String? ,
250+ val dst : String?
251+ ) : Difference()
252+
253+ data class MethodSignatureChanged (
254+ val owner : String ,
255+ val name : String ,
256+ val desc : String ,
257+ val src : String? ,
258+ val dst : String?
259+ ) : Difference()
260+
230261 data class FieldAccessChanged (val owner : String , val name : String , val desc : String ) : Difference()
231262 data class MethodAccessChanged (val owner : String , val name : String , val desc : String ) : Difference()
232263 data class FieldValueChanged (val owner : String , val name : String , val desc : String ) : Difference()
233- data class MethodCodeChanged (val owner : String , val name : String , val desc : String , val source : List <AbstractInsnNode >, val patch : Patch <AbstractInsnNode >) : Difference()
264+ data class MethodCodeChanged (
265+ val owner : String ,
266+ val name : String ,
267+ val desc : String ,
268+ val source : List <AbstractInsnNode >,
269+ val patch : Patch <AbstractInsnNode >
270+ ) : Difference()
271+
234272 data class AnnotationDefaultChanged (val owner : String , val name : String , val desc : String ) : Difference()
235273 }
236274}
0 commit comments