From 96c9ccc81a14752fc4cf5c70f5042c693bd50f19 Mon Sep 17 00:00:00 2001 From: Andrew Kushnir Date: Thu, 14 Nov 2019 10:49:15 -0800 Subject: [PATCH] fix(ivy): avoid cyclical dependency in imports (#33831) This commit moves the `setLContainerActiveIndex` and `getLContainerActiveIndex` functions used in a few files to a common `util/view_util.ts` lib to avoid cyclical dependency while importing `instructions/container.ts` where these functions located originally. PR Close #33831 --- .../core/src/render3/instructions/container.ts | 14 +++----------- .../core/src/render3/instructions/embedded_view.ts | 4 ++-- .../core/src/render3/instructions/lview_debug.ts | 3 +-- packages/core/src/render3/util/view_utils.ts | 10 +++++++++- .../core/src/render3/view_engine_compatibility.ts | 3 +-- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/packages/core/src/render3/instructions/container.ts b/packages/core/src/render3/instructions/container.ts index 2ab64e639f..0b5b9dd704 100644 --- a/packages/core/src/render3/instructions/container.ts +++ b/packages/core/src/render3/instructions/container.ts @@ -9,7 +9,7 @@ import {assertDataInRange, assertEqual} from '../../util/assert'; import {assertHasParent} from '../assert'; import {attachPatchData} from '../context_discovery'; import {executeCheckHooks, executeInitAndCheckHooks, incrementInitPhaseFlags, registerPostOrderHooks} from '../hooks'; -import {ACTIVE_INDEX, ActiveIndexFlag, CONTAINER_HEADER_OFFSET, LContainer} from '../interfaces/container'; +import {ACTIVE_INDEX, CONTAINER_HEADER_OFFSET, LContainer} from '../interfaces/container'; import {ComponentTemplate} from '../interfaces/definition'; import {LocalRefExtractor, TAttributes, TContainerNode, TNode, TNodeType, TViewNode} from '../interfaces/node'; import {isDirectiveHost} from '../interfaces/type_checks'; @@ -17,7 +17,7 @@ import {FLAGS, HEADER_OFFSET, InitPhaseState, LView, LViewFlags, RENDERER, TVIEW import {assertNodeType} from '../node_assert'; import {appendChild, removeView} from '../node_manipulation'; import {getBindingIndex, getCheckNoChangesMode, getIsParent, getLView, getPreviousOrParentTNode, setIsNotParent, setPreviousOrParentTNode} from '../state'; -import {getConstant, load} from '../util/view_utils'; +import {getConstant, getLContainerActiveIndex, load} from '../util/view_utils'; import {addToViewTree, createDirectivesInstances, createLContainer, createTNode, createTView, getOrCreateTNode, resolveDirectives, saveResolvedLocalsInData} from './shared'; @@ -193,12 +193,4 @@ function containerInternal( ngDevMode && assertNodeType(getPreviousOrParentTNode(), TNodeType.Container); return tNode; -} - -export function getLContainerActiveIndex(lContainer: LContainer) { - return lContainer[ACTIVE_INDEX] >> ActiveIndexFlag.SHIFT; -} - -export function setLContainerActiveIndex(lContainer: LContainer, index: number) { - lContainer[ACTIVE_INDEX] = index << ActiveIndexFlag.SHIFT; -} +} \ No newline at end of file diff --git a/packages/core/src/render3/instructions/embedded_view.ts b/packages/core/src/render3/instructions/embedded_view.ts index 270aa8d256..f6ff3b550f 100644 --- a/packages/core/src/render3/instructions/embedded_view.ts +++ b/packages/core/src/render3/instructions/embedded_view.ts @@ -15,8 +15,8 @@ import {CONTEXT, LView, LViewFlags, PARENT, TVIEW, TView, TViewType, T_HOST} fro import {assertNodeType} from '../node_assert'; import {insertView, removeView} from '../node_manipulation'; import {enterView, getIsParent, getLView, getPreviousOrParentTNode, leaveViewProcessExit, setIsParent, setPreviousOrParentTNode} from '../state'; -import {isCreationMode} from '../util/view_utils'; -import {getLContainerActiveIndex} from './container'; +import {getLContainerActiveIndex, isCreationMode} from '../util/view_utils'; + import {assignTViewNodeToLView, createLView, createTView, refreshView, renderView} from './shared'; diff --git a/packages/core/src/render3/instructions/lview_debug.ts b/packages/core/src/render3/instructions/lview_debug.ts index 676f24ec71..bbe621beda 100644 --- a/packages/core/src/render3/instructions/lview_debug.ts +++ b/packages/core/src/render3/instructions/lview_debug.ts @@ -23,8 +23,7 @@ import {CHILD_HEAD, CHILD_TAIL, CLEANUP, CONTEXT, DECLARATION_VIEW, ExpandoInstr import {DebugNodeStyling, NodeStylingDebug} from '../styling/styling_debug'; import {attachDebugObject} from '../util/debug_utils'; import {isStylingContext} from '../util/styling_utils'; -import {getTNode, unwrapRNode} from '../util/view_utils'; -import {getLContainerActiveIndex} from './container'; +import {getLContainerActiveIndex, getTNode, unwrapRNode} from '../util/view_utils'; const NG_DEV_MODE = ((typeof ngDevMode === 'undefined' || !!ngDevMode) && initNgDevMode()); diff --git a/packages/core/src/render3/util/view_utils.ts b/packages/core/src/render3/util/view_utils.ts index e03fdd5910..f9af88e232 100644 --- a/packages/core/src/render3/util/view_utils.ts +++ b/packages/core/src/render3/util/view_utils.ts @@ -8,7 +8,7 @@ import {assertDataInRange, assertDefined, assertDomNode, assertGreaterThan, assertLessThan} from '../../util/assert'; import {assertTNodeForLView} from '../assert'; -import {LContainer, TYPE} from '../interfaces/container'; +import {ACTIVE_INDEX, ActiveIndexFlag, LContainer, TYPE} from '../interfaces/container'; import {LContext, MONKEY_PATCH_KEY_NAME} from '../interfaces/context'; import {TConstants, TNode} from '../interfaces/node'; import {RNode, isProceduralRenderer} from '../interfaces/renderer'; @@ -188,3 +188,11 @@ export function getConstant(consts: TConstants | null, index: number | null | export function resetPreOrderHookFlags(lView: LView) { lView[PREORDER_HOOK_FLAGS] = 0; } + +export function getLContainerActiveIndex(lContainer: LContainer) { + return lContainer[ACTIVE_INDEX] >> ActiveIndexFlag.SHIFT; +} + +export function setLContainerActiveIndex(lContainer: LContainer, index: number) { + lContainer[ACTIVE_INDEX] = index << ActiveIndexFlag.SHIFT; +} \ No newline at end of file diff --git a/packages/core/src/render3/view_engine_compatibility.ts b/packages/core/src/render3/view_engine_compatibility.ts index a2522e837f..d83d32b65d 100644 --- a/packages/core/src/render3/view_engine_compatibility.ts +++ b/packages/core/src/render3/view_engine_compatibility.ts @@ -20,7 +20,6 @@ import {assertDefined, assertGreaterThan, assertLessThan} from '../util/assert'; import {assertLContainer} from './assert'; import {NodeInjector, getParentInjectorLocation} from './di'; -import {setLContainerActiveIndex} from './instructions/container'; import {addToViewTree, createLContainer, createLView, renderView} from './instructions/shared'; import {ActiveIndexFlag, CONTAINER_HEADER_OFFSET, LContainer, VIEW_REFS} from './interfaces/container'; import {TContainerNode, TElementContainerNode, TElementNode, TNode, TNodeType, TViewNode} from './interfaces/node'; @@ -33,7 +32,7 @@ import {getParentInjectorTNode} from './node_util'; import {getLView, getPreviousOrParentTNode} from './state'; import {getParentInjectorView, hasParentInjector} from './util/injector_utils'; import {findComponentView} from './util/view_traversal_utils'; -import {getComponentLViewByIndex, getNativeByTNode, unwrapRNode, viewAttachedToContainer} from './util/view_utils'; +import {getComponentLViewByIndex, getNativeByTNode, setLContainerActiveIndex, unwrapRNode, viewAttachedToContainer} from './util/view_utils'; import {ViewRef} from './view_ref';