Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ public final class AssemblyConstants

public static final String ACC_ANNOTATION = "annotation";

public static final String TYPE_STRING = "String";
public static final String TYPE_CLASS = "Class";
public static final String TYPE_METHOD_HANDLE = "MethodHandle";
public static final String TYPE_METHOD_TYPE = "MethodType";
public static final String TYPE_STRING = "java.lang.String";
public static final String TYPE_CLASS = "java.lang.Class";
public static final String TYPE_METHOD_HANDLE = "java.lang.invoke.MethodHandle";
public static final String TYPE_METHOD_TYPE = "java.lang.invoke.MethodType";
public static final String TYPE_DYNAMIC = "Dynamic";
public static final String TYPE_ANNOTATION = "Annotation";
public static final String TYPE_ENUM = "Enum";
public static final String TYPE_ARRAY = "Array";
public static final String TYPE_ANNOTATION = "java.lang.Annotation";
public static final String TYPE_ENUM = "java.lang.Enum";
public static final String TYPE_ARRAY = "java.lang.reflect.Array";
public static final String TYPE_DOUBLE = "D";
public static final String TYPE_FLOAT = "F";
public static final String TYPE_LONG = "L";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.guardsquare.proguard

import io.kotest.core.spec.style.FreeSpec
import proguard.testutils.ClassPoolBuilder
import proguard.testutils.JavaSource

class AssembleDisassembleTest : FreeSpec({
"Test TYPE_METHOD_TYPE constant" {
val classBPools = ClassPoolBuilder.fromSource(
JavaSource(
"Main.java",
"""
import java.util.function.Consumer;

public class Main {
public static void test(Consumer<String> lambda) {
lambda.accept("Hello world!");
}

public static void main(String[] args) {
test(System.out::println);
}
}
""".trimIndent())
)

buildProgramClass(disassembleClass(classBPools.programClassPool.getClass("Main")))
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -114,17 +114,3 @@ class AssemblerErrorsTest : FreeSpec({
}
}
})

/**
* Helper function to build and parse a java bytecode class from a string
*/
fun buildProgramClass(jbc: String) {
val programClass = ProgramClass()
programClass.accept(
ClassParser(
Parser(
StringReader(jbc),
),
),
)
}
38 changes: 38 additions & 0 deletions pga-lib/src/test/kotlin/com/guardsquare/proguard/TestUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.guardsquare.proguard

import com.guardsquare.proguard.assembler.ClassParser
import com.guardsquare.proguard.assembler.Parser
import com.guardsquare.proguard.disassembler.ClassPrinter
import com.guardsquare.proguard.disassembler.Printer
import proguard.classfile.Clazz
import proguard.classfile.ProgramClass
import java.io.StringReader
import java.io.StringWriter

/**
* Helper function to build and parse a java bytecode class from a string
*/
fun buildProgramClass(jbc: String) {
val programClass = ProgramClass()
programClass.accept(
ClassParser(
Parser(
StringReader(jbc),
),
),
)
}

/**
* Helper function to disassemble a [Clazz] object.
*/
fun disassembleClass(clazz: Clazz): String {
val writer = StringWriter()
clazz.accept(
ClassPrinter(
Printer(writer)
)
)

return writer.toString();
}