From d1931344b0c2ab9450f277ab30bf5ec9b17eb427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Osadnik?= Date: Wed, 17 Jul 2019 06:13:28 -0700 Subject: [PATCH] Fix support for objects' types defined in file Summary: By my mistake previosly it was not poossible to return object defined somewhere in file or return promise containing that object. I changed it to consider value which might be takes from `types` object. Reviewed By: rickhanlonii Differential Revision: D16283800 fbshipit-source-id: e9b0ad85b921022732ea0a11db9b58115e87aaa5 --- .../modules/__test_fixtures__/fixtures.js | 2 ++ .../__snapshots__/module-parser-test.js.snap | 23 +++++++++++++++++++ .../src/parsers/flow/modules/methods.js | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js index 44f6a70496..2ff2a4653b 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/__test_fixtures__/fixtures.js @@ -358,10 +358,12 @@ import type {TurboModule} from '../RCTExport'; import * as TurboModuleRegistry from '../TurboModuleRegistry'; export type String = string +export type SomeObj = {| a: string |}; export interface Spec extends TurboModule { +getValueWithPromise: () => Promise; +getValueWithPromiseDefinedSomewhereElse: () => Promise; + +getValueWithPromiseObjDefinedSomewhereElse: () => Promise; } export default TurboModuleRegistry.getEnforcing('SampleTurboModule'); diff --git a/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap b/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap index 07dc009fc4..cb5f274116 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap +++ b/packages/react-native-codegen/src/parsers/flow/modules/__tests__/__snapshots__/module-parser-test.js.snap @@ -680,6 +680,29 @@ Object { "type": "FunctionTypeAnnotation", }, }, + Object { + "name": "getValueWithPromiseObjDefinedSomewhereElse", + "typeAnnotation": Object { + "optional": false, + "params": Array [], + "returnTypeAnnotation": Object { + "resolvedType": Object { + "properties": Array [ + Object { + "name": "a", + "optional": false, + "typeAnnotation": Object { + "type": "StringTypeAnnotation", + }, + }, + ], + "type": "ObjectTypeAnnotation", + }, + "type": "GenericPromiseTypeAnnotation", + }, + "type": "FunctionTypeAnnotation", + }, + }, ], }, }, diff --git a/packages/react-native-codegen/src/parsers/flow/modules/methods.js b/packages/react-native-codegen/src/parsers/flow/modules/methods.js index d96692ed19..b8cff9a78c 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/methods.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/methods.js @@ -290,7 +290,7 @@ function getReturnTypeAnnotation( type: 'ObjectTypeAnnotation', properties: getObjectProperties( methodName, - returnType, + typeAnnotation, 'returning value', types, ),