From cecd9144681f99f512900079289dc31ae57967e8 Mon Sep 17 00:00:00 2001 From: jycouet Date: Fri, 26 Jun 2026 19:44:11 +0200 Subject: [PATCH] fix: print class type parameters --- .changeset/class-type-parameters.md | 5 +++++ src/languages/ts/index.js | 7 +++++++ test/samples/ts-class-type-parameters/expected.ts | 2 ++ test/samples/ts-class-type-parameters/expected.ts.map | 11 +++++++++++ test/samples/ts-class-type-parameters/input.ts | 2 ++ 5 files changed, 27 insertions(+) create mode 100644 .changeset/class-type-parameters.md create mode 100644 test/samples/ts-class-type-parameters/expected.ts create mode 100644 test/samples/ts-class-type-parameters/expected.ts.map create mode 100644 test/samples/ts-class-type-parameters/input.ts diff --git a/.changeset/class-type-parameters.md b/.changeset/class-type-parameters.md new file mode 100644 index 00000000..2fc6b1d1 --- /dev/null +++ b/.changeset/class-type-parameters.md @@ -0,0 +1,5 @@ +--- +'esrap': patch +--- + +fix: print class type parameters (`class Foo`) diff --git a/src/languages/ts/index.js b/src/languages/ts/index.js index ebc60867..bb3e5bdb 100644 --- a/src/languages/ts/index.js +++ b/src/languages/ts/index.js @@ -653,6 +653,13 @@ export default (options = {}) => { if (node.id) { context.visit(node.id); + } + + if (node.typeParameters) { + context.visit(node.typeParameters); + } + + if (node.id || node.typeParameters) { context.write(' '); } diff --git a/test/samples/ts-class-type-parameters/expected.ts b/test/samples/ts-class-type-parameters/expected.ts new file mode 100644 index 00000000..d8f0e407 --- /dev/null +++ b/test/samples/ts-class-type-parameters/expected.ts @@ -0,0 +1,2 @@ +class Foo {} +class Baz extends Bar {} \ No newline at end of file diff --git a/test/samples/ts-class-type-parameters/expected.ts.map b/test/samples/ts-class-type-parameters/expected.ts.map new file mode 100644 index 00000000..1f2314b2 --- /dev/null +++ b/test/samples/ts-class-type-parameters/expected.ts.map @@ -0,0 +1,11 @@ +{ + "version": 3, + "names": [], + "sources": [ + "input.js" + ], + "sourcesContent": [ + "class Foo {}\nclass Baz extends Bar {}\n" + ], + "mappings": "AAAA,MAAM,AAAA,GAAG,CAAC,CAAC,EAAE,CAAC,AAAA,CAAC;AACf,MAAM,AAAA,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,AAAA,CAAC" +} \ No newline at end of file diff --git a/test/samples/ts-class-type-parameters/input.ts b/test/samples/ts-class-type-parameters/input.ts new file mode 100644 index 00000000..20b5a1c2 --- /dev/null +++ b/test/samples/ts-class-type-parameters/input.ts @@ -0,0 +1,2 @@ +class Foo {} +class Baz extends Bar {}