@@ -18,12 +18,14 @@ import {
18
18
REACT_MEMO_TYPE ,
19
19
REACT_PORTAL_TYPE ,
20
20
REACT_PROFILER_TYPE ,
21
+ REACT_PROVIDER_TYPE ,
21
22
REACT_CONSUMER_TYPE ,
22
23
REACT_STRICT_MODE_TYPE ,
23
24
REACT_SUSPENSE_TYPE ,
24
25
REACT_SUSPENSE_LIST_TYPE ,
25
26
} from 'shared/ReactSymbols' ;
26
27
import isValidElementType from 'shared/isValidElementType' ;
28
+ import { enableRenderableContext } from 'shared/ReactFeatureFlags' ;
27
29
28
30
export function typeOf ( object : any ) : mixed {
29
31
if ( typeof object === 'object' && object !== null ) {
@@ -47,8 +49,19 @@ export function typeOf(object: any): mixed {
47
49
case REACT_FORWARD_REF_TYPE :
48
50
case REACT_LAZY_TYPE :
49
51
case REACT_MEMO_TYPE :
50
- case REACT_CONSUMER_TYPE :
51
52
return $$typeofType ;
53
+ case REACT_CONSUMER_TYPE :
54
+ if ( enableRenderableContext ) {
55
+ return $$typeofType ;
56
+ } else {
57
+ // Fallthrough to default
58
+ }
59
+ case REACT_PROVIDER_TYPE :
60
+ if ( enableRenderableContext ) {
61
+ // Fallthrough to default
62
+ } else {
63
+ return $$typeofType ;
64
+ }
52
65
default :
53
66
return $$typeof ;
54
67
}
@@ -61,8 +74,12 @@ export function typeOf(object: any): mixed {
61
74
return undefined ;
62
75
}
63
76
64
- export const ContextConsumer = REACT_CONSUMER_TYPE ;
65
- export const ContextProvider = REACT_CONTEXT_TYPE ;
77
+ export const ContextConsumer : symbol = enableRenderableContext
78
+ ? REACT_CONSUMER_TYPE
79
+ : REACT_CONTEXT_TYPE ;
80
+ export const ContextProvider : symbol = enableRenderableContext
81
+ ? REACT_CONTEXT_TYPE
82
+ : REACT_PROVIDER_TYPE ;
66
83
export const Element = REACT_ELEMENT_TYPE ;
67
84
export const ForwardRef = REACT_FORWARD_REF_TYPE ;
68
85
export const Fragment = REACT_FRAGMENT_TYPE ;
@@ -77,10 +94,18 @@ export const SuspenseList = REACT_SUSPENSE_LIST_TYPE;
77
94
export { isValidElementType } ;
78
95
79
96
export function isContextConsumer ( object : any ) : boolean {
80
- return typeOf ( object ) === REACT_CONSUMER_TYPE ;
97
+ if ( enableRenderableContext ) {
98
+ return typeOf ( object ) === REACT_CONSUMER_TYPE ;
99
+ } else {
100
+ return typeOf ( object ) === REACT_CONTEXT_TYPE ;
101
+ }
81
102
}
82
103
export function isContextProvider ( object : any ) : boolean {
83
- return typeOf ( object ) === REACT_CONTEXT_TYPE ;
104
+ if ( enableRenderableContext ) {
105
+ return typeOf ( object ) === REACT_CONTEXT_TYPE ;
106
+ } else {
107
+ return typeOf ( object ) === REACT_PROVIDER_TYPE ;
108
+ }
84
109
}
85
110
export function isElement ( object : any ) : boolean {
86
111
return (
0 commit comments