diff --git a/packages/react-native-codegen/src/parsers/__tests__/parsers-primitives-test.js b/packages/react-native-codegen/src/parsers/__tests__/parsers-primitives-test.js index 2d3cec0343bc..6ac1810c5be3 100644 --- a/packages/react-native-codegen/src/parsers/__tests__/parsers-primitives-test.js +++ b/packages/react-native-codegen/src/parsers/__tests__/parsers-primitives-test.js @@ -15,6 +15,7 @@ const { emitBoolean, emitNumber, emitInt32, + emitDouble, } = require('../parsers-primitives.js'); describe('emitBoolean', () => { @@ -94,3 +95,29 @@ describe('emitNumber', () => { }); }); }); + +describe('emitDouble', () => { + describe('when nullable is true', () => { + it('returns nullable type annotation', () => { + const result = emitDouble(true); + const expected = { + type: 'NullableTypeAnnotation', + typeAnnotation: { + type: 'DoubleTypeAnnotation', + }, + }; + + expect(result).toEqual(expected); + }); + }); + describe('when nullable is false', () => { + it('returns non nullable type annotation', () => { + const result = emitDouble(false); + const expected = { + type: 'DoubleTypeAnnotation', + }; + + expect(result).toEqual(expected); + }); + }); +}); diff --git a/packages/react-native-codegen/src/parsers/flow/modules/index.js b/packages/react-native-codegen/src/parsers/flow/modules/index.js index 7864ef87dd6d..8bc5280b588f 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/index.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/index.js @@ -37,6 +37,7 @@ const { emitBoolean, emitNumber, emitInt32, + emitDouble, } = require('../../parsers-primitives'); const { IncorrectlyParameterizedFlowGenericParserError, @@ -202,9 +203,7 @@ function translateTypeAnnotation( return emitInt32(nullable); } case 'Double': { - return wrapNullable(nullable, { - type: 'DoubleTypeAnnotation', - }); + return emitDouble(nullable); } case 'Float': { return wrapNullable(nullable, { diff --git a/packages/react-native-codegen/src/parsers/parsers-primitives.js b/packages/react-native-codegen/src/parsers/parsers-primitives.js index 96c727b80c12..e796bded4192 100644 --- a/packages/react-native-codegen/src/parsers/parsers-primitives.js +++ b/packages/react-native-codegen/src/parsers/parsers-primitives.js @@ -14,6 +14,7 @@ import type { BooleanTypeAnnotation, Int32TypeAnnotation, NativeModuleNumberTypeAnnotation, + DoubleTypeAnnotation, Nullable, } from '../CodegenSchema'; @@ -39,8 +40,15 @@ function emitNumber( }); } +function emitDouble(nullable: boolean): Nullable { + return wrapNullable(nullable, { + type: 'DoubleTypeAnnotation', + }); +} + module.exports = { emitBoolean, emitInt32, emitNumber, + emitDouble, }; diff --git a/packages/react-native-codegen/src/parsers/typescript/modules/index.js b/packages/react-native-codegen/src/parsers/typescript/modules/index.js index 64cd84e914a8..dc6a0b0754c0 100644 --- a/packages/react-native-codegen/src/parsers/typescript/modules/index.js +++ b/packages/react-native-codegen/src/parsers/typescript/modules/index.js @@ -37,6 +37,7 @@ const { emitBoolean, emitNumber, emitInt32, + emitDouble, } = require('../../parsers-primitives'); const { IncorrectlyParameterizedTypeScriptGenericParserError, @@ -235,9 +236,7 @@ function translateTypeAnnotation( return emitInt32(nullable); } case 'Double': { - return wrapNullable(nullable, { - type: 'DoubleTypeAnnotation', - }); + return emitDouble(nullable); } case 'Float': { return wrapNullable(nullable, {