From 9bfa45bd2db57ccfd086cc0faa843d51e8489858 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Tue, 18 Oct 2016 15:26:40 +0100 Subject: [PATCH] Update Flow and fix issues (#8006) --- .flowconfig | 8 ++++---- package.json | 4 ++-- src/renderers/dom/fiber/ReactDOMFiber.js | 10 ++++++---- src/renderers/native/NativeMethodsMixin.js | 2 +- src/renderers/shared/ReactDebugTool.js | 1 - src/renderers/shared/fiber/ReactFiberBeginWork.js | 2 +- .../shared/stack/reconciler/ReactInstanceType.js | 15 ++++++++++----- src/renderers/shared/utils/ReactErrorUtils.js | 1 - src/renderers/testing/ReactTestMount.js | 4 +--- 9 files changed, 25 insertions(+), 22 deletions(-) diff --git a/.flowconfig b/.flowconfig index 5cfdb69fa3..689934fc46 100644 --- a/.flowconfig +++ b/.flowconfig @@ -13,7 +13,7 @@ [include] [libs] -./node_modules/fbjs/flow/lib +./node_modules/fbjs/flow/lib/dev.js ./flow [options] @@ -29,10 +29,10 @@ suppress_type=$FlowFixMe suppress_type=$FixMe suppress_type=$FlowExpectedError -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-1]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-1]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-3]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-3]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*www[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError [version] -^0.31.0 +^0.33.0 diff --git a/package.json b/package.json index 0629a56ede..ecca7d937e 100644 --- a/package.json +++ b/package.json @@ -43,9 +43,9 @@ "eslint": "1.10.3", "eslint-plugin-react": "4.1.0", "eslint-plugin-react-internal": "file:eslint-rules", - "fbjs": "^0.8.4", + "fbjs": "^0.8.5", "fbjs-scripts": "^0.6.0", - "flow-bin": "^0.31.0", + "flow-bin": "^0.33.0", "glob": "^6.0.1", "grunt": "^0.4.5", "grunt-cli": "^0.1.13", diff --git a/src/renderers/dom/fiber/ReactDOMFiber.js b/src/renderers/dom/fiber/ReactDOMFiber.js index b2cfac0ed8..9736c6febc 100644 --- a/src/renderers/dom/fiber/ReactDOMFiber.js +++ b/src/renderers/dom/fiber/ReactDOMFiber.js @@ -54,9 +54,10 @@ var DOMRenderer = ReactFiberReconciler({ createInstance(type : string, props : Props, children : HostChildren) : Instance { const domElement = document.createElement(type); recursivelyAppendChildren(domElement, children); - if (typeof props.children === 'string' || - typeof props.children === 'number') { + if (typeof props.children === 'string') { domElement.textContent = props.children; + } else if (typeof props.children === 'number') { + domElement.textContent = props.children.toString(); } return domElement; }, @@ -70,9 +71,10 @@ var DOMRenderer = ReactFiberReconciler({ }, commitUpdate(domElement : Instance, oldProps : Props, newProps : Props) : void { - if (typeof newProps.children === 'string' || - typeof newProps.children === 'number') { + if (typeof newProps.children === 'string') { domElement.textContent = newProps.children; + } else if (typeof newProps.children === 'number') { + domElement.textContent = newProps.children.toString(); } }, diff --git a/src/renderers/native/NativeMethodsMixin.js b/src/renderers/native/NativeMethodsMixin.js index 13df0f73b9..5bc75fc332 100644 --- a/src/renderers/native/NativeMethodsMixin.js +++ b/src/renderers/native/NativeMethodsMixin.js @@ -212,7 +212,7 @@ function mountSafeCallback( callback: ?Function ): any { return function() { - if (!callback || (context.isMounted && !context.isMounted())) { + if (!callback || (typeof context.isMounted === 'function' && !context.isMounted())) { return undefined; } return callback.apply(context, arguments); diff --git a/src/renderers/shared/ReactDebugTool.js b/src/renderers/shared/ReactDebugTool.js index 0f59612460..f7edbfbc74 100644 --- a/src/renderers/shared/ReactDebugTool.js +++ b/src/renderers/shared/ReactDebugTool.js @@ -239,7 +239,6 @@ function resumeCurrentLifeCycleTimer() { var lastMarkTimeStamp = 0; var canUsePerformanceMeasure: boolean = -// $FlowFixMe https://github.com/facebook/flow/issues/2345 typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && diff --git a/src/renderers/shared/fiber/ReactFiberBeginWork.js b/src/renderers/shared/fiber/ReactFiberBeginWork.js index b9bac151de..a1fc0b9986 100644 --- a/src/renderers/shared/fiber/ReactFiberBeginWork.js +++ b/src/renderers/shared/fiber/ReactFiberBeginWork.js @@ -369,7 +369,7 @@ module.exports = function(config : HostConfig, s // next one immediately. return workInProgress.child; case HostComponent: - if (workInProgress.stateNode && config.beginUpdate) { + if (workInProgress.stateNode && typeof config.beginUpdate === 'function') { config.beginUpdate(workInProgress.stateNode); } return updateHostComponent(current, workInProgress); diff --git a/src/renderers/shared/stack/reconciler/ReactInstanceType.js b/src/renderers/shared/stack/reconciler/ReactInstanceType.js index bb213281b9..e22ff632f5 100644 --- a/src/renderers/shared/stack/reconciler/ReactInstanceType.js +++ b/src/renderers/shared/stack/reconciler/ReactInstanceType.js @@ -12,22 +12,27 @@ 'use strict'; +import type {ReactElement} from 'ReactElementType'; + export type DebugID = number; export type ReactInstance = { - // ReactCompositeComponent + // Shared mountComponent: any, + unmountComponent: any, + receiveComponent: any, + getName: () => string, + getPublicInstance: any, + _currentElement: ReactElement, + + // ReactCompositeComponent performInitialMountWithErrorHandling: any, performInitialMount: any, getHostNode: any, - unmountComponent: any, - receiveComponent: any, performUpdateIfNecessary: any, updateComponent: any, attachRef: (ref: string, component: ReactInstance) => void, detachRef: (ref: string) => void, - getName: () => string, - getPublicInstance: any, _rootNodeID: number, // ReactDOMComponent diff --git a/src/renderers/shared/utils/ReactErrorUtils.js b/src/renderers/shared/utils/ReactErrorUtils.js index 25bed212bb..1295908b82 100644 --- a/src/renderers/shared/utils/ReactErrorUtils.js +++ b/src/renderers/shared/utils/ReactErrorUtils.js @@ -77,7 +77,6 @@ if (__DEV__) { var evtType = `react-${name}`; fakeNode.addEventListener(evtType, boundFunc, false); var evt = document.createEvent('Event'); - // $FlowFixMe https://github.com/facebook/flow/issues/2336 evt.initEvent(evtType, false, false); fakeNode.dispatchEvent(evt); fakeNode.removeEventListener(evtType, boundFunc, false); diff --git a/src/renderers/testing/ReactTestMount.js b/src/renderers/testing/ReactTestMount.js index bed525c431..d1dcdfeb41 100644 --- a/src/renderers/testing/ReactTestMount.js +++ b/src/renderers/testing/ReactTestMount.js @@ -20,10 +20,8 @@ var getHostComponentFromComposite = require('getHostComponentFromComposite'); var instantiateReactComponent = require('instantiateReactComponent'); var invariant = require('invariant'); -import type { ReactElement } from 'ReactElementType'; - export type TestRendererOptions = { - createNodeMock: (element: ReactElement) => any, + createNodeMock: (element: ReactElement) => any, }; var defaultTestOptions = {