Extract RootTag case of translateTypeAnnotation from the flow and typescript folders in parsers-primitives (#34901)
Summary: This PR aims to reduce code duplication by extracting `emitRootTag` logic from the flow and typescript folders into a shared parsers-primitives file. It is a task of https://github.com/facebook/react-native/issues/34872: > Extract the content of the case 'RootTag' (Flow TypeScript) into a single emitRootTag function in the parsers-primitives.js file. Use the new function in the parsers. ~~Note that https://github.com/facebook/react-native/issues/34898 should be merged first. I rebased on it's branch.~~ ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [Internal] [Changed] - Extract RootTag case of translateTypeAnnotation from the flow and typescript folders in parsers-primitives Pull Request resolved: https://github.com/facebook/react-native/pull/34901 Test Plan: All tests are passing, with `yarn jest react-native-codegen`: <img width="934" alt="image" src="https://user-images.githubusercontent.com/40902940/194777150-6136c1b6-11f8-4e21-829b-fda418b6925c.png"> Reviewed By: cipolleschi Differential Revision: D40212553 Pulled By: cipolleschi fbshipit-source-id: eadbbfb5cf6dfa6c966f4c08a5d9372a3470b621
This commit is contained in:
Родитель
7b345bca55
Коммит
5f05b07d02
|
@ -15,7 +15,8 @@ const {
|
|||
emitBoolean,
|
||||
emitNumber,
|
||||
emitInt32,
|
||||
} = require('../parsers-primitives.js');
|
||||
emitRootTag,
|
||||
} = require('../parsers-primitives');
|
||||
|
||||
describe('emitBoolean', () => {
|
||||
describe('when nullable is true', () => {
|
||||
|
@ -94,3 +95,29 @@ describe('emitNumber', () => {
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('emitRootTag', () => {
|
||||
const reservedTypeAnnotation = {
|
||||
type: 'ReservedTypeAnnotation',
|
||||
name: 'RootTag',
|
||||
};
|
||||
|
||||
describe('when nullable is true', () => {
|
||||
it('returns nullable type annotation', () => {
|
||||
const result = emitRootTag(true);
|
||||
|
||||
expect(result).toEqual({
|
||||
type: 'NullableTypeAnnotation',
|
||||
typeAnnotation: reservedTypeAnnotation,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when nullable is false', () => {
|
||||
it('returns non nullable type annotation', () => {
|
||||
const result = emitRootTag(false);
|
||||
|
||||
expect(result).toEqual(reservedTypeAnnotation);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -37,6 +37,7 @@ const {
|
|||
emitBoolean,
|
||||
emitNumber,
|
||||
emitInt32,
|
||||
emitRootTag,
|
||||
} = require('../../parsers-primitives');
|
||||
const {
|
||||
IncorrectlyParameterizedGenericParserError,
|
||||
|
@ -87,10 +88,7 @@ function translateTypeAnnotation(
|
|||
case 'GenericTypeAnnotation': {
|
||||
switch (typeAnnotation.id.name) {
|
||||
case 'RootTag': {
|
||||
return wrapNullable(nullable, {
|
||||
type: 'ReservedTypeAnnotation',
|
||||
name: 'RootTag',
|
||||
});
|
||||
return emitRootTag(nullable);
|
||||
}
|
||||
case 'Promise': {
|
||||
assertGenericTypeAnnotationHasExactlyOneTypeParameter(
|
||||
|
|
|
@ -15,6 +15,7 @@ import type {
|
|||
Int32TypeAnnotation,
|
||||
NativeModuleNumberTypeAnnotation,
|
||||
Nullable,
|
||||
ReservedTypeAnnotation,
|
||||
} from '../CodegenSchema';
|
||||
|
||||
const {wrapNullable} = require('./parsers-commons');
|
||||
|
@ -39,8 +40,16 @@ function emitNumber(
|
|||
});
|
||||
}
|
||||
|
||||
function emitRootTag(nullable: boolean): Nullable<ReservedTypeAnnotation> {
|
||||
return wrapNullable(nullable, {
|
||||
type: 'ReservedTypeAnnotation',
|
||||
name: 'RootTag',
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
emitBoolean,
|
||||
emitInt32,
|
||||
emitNumber,
|
||||
emitRootTag,
|
||||
};
|
||||
|
|
|
@ -37,6 +37,7 @@ const {
|
|||
emitBoolean,
|
||||
emitNumber,
|
||||
emitInt32,
|
||||
emitRootTag,
|
||||
} = require('../../parsers-primitives');
|
||||
const {
|
||||
IncorrectlyParameterizedGenericParserError,
|
||||
|
@ -199,10 +200,7 @@ function translateTypeAnnotation(
|
|||
case 'TSTypeReference': {
|
||||
switch (typeAnnotation.typeName.name) {
|
||||
case 'RootTag': {
|
||||
return wrapNullable(nullable, {
|
||||
type: 'ReservedTypeAnnotation',
|
||||
name: 'RootTag',
|
||||
});
|
||||
return emitRootTag(nullable);
|
||||
}
|
||||
case 'Promise': {
|
||||
assertGenericTypeAnnotationHasExactlyOneTypeParameter(
|
||||
|
|
Загрузка…
Ссылка в новой задаче