Skip to content

Commit

Permalink
Extract contents of the case 'VoidTypeAnnotation' into a single emitV…
Browse files Browse the repository at this point in the history
…oid function (#34932)

Summary:
Part of #34872

This PR:
- extracts the content of the case 'VoidTypeAnnotation' ([Flow](https://github.com/facebook/react-native/blob/b444f0e44e0d8670139acea5f14c2de32c5e2ddc/packages/react-native-codegen/src/parsers/flow/modules/index.js#L375-L377), [TypeScript](https://github.com/facebook/react-native/blob/00b795642a6562fb52d6df12e367b84674994623/packages/react-native-codegen/src/parsers/typescript/modules/index.js#L410-L412)) into a single emitVoid function in the parsers-primitives.js file. Use the new function in the parsers.
- unit tests emitVoid function

## Changelog

[Internal] [Changed] - Extract contents of the case 'VoidTypeAnnotation' into a single emitVoid function

Pull Request resolved: #34932

Test Plan:
` yarn jest react-native-codegen`

<img width="957" alt="image" src="https://user-images.githubusercontent.com/19575877/194931977-d5cfc5f5-c9db-498d-9e5c-ae40a38d3623.png">

Reviewed By: cipolleschi

Differential Revision: D40239730

Pulled By: rshest

fbshipit-source-id: 16a9555223cacbb3b9916fd469bd63f83db33f18
  • Loading branch information
youedd authored and mohitcharkha committed Oct 17, 2022
1 parent 1a5c426 commit 4e3deca
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 6 deletions.
Expand Up @@ -19,6 +19,7 @@ const {
emitObject,
emitPromise,
emitRootTag,
emitVoid,
typeAliasResolution,
} = require('../parsers-primitives.js');

Expand Down Expand Up @@ -152,6 +153,32 @@ describe('emitDouble', () => {
});
});

describe('emitVoid', () => {
describe('when nullable is true', () => {
it('returns nullable type annotation', () => {
const result = emitVoid(true);
const expected = {
type: 'NullableTypeAnnotation',
typeAnnotation: {
type: 'VoidTypeAnnotation',
},
};

expect(result).toEqual(expected);
});
});
describe('when nullable is false', () => {
it('returns non nullable type annotation', () => {
const result = emitVoid(false);
const expected = {
type: 'VoidTypeAnnotation',
};

expect(result).toEqual(expected);
});
});
});

describe('typeAliasResolution', () => {
const objectTypeAnnotation = {
type: 'ObjectTypeAnnotation',
Expand Down
Expand Up @@ -46,6 +46,7 @@ const {
emitObject,
emitPromise,
emitRootTag,
emitVoid,
typeAliasResolution,
} = require('../../parsers-primitives');
const {
Expand Down Expand Up @@ -345,9 +346,7 @@ function translateTypeAnnotation(
return emitNumber(nullable);
}
case 'VoidTypeAnnotation': {
return wrapNullable(nullable, {
type: 'VoidTypeAnnotation',
});
return emitVoid(nullable);
}
case 'StringTypeAnnotation': {
return wrapNullable(nullable, {
Expand Down
Expand Up @@ -23,6 +23,7 @@ import type {
ReservedTypeAnnotation,
ObjectTypeAnnotation,
NativeModulePromiseTypeAnnotation,
VoidTypeAnnotation,
} from '../CodegenSchema';
import type {ParserType} from './errors';
import type {TypeAliasResolutionStatus} from './utils';
Expand Down Expand Up @@ -65,6 +66,12 @@ function emitDouble(nullable: boolean): Nullable<DoubleTypeAnnotation> {
});
}

function emitVoid(nullable: boolean): Nullable<VoidTypeAnnotation> {
return wrapNullable(nullable, {
type: 'VoidTypeAnnotation',
});
}

function typeAliasResolution(
typeAliasResolutionStatus: TypeAliasResolutionStatus,
objectTypeAnnotation: ObjectTypeAnnotation<
Expand Down Expand Up @@ -152,5 +159,6 @@ module.exports = {
emitObject,
emitPromise,
emitRootTag,
emitVoid,
typeAliasResolution,
};
Expand Up @@ -46,6 +46,7 @@ const {
emitObject,
emitPromise,
emitRootTag,
emitVoid,
typeAliasResolution,
} = require('../../parsers-primitives');
const {
Expand Down Expand Up @@ -380,9 +381,7 @@ function translateTypeAnnotation(
return emitNumber(nullable);
}
case 'TSVoidKeyword': {
return wrapNullable(nullable, {
type: 'VoidTypeAnnotation',
});
return emitVoid(nullable);
}
case 'TSStringKeyword': {
return wrapNullable(nullable, {
Expand Down

0 comments on commit 4e3deca

Please sign in to comment.