Skip to content

Commit cee860e

Browse files
committed
fix handing of generic params of non-iterable types
1 parent 1f13074 commit cee860e

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

src/main/java/jvm2dts/Converter.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public class Converter {
2121
Logger logger = Logger.getLogger(Converter.class.getName());
2222

2323
static final int ASM_VERSION = detectAsmVersion();
24-
static final char[] ALPHABET = "TUVWYXYZABCDEFGHIJKLMNOPQRS".toCharArray();
2524
TypeMapper typeMapper;
2625

2726
static int detectAsmVersion() {
@@ -196,7 +195,7 @@ private boolean processGenericField(StringBuilder typeBuffer, Class<?> fieldType
196195
typeBuffer.append("<");
197196
for (int j = 0; j < parameterTypes.length; j++) {
198197
if (j > 0) typeBuffer.append(",");
199-
typeBuffer.append(ALPHABET[j % ALPHABET.length]);
198+
convertIterableGenerics(parameterTypes[j], typeBuffer);
200199
}
201200
typeBuffer.append(">");
202201
}
@@ -205,14 +204,12 @@ private boolean processGenericField(StringBuilder typeBuffer, Class<?> fieldType
205204
}
206205

207206
private void convertIterableGenerics(Type type, StringBuilder typeBuffer) throws ClassCastException {
208-
if (type instanceof WildcardType) {
209-
var wildcardType = (WildcardType) type;
207+
if (type instanceof WildcardType wildcardType) {
210208
var bounds = wildcardType.getLowerBounds();
211209
if (bounds.length == 0) bounds = wildcardType.getUpperBounds();
212210
if (bounds[0] instanceof ParameterizedType) convertIterableGenerics(bounds[0], typeBuffer);
213211
else typeBuffer.append(typeMapper.getTSType((Class<?>) bounds[0]));
214-
} else if (type instanceof ParameterizedType) {
215-
var parameterizedType = (ParameterizedType) type;
212+
} else if (type instanceof ParameterizedType parameterizedType) {
216213
var elementType = (Class<?>) parameterizedType.getRawType();
217214
if (Iterable.class.isAssignableFrom(elementType))
218215
typeBuffer.append(typeMapper.getTSType((Class<?>) parameterizedType.getActualTypeArguments()[0])).append("[]");

src/test/java/jvm2dts/ConverterTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ public class ConverterTest {
1414
void collections() {
1515
assertThat(converter.convert(Collections.class)).isEqualTo("interface Collections {" +
1616
"dates: string[]; " +
17-
"extendedGeneric: SingleGeneric<T>; " +
18-
"generic: MultiGeneric<T,U,V>; " +
17+
"extendedGeneric: SingleGeneric<Role>; " +
18+
"generic: MultiGeneric<any,any,any>; " +
1919
"genericRecursiveList: SingleGeneric[]; " +
2020
"ids: string[]; " +
2121
"map: {[key: string]: number}; " +
2222
"mapInMap: {[key: string]: {[key: string]: number}}; " +
2323
"rawType: ArrayList; " +
2424
"roles: Role[]; " +
25-
"superGeneric: SingleGeneric<T>; " +
25+
"superGeneric: SingleGeneric<Role>; " +
2626
"superGenericList: Role[];" +
2727
"}");
2828
}

0 commit comments

Comments
 (0)