Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[flow] enable enforce_local_inference_annotations #25921

Merged
merged 8 commits into from
Jan 9, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/jest-react/src/internalAct.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export function act<T>(scope: () => Thenable<T> | T): Thenable<T> {
}
}

function flushActWork(resolve, reject) {
function flushActWork(resolve: () => void, reject: (error: any) => void) {
if (Scheduler.unstable_hasPendingWork()) {
try {
Scheduler.unstable_flushUntilNextPaint();
Expand Down
7 changes: 4 additions & 3 deletions packages/react-cache/src/ReactCacheOld.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* @flow
*/

import type {Thenable} from 'shared/ReactTypes';
import type {ReactContext, Thenable} from 'shared/ReactTypes';

import * as React from 'react';

Expand Down Expand Up @@ -48,7 +48,7 @@ const ReactCurrentDispatcher =
React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
.ReactCurrentDispatcher;

function readContext(Context) {
function readContext(Context: ReactContext<mixed>) {
const dispatcher = ReactCurrentDispatcher.current;
if (dispatcher === null) {
// This wasn't being minified but we're going to retire this package anyway.
Expand All @@ -62,6 +62,7 @@ function readContext(Context) {
return dispatcher.readContext(Context);
}

// $FlowFixMe[missing-local-annot]
function identityHashFn(input) {
if (__DEV__) {
if (
Expand Down Expand Up @@ -133,7 +134,7 @@ function accessResult<I, K, V>(
}
}

function deleteEntry(resource, key) {
function deleteEntry(resource: any, key: mixed) {
const entriesForResource = entries.get(resource);
if (entriesForResource !== undefined) {
entriesForResource.delete(key);
Expand Down
19 changes: 15 additions & 4 deletions packages/react-client/src/ReactFlightClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,13 @@ type SomeChunk<T> =
| InitializedChunk<T>
| ErroredChunk<T>;

function Chunk(status: any, value: any, reason: any, response: Response) {
function Chunk(
this: any,
status: any,
value: any,
reason: any,
response: Response,
) {
this.status = status;
this.value = value;
this.reason = reason;
Expand All @@ -104,6 +110,7 @@ function Chunk(status: any, value: any, reason: any, response: Response) {
Chunk.prototype = (Object.create(Promise.prototype): any);
// TODO: This doesn't return a new Promise chain unlike the real .then
Chunk.prototype.then = function<T>(
this: SomeChunk<T>,
resolve: (value: T) => mixed,
reject: (reason: mixed) => mixed,
) {
Expand Down Expand Up @@ -369,7 +376,11 @@ export function reportGlobalError(response: Response, error: Error): void {
});
}

function createElement(type, key, props): React$Element<any> {
function createElement(
type: mixed,
key: mixed,
props: mixed,
): React$Element<any> {
const element: any = {
// This tag allows us to uniquely identify this as a React Element
$$typeof: REACT_ELEMENT_TYPE,
Expand Down Expand Up @@ -446,7 +457,7 @@ function createModelResolver<T>(
value: null,
};
}
return value => {
return (value: any) => {
kassens marked this conversation as resolved.
Show resolved Hide resolved
parentObject[key] = value;
blocked.deps--;
if (blocked.deps === 0) {
Expand All @@ -465,7 +476,7 @@ function createModelResolver<T>(
}

function createModelReject<T>(chunk: SomeChunk<T>) {
return error => triggerErrorOnChunk(chunk, error);
return (error: mixed) => triggerErrorOnChunk(chunk, error);
}

export function parseModelString(
Expand Down
2 changes: 1 addition & 1 deletion packages/react-client/src/ReactFlightClientStream.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export function processBinaryChunk(
}

function createFromJSONCallback(response: Response) {
return function(key: string, value: JSONValue) {
return function(this: any, key: string, value: JSONValue) {
if (typeof value === 'string') {
// We can't use .bind here because we need the "this" value.
return parseModelString(response, this, key, value);
Expand Down
18 changes: 9 additions & 9 deletions packages/react-debug-tools/src/ReactDebugHooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ const Dispatcher: DispatcherType = {
// create a proxy to throw a custom error
// in case future versions of React adds more hooks
const DispatcherProxyHandler = {
get(target, prop) {
get(target: DispatcherType, prop: string) {
if (target.hasOwnProperty(prop)) {
return target[prop];
}
Expand Down Expand Up @@ -404,7 +404,7 @@ export type HooksTree = Array<HooksNode>;

let mostLikelyAncestorIndex = 0;

function findSharedIndex(hookStack, rootStack, rootIndex) {
function findSharedIndex(hookStack: any, rootStack: any, rootIndex: number) {
const source = rootStack[rootIndex].source;
hookSearch: for (let i = 0; i < hookStack.length; i++) {
if (hookStack[i].source === source) {
Expand All @@ -425,7 +425,7 @@ function findSharedIndex(hookStack, rootStack, rootIndex) {
return -1;
}

function findCommonAncestorIndex(rootStack, hookStack) {
function findCommonAncestorIndex(rootStack: any, hookStack: any) {
let rootIndex = findSharedIndex(
hookStack,
rootStack,
Expand All @@ -446,7 +446,7 @@ function findCommonAncestorIndex(rootStack, hookStack) {
return -1;
}

function isReactWrapper(functionName, primitiveName) {
function isReactWrapper(functionName: any, primitiveName: string) {
if (!functionName) {
return false;
}
Expand All @@ -460,7 +460,7 @@ function isReactWrapper(functionName, primitiveName) {
);
}

function findPrimitiveIndex(hookStack, hook) {
function findPrimitiveIndex(hookStack: any, hook: HookLogEntry) {
const stackCache = getPrimitiveStackCache();
const primitiveStack = stackCache.get(hook.primitive);
if (primitiveStack === undefined) {
Expand Down Expand Up @@ -488,7 +488,7 @@ function findPrimitiveIndex(hookStack, hook) {
return -1;
}

function parseTrimmedStack(rootStack, hook) {
function parseTrimmedStack(rootStack: any, hook: HookLogEntry) {
// Get the stack trace between the primitive hook function and
// the root function call. I.e. the stack frames of custom hooks.
const hookStack = ErrorStackParser.parse(hook.stackError);
Expand Down Expand Up @@ -520,8 +520,8 @@ function parseCustomHookName(functionName: void | string): string {
}

function buildTree(
rootStack,
readHookLog,
rootStack: any,
readHookLog: Array<HookLogEntry>,
includeHooksSource: boolean,
): HooksTree {
const rootChildren = [];
Expand Down Expand Up @@ -764,7 +764,7 @@ function inspectHooksOfForwardRef<Props, Ref>(
return buildTree(rootStack, readHookLog, includeHooksSource);
}

function resolveDefaultProps(Component, baseProps) {
function resolveDefaultProps(Component: any, baseProps: any) {
if (Component && Component.defaultProps) {
// Resolve default props. Taken from ReactElement
const props = assign({}, baseProps);
Expand Down
4 changes: 2 additions & 2 deletions packages/react-devtools-core/src/backend.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ const hook: ?DevToolsHook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;

let savedComponentFilters: Array<ComponentFilter> = getDefaultComponentFilters();

function debug(methodName: string, ...args) {
function debug(methodName: string, ...args: Array<mixed>) {
if (__DEBUG__) {
console.log(
`%c[core/backend] %c${methodName}`,
Expand Down Expand Up @@ -276,7 +276,7 @@ export function connectToDevTools(options: ?ConnectOptions) {
scheduleRetry();
}

function handleMessage(event) {
function handleMessage(event: MessageEvent) {
let data;
try {
if (typeof event.data === 'string') {
Expand Down
10 changes: 6 additions & 4 deletions packages/react-devtools-core/src/standalone.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,12 @@ let bridge: FrontendBridge | null = null;
let store: Store | null = null;
let root = null;

const log = (...args) => console.log('[React DevTools]', ...args);
log.warn = (...args) => console.warn('[React DevTools]', ...args);
log.error = (...args) => console.error('[React DevTools]', ...args);
const log = (...args: Array<mixed>) => console.log('[React DevTools]', ...args);
log.warn = (...args: Array<mixed>) => console.warn('[React DevTools]', ...args);
log.error = (...args: Array<mixed>) =>
console.error('[React DevTools]', ...args);

function debug(methodName: string, ...args) {
function debug(methodName: string, ...args: Array<mixed>) {
if (__DEBUG__) {
console.log(
`%c[core/standalone] %c${methodName}`,
Expand Down Expand Up @@ -166,6 +167,7 @@ function onDisconnected() {
disconnectedCallback();
}

// $FlowFixMe[missing-local-annot]
function onError({code, message}) {
safeUnmount();

Expand Down
4 changes: 3 additions & 1 deletion packages/react-devtools-extensions/src/backend.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

let welcomeHasInitialized = false;

// $FlowFixMe[missing-local-annot]
function welcome(event) {
if (
event.source !== window ||
Expand Down Expand Up @@ -42,7 +43,7 @@ function welcome(event) {

window.addEventListener('message', welcome);

function setup(hook) {
function setup(hook: any) {
if (hook == null) {
// DevTools didn't get injected into this page (maybe b'c of the contentType).
return;
Expand All @@ -55,6 +56,7 @@ function setup(hook) {

const bridge = new Bridge({
listen(fn) {
// $FlowFixMe[missing-local-annot]
const listener = event => {
if (
event.source !== window ||
Expand Down
2 changes: 2 additions & 0 deletions packages/react-devtools-inline/src/backend.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import type {BackendBridge} from 'react-devtools-shared/src/bridge';
import type {Wall} from 'react-devtools-shared/src/types';

function startActivation(contentWindow: any, bridge: BackendBridge) {
// $FlowFixMe[missing-local-annot]
const onSavedPreferences = data => {
// This is the only message we're listening for,
// so it's safe to cleanup after we've received it.
Expand Down Expand Up @@ -96,6 +97,7 @@ export function createBridge(contentWindow: any, wall?: Wall): BackendBridge {
if (wall == null) {
wall = {
listen(fn) {
// $FlowFixMe[missing-local-annot]
const onMessage = ({data}) => {
fn(data);
};
Expand Down
1 change: 1 addition & 0 deletions packages/react-devtools-inline/src/frontend.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ export function createBridge(contentWindow: any, wall?: Wall): FrontendBridge {
if (wall == null) {
wall = {
listen(fn) {
// $FlowFixMe[missing-local-annot]
const onMessage = ({data}) => {
fn(data);
};
Expand Down
2 changes: 1 addition & 1 deletion packages/react-devtools-shared/src/backend/agent.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import type {ComponentFilter} from '../types';
import {isSynchronousXHRSupported} from './utils';
import type {BrowserTheme} from 'react-devtools-shared/src/devtools/views/DevTools';

const debug = (methodName, ...args) => {
const debug = (methodName: string, ...args: Array<string>) => {
if (__DEBUG__) {
console.log(
`%cAgent %c${methodName}`,
Expand Down
2 changes: 2 additions & 0 deletions packages/react-devtools-shared/src/backend/console.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ export function patch({
? targetConsole[method].__REACT_DEVTOOLS_ORIGINAL_METHOD__
: targetConsole[method]);

// $FlowFixMe[missing-local-annot]
const overrideMethod = (...args) => {
let shouldAppendWarningStack = false;
if (method !== 'log') {
Expand Down Expand Up @@ -335,6 +336,7 @@ export function patchForStrictMode() {
? targetConsole[method].__REACT_DEVTOOLS_STRICT_MODE_ORIGINAL_METHOD__
: targetConsole[method]);

// $FlowFixMe[missing-local-annot]
const overrideMethod = (...args) => {
if (!consoleSettingsRef.hideConsoleLogsInStrictMode) {
// Dim the text color of the double logs if we're not
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ export function attach(
return ((internalInstanceToIDMap.get(internalInstance): any): number);
}

function areEqualArrays(a, b) {
function areEqualArrays(a: Array<any>, b: Array<any>) {
if (a.length !== b.length) {
return false;
}
Expand Down
2 changes: 2 additions & 0 deletions packages/react-devtools-shared/src/backend/legacy/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import type {InternalInstance} from './renderer';

export function decorate(object: Object, attr: string, fn: Function): Function {
const old = object[attr];
// $FlowFixMe[missing-this-annot] webpack config needs to be updated to allow `this` type annotations
object[attr] = function(instance: InternalInstance) {
return fn.call(this, old, arguments);
};
Expand All @@ -34,6 +35,7 @@ export function restoreMany(source: Object, olds: Object): void {
}
}

// $FlowFixMe[missing-this-annot] webpack config needs to be updated to allow `this` type annotations
export function forceUpdate(instance: InternalInstance): void {
if (typeof instance.forceUpdate === 'function') {
instance.forceUpdate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ export function createProfilingHooks({
}
}

function markAndClear(markName) {
function markAndClear(markName: string) {
// This method won't be called unless these functions are defined, so we can skip the extra typeof check.
((performanceTarget: any): Performance).mark(markName);
((performanceTarget: any): Performance).clearMarks(markName);
Expand Down
Loading