From cd679bf529c501ecfc34429c8c2cae886329b60a Mon Sep 17 00:00:00 2001 From: Mike Vitousek Date: Fri, 11 Nov 2022 12:54:51 -0800 Subject: [PATCH] Annotate implicit instantiations in xplat, defaulting to any Summary: Add explicit annotations to underconstrained implicit instantiations as required for Flow's Local Type Inference project. This codemod prepares the codebase to match Flow's new typechecking algorithm. The new algorithm will make Flow more reliable and predictable. This diff adds `any` or `$FlowFixMe` in cases where more precise types could not be determined. Details: - Codemod script: `.facebook/flowd codemod annotate-implicit-instantiations ../../xplat/js --default-any --write` - Local Type Inference announcement: [post](https://fb.workplace.com/groups/flowlang/posts/788206301785035) - Support group: [Flow Support](https://fb.workplace.com/groups/flow) drop-conflicts bypass-lint Reviewed By: SamChou19815 Differential Revision: D41226960 fbshipit-source-id: e5e3edbb1aed849f90cc683a4d416a9a2f8f3a19 --- packages/metro-file-map/src/__tests__/HasteFS-test.js | 2 +- packages/metro-file-map/src/crawlers/watchman/index.js | 5 +++-- packages/metro-transform-worker/src/__tests__/index-test.js | 6 +++--- packages/metro/src/DeltaBundler/__tests__/resolver-test.js | 5 ++++- .../metro/src/lib/__tests__/contextModuleTemplates-test.js | 2 +- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/metro-file-map/src/__tests__/HasteFS-test.js b/packages/metro-file-map/src/__tests__/HasteFS-test.js index 4536209681..b6deb13bb6 100644 --- a/packages/metro-file-map/src/__tests__/HasteFS-test.js +++ b/packages/metro-file-map/src/__tests__/HasteFS-test.js @@ -13,7 +13,7 @@ import HasteFS from '../HasteFS'; jest.mock('../lib/fast_path', () => ({ resolve: (a, b) => b, - relative: jest.requireActual('path').relative, + relative: jest.requireActual<{relative: mixed}>('path').relative, })); describe('matchFilesWithContext', () => { diff --git a/packages/metro-file-map/src/crawlers/watchman/index.js b/packages/metro-file-map/src/crawlers/watchman/index.js index c6625c958b..27caa2fcb9 100644 --- a/packages/metro-file-map/src/crawlers/watchman/index.js +++ b/packages/metro-file-map/src/crawlers/watchman/index.js @@ -9,6 +9,7 @@ * @oncall react_native */ +import type {WatchmanClockSpec} from '../../flow-types'; import type { CrawlerOptions, FileData, @@ -18,10 +19,10 @@ import type { } from '../../flow-types'; import type {WatchmanQueryResponse, WatchmanWatchResponse} from 'fb-watchman'; -import {planQuery} from './planQuery'; import H from '../../constants'; import * as fastPath from '../../lib/fast_path'; import normalizePathSep from '../../lib/normalizePathSep'; +import {planQuery} from './planQuery'; import invariant from 'invariant'; import * as path from 'path'; import {performance} from 'perf_hooks'; @@ -60,7 +61,7 @@ module.exports = async function watchmanCrawl({ }> { perfLogger?.point('watchmanCrawl_start'); - const newClocks = new Map(); + const newClocks = new Map(); const client = new watchman.Client(); abortSignal?.addEventListener('abort', () => client.end()); diff --git a/packages/metro-transform-worker/src/__tests__/index-test.js b/packages/metro-transform-worker/src/__tests__/index-test.js index a1d567c44e..15290907dd 100644 --- a/packages/metro-transform-worker/src/__tests__/index-test.js +++ b/packages/metro-transform-worker/src/__tests__/index-test.js @@ -480,9 +480,9 @@ it('allows replacing the collectDependencies implementation', async () => { 'metro-transform-worker/__virtual__/collectModifiedDependencies', () => jest.fn((ast, opts) => { - const metroCoreCollectDependencies = jest.requireActual( - 'metro/src/ModuleGraph/worker/collectDependencies', - ); + const metroCoreCollectDependencies = jest.requireActual< + (empty, empty) => {dependencies: {map: mixed => mixed}}, + >('metro/src/ModuleGraph/worker/collectDependencies'); const collectedDeps = metroCoreCollectDependencies(ast, opts); return { ...collectedDeps, diff --git a/packages/metro/src/DeltaBundler/__tests__/resolver-test.js b/packages/metro/src/DeltaBundler/__tests__/resolver-test.js index 18fef9cb65..395a1d23ed 100644 --- a/packages/metro/src/DeltaBundler/__tests__/resolver-test.js +++ b/packages/metro/src/DeltaBundler/__tests__/resolver-test.js @@ -140,7 +140,10 @@ type MockFSDirContents = $ReadOnly<{ }); if (osPlatform === 'win32') { - jest.mock('path', () => jest.requireActual('path').win32); + jest.mock( + 'path', + () => jest.requireActual<{win32: mixed}>('path').win32, + ); jest.mock( 'fs', () => new (require('metro-memory-fs'))({platform: 'win32'}), diff --git a/packages/metro/src/lib/__tests__/contextModuleTemplates-test.js b/packages/metro/src/lib/__tests__/contextModuleTemplates-test.js index d869f05826..01ab74f3f2 100644 --- a/packages/metro/src/lib/__tests__/contextModuleTemplates-test.js +++ b/packages/metro/src/lib/__tests__/contextModuleTemplates-test.js @@ -52,7 +52,7 @@ describe('getContextModuleTemplate', () => { test('creates posix paths on windows for sync template', () => { jest.resetModules(); - jest.mock('path', () => jest.requireActual('path').win32); + jest.mock('path', () => jest.requireActual<{win32: mixed}>('path').win32); const { getContextModuleTemplate: getWindowsTemplate, } = require('../contextModuleTemplates');