|
9 | 9 |
|
10 | 10 | import com.guardsquare.proguard.kotlin.printer.KotlinMetadataPrinter;
|
11 | 11 | import com.guardsquare.proguard.kotlin.printer.internal.visitor.ConstantToStringVisitor;
|
| 12 | +import java.util.HashMap; |
| 13 | +import java.util.Map; |
12 | 14 | import proguard.classfile.Clazz;
|
| 15 | +import proguard.classfile.TypeConstants; |
13 | 16 | import proguard.classfile.attribute.Attribute;
|
14 | 17 | import proguard.classfile.attribute.annotation.Annotation;
|
15 | 18 | import proguard.classfile.attribute.annotation.AnnotationElementValue;
|
@@ -40,7 +43,18 @@ public class AnnotationPrinter
|
40 | 43 | private final KotlinMetadataPrinter printer;
|
41 | 44 | private final boolean inline;
|
42 | 45 | private int level = 0;
|
43 |
| - |
| 46 | + private static final Map<Character, String> primitiveTypeToClass = new HashMap<>(); |
| 47 | + |
| 48 | + static { |
| 49 | + primitiveTypeToClass.put(TypeConstants.BOOLEAN, "Boolean::class"); |
| 50 | + primitiveTypeToClass.put(TypeConstants.BYTE, "Byte::class"); |
| 51 | + primitiveTypeToClass.put(TypeConstants.CHAR, "Char::class"); |
| 52 | + primitiveTypeToClass.put(TypeConstants.SHORT, "Short::class"); |
| 53 | + primitiveTypeToClass.put(TypeConstants.INT, "Int::class"); |
| 54 | + primitiveTypeToClass.put(TypeConstants.FLOAT, "Float::class"); |
| 55 | + primitiveTypeToClass.put(TypeConstants.LONG, "Long::class"); |
| 56 | + primitiveTypeToClass.put(TypeConstants.DOUBLE, "Double::class"); |
| 57 | + } |
44 | 58 |
|
45 | 59 | public AnnotationPrinter(KotlinMetadataPrinter printer)
|
46 | 60 | {
|
@@ -130,15 +144,20 @@ public void visitEnumConstantElementValue(Clazz clazz,
|
130 | 144 | printer.print("." + enumConstantElementValue.getConstantName(clazz));
|
131 | 145 | }
|
132 | 146 |
|
133 |
| - |
134 | 147 | @Override
|
135 | 148 | public void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue)
|
136 | 149 | {
|
137 | 150 | visitAnyElementValue(clazz, annotation, classElementValue);
|
138 |
| - printer.print(printer.getContext().className(ClassUtil.internalClassNameFromType(classElementValue.getClassName(clazz)), ".")); |
| 151 | + String internalClassName; |
| 152 | + String className = classElementValue.getClassName(clazz); |
| 153 | + if (ClassUtil.isInternalPrimitiveType(className)) { |
| 154 | + internalClassName = primitiveTypeToClass.get(className.charAt(0)); |
| 155 | + } else { |
| 156 | + internalClassName = ClassUtil.internalClassNameFromType(className); |
| 157 | + } |
| 158 | + printer.print(printer.getContext().className(internalClassName, ".")); |
139 | 159 | }
|
140 | 160 |
|
141 |
| - |
142 | 161 | @Override
|
143 | 162 | public void visitAnnotationElementValue(Clazz clazz,
|
144 | 163 | Annotation annotation,
|
|
0 commit comments