From 3fc25531b74ce77760ec0d582b19dde6a822e178 Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Sun, 29 Sep 2024 10:05:50 +0200 Subject: [PATCH] A bit more type mapping support --- openrewrite/src/javascript/typeMapping.ts | 6 ++++- .../test/javascript/parser/binary.test.ts | 23 ++++++++++++++++++- .../test/javascript/parser/literal.test.ts | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/openrewrite/src/javascript/typeMapping.ts b/openrewrite/src/javascript/typeMapping.ts index e2be77c..8852d47 100644 --- a/openrewrite/src/javascript/typeMapping.ts +++ b/openrewrite/src/javascript/typeMapping.ts @@ -52,7 +52,7 @@ export class JavaScriptTypeMapping { private createType(node: ts.Node, type: ts.Type, signature: string): JavaType { if (type.isLiteral()) { if (type.isNumberLiteral()) { - return JavaType.Primitive.of(JavaType.PrimitiveKind.Long); + return JavaType.Primitive.of(JavaType.PrimitiveKind.Double); } else if (type.isStringLiteral()) { return JavaType.Primitive.of(JavaType.PrimitiveKind.String); } @@ -60,6 +60,10 @@ export class JavaScriptTypeMapping { if (type.flags === ts.TypeFlags.Null) { return JavaType.Primitive.of(JavaType.PrimitiveKind.Null); + } else if (type.flags === ts.TypeFlags.Number) { + return JavaType.Primitive.of(JavaType.PrimitiveKind.Double); + } else if (type.flags === ts.TypeFlags.String) { + return JavaType.Primitive.of(JavaType.PrimitiveKind.String); } else if (type.flags === ts.TypeFlags.BooleanLiteral) { return JavaType.Primitive.of(JavaType.PrimitiveKind.Boolean); } else if (type.flags === ts.TypeFlags.Void) { diff --git a/openrewrite/test/javascript/parser/binary.test.ts b/openrewrite/test/javascript/parser/binary.test.ts index a482135..858ef2d 100644 --- a/openrewrite/test/javascript/parser/binary.test.ts +++ b/openrewrite/test/javascript/parser/binary.test.ts @@ -1,3 +1,6 @@ +import * as J from "../../../dist/src/java/tree"; +import {JavaType} from "../../../dist/src/java"; +import * as JS from "../../../dist/src/javascript"; import {connect, disconnect, rewriteRun, typeScript} from '../testHarness'; describe('arithmetic operator mapping', () => { @@ -7,7 +10,25 @@ describe('arithmetic operator mapping', () => { test('plus', () => { rewriteRun( //language=typescript - typeScript('1 + 2') + typeScript( + '1 + 2', + cu => { + const binary = (cu.statements[0]).expression; + expect((binary.type).kind).toBe(JavaType.PrimitiveKind.Double); + } + ) + ); + }); + test('concat', () => { + rewriteRun( + //language=typescript + typeScript( + '"1" + 2', + cu => { + const binary = (cu.statements[0]).expression; + expect((binary.type).kind).toBe(JavaType.PrimitiveKind.String); + } + ) ); }); diff --git a/openrewrite/test/javascript/parser/literal.test.ts b/openrewrite/test/javascript/parser/literal.test.ts index 32c5a0c..198ba73 100644 --- a/openrewrite/test/javascript/parser/literal.test.ts +++ b/openrewrite/test/javascript/parser/literal.test.ts @@ -11,7 +11,7 @@ describe('identifier mapping', () => { rewriteRunWithOptions( {normalizeIndent: false}, typeScript(' 1', sourceFile => { - assertLiteralLst(sourceFile, '1', JavaType.PrimitiveKind.Long); + assertLiteralLst(sourceFile, '1', JavaType.PrimitiveKind.Double); })); }); test('string', () => {