From 458a63c75f2022298d8f28882cc87c35896cb17d Mon Sep 17 00:00:00 2001 From: Oleg Schelykalnov Date: Wed, 24 Jul 2019 11:10:39 +0300 Subject: [PATCH] Fix recursive call to javaToTypeScript. --- .../generator/compiler/ModelCompiler.java | 6 +++--- .../typescript/generator/GenericsTest.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java b/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java index f5b9c9405..a4aa4b529 100644 --- a/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java +++ b/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java @@ -330,7 +330,7 @@ private TsBeanModel processBean(SymbolTable symbolTable, Model model, Map cls) { return cls != null && !cls.isInterface() && settings.getMapClassesAsClassesFilter().test(cls.getName()); } - private List getTypeParameters(Class cls) { + private List getTypeParameters(SymbolTable symbolTable, Class cls) { final List typeParameters = new ArrayList<>(); for (TypeVariable typeParameter : cls.getTypeParameters()) { final List bounds = new ArrayList<>(); for (Type bound : typeParameter.getBounds()) { if (!Object.class.equals(bound)) { - bounds.add(javaToTypeScript(bound)); + bounds.add(typeFromJava(symbolTable, bound)); } } switch (bounds.size()) { diff --git a/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/GenericsTest.java b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/GenericsTest.java index d83239b7c..bce46eee7 100644 --- a/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/GenericsTest.java +++ b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/GenericsTest.java @@ -162,6 +162,19 @@ public void testGenericBoundsParameter() { assertEquals(expected, output.trim()); } + @Test + public void testGenericRecirsiveBoundsParameter() { + final Settings settings = TestUtils.settings(); + final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(H.class)); + final String nl = settings.newline; + final String expected = + "interface H> {" + nl + + " x: T;" + nl + + " y: S;" + nl + + "}"; + assertEquals(expected, output.trim()); + } + class A { public A x; public A, List> y; @@ -189,6 +202,11 @@ class G { public T x; } + class H> { + public T x; + public S y; + } + abstract class IA implements IB, Comparable { }