Skip to content

Commit abdf25c

Browse files
cexbrayatmhevery
authored andcommitted
fix(core): remove duplicated EMPTY_ARRAY constant (#40587)
The codebase currently contains several `EMPTY_ARRAY` constants, and they can end up in the bundle of an application. A recent commit 6fbe219 tipped us off as it introduced several `noop` occurrences in the golden symbol files. After investigating with @petebacondarwin, we decided to remove the duplicated symbols. This probably shaves only a few bytes, but this commit removes the duplicated functions, by always using the one in `core/src/utils/empty`. PR Close #40587
1 parent de12485 commit abdf25c

File tree

14 files changed

+13
-27
lines changed

14 files changed

+13
-27
lines changed

packages/core/src/di/r3_injector.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {AbstractType, Type} from '../interface/type';
1313
import {FactoryFn, getFactoryDef} from '../render3/definition_factory';
1414
import {throwCyclicDependencyError, throwInvalidProviderError, throwMixedMultiProviderError} from '../render3/errors_di';
1515
import {deepForEach, newArray} from '../util/array_utils';
16+
import {EMPTY_ARRAY} from '../util/empty';
1617
import {stringify} from '../util/stringify';
1718

1819
import {resolveForwardRef} from './forward_ref';
@@ -48,8 +49,6 @@ const NOT_YET = {};
4849
*/
4950
const CIRCULAR = {};
5051

51-
const EMPTY_ARRAY = [] as any[];
52-
5352
/**
5453
* A lazily initialized NullInjector.
5554
*/

packages/core/src/di/util.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import {Type} from '../interface/type';
1010
import {ReflectionCapabilities} from '../reflection/reflection_capabilities';
11+
import {EMPTY_ARRAY} from '../util/empty';
1112
import {getClosureSafeProperty} from '../util/property';
1213

1314
import {resolveForwardRef} from './forward_ref';
@@ -16,7 +17,6 @@ import {ClassSansProvider, ConstructorSansProvider, ExistingSansProvider, Factor
1617

1718
const USE_VALUE =
1819
getClosureSafeProperty<ValueProvider>({provide: String, useValue: getClosureSafeProperty});
19-
const EMPTY_ARRAY: any[] = [];
2020

2121
export function convertInjectableProviderToFactory(
2222
type: Type<any>,

packages/core/src/render3/context_discovery.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import '../util/ng_dev_mode';
99

1010
import {assertDomNode} from '../util/assert';
1111

12-
import {EMPTY_ARRAY} from './empty';
12+
import {EMPTY_ARRAY} from '../util/empty';
1313
import {LContext, MONKEY_PATCH_KEY_NAME} from './interfaces/context';
1414
import {TNode, TNodeFlags} from './interfaces/node';
1515
import {RElement, RNode} from './interfaces/renderer_dom';

packages/core/src/render3/definition.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ import {NgModuleDef, NgModuleType} from '../metadata/ng_module_def';
1212
import {SchemaMetadata} from '../metadata/schema';
1313
import {ViewEncapsulation} from '../metadata/view';
1414
import {noSideEffects} from '../util/closure';
15+
import {EMPTY_ARRAY} from '../util/empty';
1516
import {initNgDevMode} from '../util/ng_dev_mode';
1617
import {stringify} from '../util/stringify';
17-
import {EMPTY_ARRAY, EMPTY_OBJ} from './empty';
18+
import {EMPTY_OBJ} from './empty';
1819
import {NG_COMP_DEF, NG_DIR_DEF, NG_LOC_ID_DEF, NG_MOD_DEF, NG_PIPE_DEF} from './fields';
1920
import {ComponentDef, ComponentDefFeature, ComponentTemplate, ComponentType, ContentQueriesFunction, DirectiveDef, DirectiveDefFeature, DirectiveTypesOrFactory, HostBindingsFunction, PipeDef, PipeTypesOrFactory, ViewQueriesFunction} from './interfaces/definition';
2021
import {AttributeMarker, TAttributes, TConstantsOrFactory} from './interfaces/node';

packages/core/src/render3/empty.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,11 @@ import {initNgDevMode} from '../util/ng_dev_mode';
1515
*/
1616

1717
export const EMPTY_OBJ: {} = {};
18-
export const EMPTY_ARRAY: any[] = [];
1918

2019
// freezing the values prevents any code from accidentally inserting new values in
2120
if ((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode()) {
2221
// These property accesses can be ignored because ngDevMode will be set to false
2322
// when optimizing code and the whole if statement will be dropped.
2423
// tslint:disable-next-line:no-toplevel-property-access
2524
Object.freeze(EMPTY_OBJ);
26-
// tslint:disable-next-line:no-toplevel-property-access
27-
Object.freeze(EMPTY_ARRAY);
2825
}

packages/core/src/render3/features/inherit_definition_feature.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
*/
88

99
import {Type, Writable} from '../../interface/type';
10+
import {EMPTY_ARRAY} from '../../util/empty';
1011
import {fillProperties} from '../../util/property';
11-
import {EMPTY_ARRAY, EMPTY_OBJ} from '../empty';
12+
import {EMPTY_OBJ} from '../empty';
1213
import {ComponentDef, ContentQueriesFunction, DirectiveDef, DirectiveDefFeature, HostBindingsFunction, RenderFlags, ViewQueriesFunction} from '../interfaces/definition';
1314
import {TAttributes} from '../interfaces/node';
1415
import {isComponentDef} from '../interfaces/type_checks';

packages/core/src/render3/instructions/i18n_icu_container_visitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88

99
import {assertDomNode, assertNumber, assertNumberInRange} from '../../util/assert';
10+
import {EMPTY_ARRAY} from '../../util/empty';
1011
import {assertTIcu, assertTNodeForLView} from '../assert';
11-
import {EMPTY_ARRAY} from '../empty';
1212
import {getCurrentICUCaseIndex} from '../i18n/i18n_util';
1313
import {I18nRemoveOpCodes, TIcu} from '../interfaces/i18n';
1414
import {TIcuContainerNode} from '../interfaces/node';

packages/core/src/render3/jit/directive.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ import {Query} from '../../metadata/di';
1515
import {Component, Directive, Input} from '../../metadata/directives';
1616
import {componentNeedsResolution, maybeQueueResolutionOfComponentResources} from '../../metadata/resource_loading';
1717
import {ViewEncapsulation} from '../../metadata/view';
18+
import {EMPTY_ARRAY} from '../../util/empty';
1819
import {initNgDevMode} from '../../util/ng_dev_mode';
1920
import {getComponentDef, getDirectiveDef} from '../definition';
20-
import {EMPTY_ARRAY, EMPTY_OBJ} from '../empty';
21+
import {EMPTY_OBJ} from '../empty';
2122
import {NG_COMP_DEF, NG_DIR_DEF, NG_FACTORY_DEF} from '../fields';
2223
import {ComponentType} from '../interfaces/definition';
2324
import {stringifyForError} from '../util/stringify_utils';

packages/core/src/render3/jit/module.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {ModuleWithProviders, NgModule} from '../../metadata/ng_module';
1616
import {NgModuleDef, NgModuleTransitiveScopes, NgModuleType} from '../../metadata/ng_module_def';
1717
import {deepForEach, flatten} from '../../util/array_utils';
1818
import {assertDefined} from '../../util/assert';
19+
import {EMPTY_ARRAY} from '../../util/empty';
1920
import {getComponentDef, getDirectiveDef, getNgModuleDef, getPipeDef} from '../definition';
2021
import {NG_COMP_DEF, NG_DIR_DEF, NG_MOD_DEF, NG_PIPE_DEF} from '../fields';
2122
import {ComponentDef} from '../interfaces/definition';
@@ -24,8 +25,6 @@ import {stringifyForError} from '../util/stringify_utils';
2425

2526
import {angularCoreEnv} from './environment';
2627

27-
const EMPTY_ARRAY: Type<any>[] = [];
28-
2928
interface ModuleQueueItem {
3029
moduleType: Type<any>;
3130
ngModule: NgModule;

packages/core/src/view/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9+
export {EMPTY_ARRAY} from '../util/empty';
910
export {anchorDef, elementDef} from './element';
1011
export {clearOverrides, createNgModuleFactory, overrideComponentView, overrideProvider} from './entrypoint';
1112
export {ngContentDef} from './ng_content';
@@ -16,7 +17,7 @@ export {queryDef} from './query';
1617
export {createComponentFactory, getComponentViewDefinitionFactory, nodeValue, ViewRef_} from './refs';
1718
export {initServicesIfNeeded} from './services';
1819
export {textDef} from './text';
19-
export {createRendererType2, elementEventFullName, EMPTY_ARRAY, EMPTY_MAP, inlineInterpolate, interpolate, rootRenderNodes, tokenKey, unwrapValue} from './util';
20+
export {createRendererType2, elementEventFullName, EMPTY_MAP, inlineInterpolate, interpolate, rootRenderNodes, tokenKey, unwrapValue} from './util';
2021
export {viewDef} from './view';
2122
export {attachEmbeddedView, detachEmbeddedView, moveEmbeddedView} from './view_attach';
2223

0 commit comments

Comments
 (0)