Skip to content

Commit 458a63c

Browse files
Oleg Schelykalnovolegshtch
Oleg Schelykalnov
authored andcommitted
Fix recursive call to javaToTypeScript.
1 parent cf2dd00 commit 458a63c

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ private <T> TsBeanModel processBean(SymbolTable symbolTable, Model model, Map<Ty
330330
TsBeanCategory.Data,
331331
isClass,
332332
symbolTable.getSymbol(bean.getOrigin()),
333-
getTypeParameters(bean.getOrigin()),
333+
getTypeParameters(symbolTable, bean.getOrigin()),
334334
parentType,
335335
extendsList,
336336
implementsList,
@@ -347,13 +347,13 @@ private boolean mappedToClass(Class<?> cls) {
347347
return cls != null && !cls.isInterface() && settings.getMapClassesAsClassesFilter().test(cls.getName());
348348
}
349349

350-
private List<TsType.BoundedGenericVariableType> getTypeParameters(Class<?> cls) {
350+
private List<TsType.BoundedGenericVariableType> getTypeParameters(SymbolTable symbolTable, Class<?> cls) {
351351
final List<TsType.BoundedGenericVariableType> typeParameters = new ArrayList<>();
352352
for (TypeVariable<?> typeParameter : cls.getTypeParameters()) {
353353
final List<TsType> bounds = new ArrayList<>();
354354
for (Type bound : typeParameter.getBounds()) {
355355
if (!Object.class.equals(bound)) {
356-
bounds.add(javaToTypeScript(bound));
356+
bounds.add(typeFromJava(symbolTable, bound));
357357
}
358358
}
359359
switch (bounds.size()) {

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/GenericsTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,19 @@ public void testGenericBoundsParameter() {
162162
assertEquals(expected, output.trim());
163163
}
164164

165+
@Test
166+
public void testGenericRecirsiveBoundsParameter() {
167+
final Settings settings = TestUtils.settings();
168+
final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(H.class));
169+
final String nl = settings.newline;
170+
final String expected =
171+
"interface H<T, S extends H<T, S>> {" + nl +
172+
" x: T;" + nl +
173+
" y: S;" + nl +
174+
"}";
175+
assertEquals(expected, output.trim());
176+
}
177+
165178
class A<U,V> {
166179
public A<String, String> x;
167180
public A<A<String, B>, List<String>> y;
@@ -189,6 +202,11 @@ class G<T extends F> {
189202
public T x;
190203
}
191204

205+
class H<T, S extends H<T, S>> {
206+
public T x;
207+
public S y;
208+
}
209+
192210
abstract class IA implements IB<String>, Comparable<IA> {
193211
}
194212

0 commit comments

Comments
 (0)