Skip to content

Commit 6a9a48b

Browse files
mheveryAndrewKushnir
authored andcommitted
test: improve symbol-extractor test by ignoring $1 suffix (angular#28098)
PR Close angular#28098
1 parent da2880d commit 6a9a48b

19 files changed

+111
-82
lines changed

packages/common/src/directives/ng_for_of.ts

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

9-
import {ChangeDetectorRef, Directive, DoCheck, EmbeddedViewRef, Input, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDiffers, NgIterable, TemplateRef, TrackByFunction, ViewContainerRef, forwardRef, isDevMode} from '@angular/core';
9+
import {Directive, DoCheck, EmbeddedViewRef, Input, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDiffers, NgIterable, TemplateRef, TrackByFunction, ViewContainerRef, forwardRef, isDevMode} from '@angular/core';
1010

1111
/**
1212
* @publicApi
@@ -151,7 +151,7 @@ export class NgForOf<T> implements DoCheck {
151151
this._differ = this._differs.find(value).create(this.ngForTrackBy);
152152
} catch {
153153
throw new Error(
154-
`Cannot find a differ supporting object '${value}' of type '${getTypeNameForDebugging(value)}'. NgFor only supports binding to Iterables such as Arrays.`);
154+
`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);
155155
}
156156
}
157157
}
@@ -218,6 +218,6 @@ class RecordViewTuple<T> {
218218
constructor(public record: any, public view: EmbeddedViewRef<NgForOfContext<T>>) {}
219219
}
220220

221-
export function getTypeNameForDebugging(type: any): string {
221+
function getTypeName(type: any): string {
222222
return type['name'] || typeof type;
223223
}

packages/core/src/render3/component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {PlayerHandler} from './interfaces/player';
2525
import {RElement, Renderer3, RendererFactory3, domRendererFactory3} from './interfaces/renderer';
2626
import {CONTEXT, FLAGS, HEADER_OFFSET, HOST, HOST_NODE, LView, LViewFlags, RootContext, RootContextFlags, TVIEW} from './interfaces/view';
2727
import {enterView, getPreviousOrParentTNode, leaveView, resetComponentState, setCurrentDirectiveDef} from './state';
28-
import {defaultScheduler, getRootView, readPatchedLView, stringify} from './util';
28+
import {defaultScheduler, getRootView, readPatchedLView, renderStringify} from './util';
2929

3030

3131

@@ -84,7 +84,7 @@ type HostFeature = (<T>(component: T, componentDef: ComponentDef<T>) => void);
8484
// TODO: A hack to not pull in the NullInjector from @angular/core.
8585
export const NULL_INJECTOR: Injector = {
8686
get: (token: any, notFoundValue?: any) => {
87-
throw new Error('NullInjector: Not found: ' + stringify(token));
87+
throw new Error('NullInjector: Not found: ' + renderStringify(token));
8888
}
8989
};
9090

packages/core/src/render3/di.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {DECLARATION_VIEW, HOST_NODE, INJECTOR, LView, TData, TVIEW, TView} from
2222
import {assertNodeOfPossibleTypes} from './node_assert';
2323
import {unwrapOnChangesDirectiveWrapper} from './onchanges_util';
2424
import {getLView, getPreviousOrParentTNode, setTNodeAndViewData} from './state';
25-
import {findComponentView, getParentInjectorIndex, getParentInjectorView, hasParentInjector, isComponent, isComponentDef, stringify} from './util';
25+
import {findComponentView, getParentInjectorIndex, getParentInjectorView, hasParentInjector, isComponent, isComponentDef, renderStringify} from './util';
2626

2727

2828

@@ -312,7 +312,7 @@ export function getOrCreateInjectable<T>(
312312
try {
313313
const value = bloomHash();
314314
if (value == null && !(flags & InjectFlags.Optional)) {
315-
throw new Error(`No provider for ${stringify(token)}!`);
315+
throw new Error(`No provider for ${renderStringify(token)}!`);
316316
} else {
317317
return value;
318318
}
@@ -402,7 +402,7 @@ export function getOrCreateInjectable<T>(
402402
if (flags & InjectFlags.Optional) {
403403
return notFoundValue;
404404
} else {
405-
throw new Error(`NodeInjector: NOT_FOUND [${stringify(token)}]`);
405+
throw new Error(`NodeInjector: NOT_FOUND [${renderStringify(token)}]`);
406406
}
407407
}
408408

@@ -500,7 +500,7 @@ export function getNodeInjectable(
500500
if (isFactory(value)) {
501501
const factory: NodeInjectorFactory = value;
502502
if (factory.resolving) {
503-
throw new Error(`Circular dep for ${stringify(tData[index])}`);
503+
throw new Error(`Circular dep for ${renderStringify(tData[index])}`);
504504
}
505505
const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);
506506
factory.resolving = true;

packages/core/src/render3/discovery_utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {LContext} from './interfaces/context';
1515
import {DirectiveDef} from './interfaces/definition';
1616
import {TElementNode, TNode, TNodeProviderIndexes} from './interfaces/node';
1717
import {CLEANUP, CONTEXT, FLAGS, HOST, LView, LViewFlags, PARENT, RootContext, TVIEW} from './interfaces/view';
18-
import {readElementValue, readPatchedLView, stringify} from './util';
18+
import {readElementValue, readPatchedLView, renderStringify} from './util';
1919

2020

2121

@@ -201,7 +201,7 @@ export function loadLContext(target: {}, throwOnNotFound: boolean = true): LCont
201201
const context = getLContext(target);
202202
if (!context && throwOnNotFound) {
203203
throw new Error(
204-
ngDevMode ? `Unable to find context associated with ${stringify(target)}` :
204+
ngDevMode ? `Unable to find context associated with ${renderStringify(target)}` :
205205
'Invalid ng target');
206206
}
207207
return context;

packages/core/src/render3/i18n.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {BINDING_INDEX, HEADER_OFFSET, HOST_NODE, LView, RENDERER, TVIEW, TView}
2222
import {appendChild, createTextNode, removeChild} from './node_manipulation';
2323
import {getIsParent, getLView, getPreviousOrParentTNode, setIsParent, setPreviousOrParentTNode} from './state';
2424
import {NO_CHANGE} from './tokens';
25-
import {addAllToArray, getNativeByIndex, getNativeByTNode, getTNode, isLContainer, stringify} from './util';
25+
import {addAllToArray, getNativeByIndex, getNativeByTNode, getTNode, isLContainer, renderStringify} from './util';
2626

2727
const MARKER = `�`;
2828
const ICU_BLOCK_REGEX = /^\s*(\d+:?\d*)\s*,\s*(select|plural)\s*,/;
@@ -712,7 +712,7 @@ function readUpdateOpCodes(
712712
} else if (typeof opCode == 'number') {
713713
if (opCode < 0) {
714714
// It's a binding index whose value is negative
715-
value += stringify(viewData[bindingsStartIndex - opCode]);
715+
value += renderStringify(viewData[bindingsStartIndex - opCode]);
716716
} else {
717717
const nodeIndex = opCode >>> I18nUpdateOpCode.SHIFT_REF;
718718
switch (opCode & I18nUpdateOpCode.MASK_OPCODE) {

packages/core/src/render3/instructions.ts

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import {getInitialClassNameValue, initializeStaticContext as initializeStaticSty
4040
import {BoundPlayerFactory} from './styling/player_factory';
4141
import {createEmptyStylingContext, getStylingContext, hasClassInput, hasStyling, isAnimationProp} from './styling/util';
4242
import {NO_CHANGE} from './tokens';
43-
import {findComponentView, getComponentViewByIndex, getNativeByIndex, getNativeByTNode, getRootContext, getRootView, getTNode, isComponent, isComponentDef, loadInternal, readElementValue, readPatchedLView, stringify} from './util';
43+
import {findComponentView, getComponentViewByIndex, getNativeByIndex, getNativeByTNode, getRootContext, getRootView, getTNode, isComponent, isComponentDef, loadInternal, readElementValue, readPatchedLView, renderStringify} from './util';
4444

4545

4646

@@ -788,7 +788,7 @@ function setUpAttributes(native: RElement, attrs: TAttributes): void {
788788
}
789789

790790
export function createError(text: string, token: any) {
791-
return new Error(`Renderer: ${text} [${stringify(token)}]`);
791+
return new Error(`Renderer: ${text} [${renderStringify(token)}]`);
792792
}
793793

794794

@@ -984,7 +984,7 @@ export function elementAttribute(
984984
ngDevMode && ngDevMode.rendererSetAttribute++;
985985
const tNode = getTNode(index, lView);
986986
const strValue =
987-
sanitizer == null ? stringify(value) : sanitizer(value, tNode.tagName || '', name);
987+
sanitizer == null ? renderStringify(value) : sanitizer(value, tNode.tagName || '', name);
988988
isProceduralRenderer(renderer) ? renderer.setAttribute(element, name, strValue) :
989989
element.setAttribute(name, strValue);
990990
}
@@ -1329,7 +1329,7 @@ export function elementStyleProp(
13291329
if (suffix) {
13301330
// when a suffix is applied then it will bypass
13311331
// sanitization entirely (b/c a new string is created)
1332-
valueToAdd = stringify(value) + suffix;
1332+
valueToAdd = renderStringify(value) + suffix;
13331333
} else {
13341334
// sanitization happens by dealing with a String value
13351335
// this means that the string value will be passed through
@@ -1458,8 +1458,8 @@ export function textBinding<T>(index: number, value: T | NO_CHANGE): void {
14581458
ngDevMode && assertDefined(element, 'native element should exist');
14591459
ngDevMode && ngDevMode.rendererSetText++;
14601460
const renderer = lView[RENDERER];
1461-
isProceduralRenderer(renderer) ? renderer.setValue(element, stringify(value)) :
1462-
element.textContent = stringify(value);
1461+
isProceduralRenderer(renderer) ? renderer.setValue(element, renderStringify(value)) :
1462+
element.textContent = renderStringify(value);
14631463
}
14641464
}
14651465

@@ -2718,7 +2718,7 @@ export function interpolationV(values: any[]): string|NO_CHANGE {
27182718
// Build the updated content
27192719
let content = values[0];
27202720
for (let i = 1; i < values.length; i += 2) {
2721-
content += stringify(values[i]) + values[i + 1];
2721+
content += renderStringify(values[i]) + values[i + 1];
27222722
}
27232723

27242724
return content;
@@ -2735,7 +2735,7 @@ export function interpolation1(prefix: string, v0: any, suffix: string): string|
27352735
const lView = getLView();
27362736
const different = bindingUpdated(lView, lView[BINDING_INDEX], v0);
27372737
lView[BINDING_INDEX] += 1;
2738-
return different ? prefix + stringify(v0) + suffix : NO_CHANGE;
2738+
return different ? prefix + renderStringify(v0) + suffix : NO_CHANGE;
27392739
}
27402740

27412741
/** Creates an interpolation binding with 2 expressions. */
@@ -2745,7 +2745,7 @@ export function interpolation2(
27452745
const different = bindingUpdated2(lView, lView[BINDING_INDEX], v0, v1);
27462746
lView[BINDING_INDEX] += 2;
27472747

2748-
return different ? prefix + stringify(v0) + i0 + stringify(v1) + suffix : NO_CHANGE;
2748+
return different ? prefix + renderStringify(v0) + i0 + renderStringify(v1) + suffix : NO_CHANGE;
27492749
}
27502750

27512751
/** Creates an interpolation binding with 3 expressions. */
@@ -2756,8 +2756,9 @@ export function interpolation3(
27562756
const different = bindingUpdated3(lView, lView[BINDING_INDEX], v0, v1, v2);
27572757
lView[BINDING_INDEX] += 3;
27582758

2759-
return different ? prefix + stringify(v0) + i0 + stringify(v1) + i1 + stringify(v2) + suffix :
2760-
NO_CHANGE;
2759+
return different ?
2760+
prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + suffix :
2761+
NO_CHANGE;
27612762
}
27622763

27632764
/** Create an interpolation binding with 4 expressions. */
@@ -2769,8 +2770,8 @@ export function interpolation4(
27692770
lView[BINDING_INDEX] += 4;
27702771

27712772
return different ?
2772-
prefix + stringify(v0) + i0 + stringify(v1) + i1 + stringify(v2) + i2 + stringify(v3) +
2773-
suffix :
2773+
prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
2774+
renderStringify(v3) + suffix :
27742775
NO_CHANGE;
27752776
}
27762777

@@ -2785,8 +2786,8 @@ export function interpolation5(
27852786
lView[BINDING_INDEX] += 5;
27862787

27872788
return different ?
2788-
prefix + stringify(v0) + i0 + stringify(v1) + i1 + stringify(v2) + i2 + stringify(v3) + i3 +
2789-
stringify(v4) + suffix :
2789+
prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
2790+
renderStringify(v3) + i3 + renderStringify(v4) + suffix :
27902791
NO_CHANGE;
27912792
}
27922793

@@ -2801,8 +2802,8 @@ export function interpolation6(
28012802
lView[BINDING_INDEX] += 6;
28022803

28032804
return different ?
2804-
prefix + stringify(v0) + i0 + stringify(v1) + i1 + stringify(v2) + i2 + stringify(v3) + i3 +
2805-
stringify(v4) + i4 + stringify(v5) + suffix :
2805+
prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
2806+
renderStringify(v3) + i3 + renderStringify(v4) + i4 + renderStringify(v5) + suffix :
28062807
NO_CHANGE;
28072808
}
28082809

@@ -2818,8 +2819,9 @@ export function interpolation7(
28182819
lView[BINDING_INDEX] += 7;
28192820

28202821
return different ?
2821-
prefix + stringify(v0) + i0 + stringify(v1) + i1 + stringify(v2) + i2 + stringify(v3) + i3 +
2822-
stringify(v4) + i4 + stringify(v5) + i5 + stringify(v6) + suffix :
2822+
prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
2823+
renderStringify(v3) + i3 + renderStringify(v4) + i4 + renderStringify(v5) + i5 +
2824+
renderStringify(v6) + suffix :
28232825
NO_CHANGE;
28242826
}
28252827

@@ -2835,8 +2837,9 @@ export function interpolation8(
28352837
lView[BINDING_INDEX] += 8;
28362838

28372839
return different ?
2838-
prefix + stringify(v0) + i0 + stringify(v1) + i1 + stringify(v2) + i2 + stringify(v3) + i3 +
2839-
stringify(v4) + i4 + stringify(v5) + i5 + stringify(v6) + i6 + stringify(v7) + suffix :
2840+
prefix + renderStringify(v0) + i0 + renderStringify(v1) + i1 + renderStringify(v2) + i2 +
2841+
renderStringify(v3) + i3 + renderStringify(v4) + i4 + renderStringify(v5) + i5 +
2842+
renderStringify(v6) + i6 + renderStringify(v7) + suffix :
28402843
NO_CHANGE;
28412844
}
28422845

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {componentNeedsResolution, maybeQueueResolutionOfComponentResources} from
1515
import {ViewEncapsulation} from '../../metadata/view';
1616
import {EMPTY_ARRAY, EMPTY_OBJ} from '../empty';
1717
import {NG_COMPONENT_DEF, NG_DIRECTIVE_DEF} from '../fields';
18-
import {stringify} from '../util';
18+
import {renderStringify} from '../util';
1919

2020
import {R3DirectiveMetadataFacade, getCompilerFacade} from './compiler_facade';
2121
import {R3ComponentMetadataFacade, R3QueryMetadataFacade} from './compiler_facade_interface';
@@ -43,9 +43,9 @@ export function compileComponent(type: Type<any>, metadata: Component): void {
4343
const compiler = getCompilerFacade();
4444
if (ngComponentDef === null) {
4545
if (componentNeedsResolution(metadata)) {
46-
const error = [`Component '${stringify(type)}' is not resolved:`];
46+
const error = [`Component '${renderStringify(type)}' is not resolved:`];
4747
if (metadata.templateUrl) {
48-
error.push(` - templateUrl: ${stringify(metadata.templateUrl)}`);
48+
error.push(` - templateUrl: ${renderStringify(metadata.templateUrl)}`);
4949
}
5050
if (metadata.styleUrls && metadata.styleUrls.length) {
5151
error.push(` - styleUrls: ${JSON.stringify(metadata.styleUrls)}`);
@@ -69,7 +69,7 @@ export function compileComponent(type: Type<any>, metadata: Component): void {
6969
viewProviders: metadata.viewProviders || null,
7070
};
7171
ngComponentDef = compiler.compileComponent(
72-
angularCoreEnv, `ng://${stringify(type)}/template.html`, meta);
72+
angularCoreEnv, `ng://${renderStringify(type)}/template.html`, meta);
7373

7474
// When NgModule decorator executed, we enqueued the module definition such that
7575
// it would only dequeue and add itself as module scope to all of its declarations,
@@ -176,7 +176,7 @@ function extractQueriesMetadata(
176176
if (!ann.selector) {
177177
throw new Error(
178178
`Can't construct a query for the property "${field}" of ` +
179-
`"${stringify(type)}" since the query selector wasn't defined.`);
179+
`"${renderStringify(type)}" since the query selector wasn't defined.`);
180180
}
181181
queriesMeta.push(convertToR3QueryMetadata(field, ann));
182182
}

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {getComponentDef, getDirectiveDef, getNgModuleDef, getPipeDef} from '../d
1717
import {NG_COMPONENT_DEF, NG_DIRECTIVE_DEF, NG_MODULE_DEF, NG_PIPE_DEF} from '../fields';
1818
import {ComponentDef} from '../interfaces/definition';
1919
import {NgModuleType} from '../ng_module_ref';
20-
import {stringify} from '../util';
20+
import {renderStringify} from '../util';
2121

2222
import {R3InjectorMetadataFacade, getCompilerFacade} from './compiler_facade';
2323
import {angularCoreEnv} from './environment';
@@ -183,7 +183,7 @@ function verifySemanticsOfNgModuleDef(moduleType: NgModuleType): void {
183183
const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef(type);
184184
if (!def) {
185185
errors.push(
186-
`Unexpected value '${stringify(type)}' declared by the module '${stringify(moduleType)}'. Please add a @Pipe/@Directive/@Component annotation.`);
186+
`Unexpected value '${renderStringify(type)}' declared by the module '${renderStringify(moduleType)}'. Please add a @Pipe/@Directive/@Component annotation.`);
187187
}
188188
}
189189

@@ -197,7 +197,7 @@ function verifySemanticsOfNgModuleDef(moduleType: NgModuleType): void {
197197
if (combinedDeclarations.lastIndexOf(type) === -1) {
198198
// We are exporting something which we don't explicitly declare or import.
199199
errors.push(
200-
`Can't export ${kind} ${stringify(type)} from ${stringify(moduleType)} as it was neither declared nor imported!`);
200+
`Can't export ${kind} ${renderStringify(type)} from ${renderStringify(moduleType)} as it was neither declared nor imported!`);
201201
}
202202
}
203203
}
@@ -206,11 +206,11 @@ function verifySemanticsOfNgModuleDef(moduleType: NgModuleType): void {
206206
type = resolveForwardRef(type);
207207
const existingModule = ownerNgModule.get(type);
208208
if (existingModule && existingModule !== moduleType) {
209-
const modules = [existingModule, moduleType].map(stringify).sort();
209+
const modules = [existingModule, moduleType].map(renderStringify).sort();
210210
errors.push(
211-
`Type ${stringify(type)} is part of the declarations of 2 modules: ${modules[0]} and ${modules[1]}! ` +
212-
`Please consider moving ${stringify(type)} to a higher module that imports ${modules[0]} and ${modules[1]}. ` +
213-
`You can also create a new NgModule that exports and includes ${stringify(type)} then import that NgModule in ${modules[0]} and ${modules[1]}.`);
211+
`Type ${renderStringify(type)} is part of the declarations of 2 modules: ${modules[0]} and ${modules[1]}! ` +
212+
`Please consider moving ${renderStringify(type)} to a higher module that imports ${modules[0]} and ${modules[1]}. ` +
213+
`You can also create a new NgModule that exports and includes ${renderStringify(type)} then import that NgModule in ${modules[0]} and ${modules[1]}.`);
214214
} else {
215215
// Mark type as having owner.
216216
ownerNgModule.set(type, moduleType);
@@ -222,7 +222,7 @@ function verifySemanticsOfNgModuleDef(moduleType: NgModuleType): void {
222222
const existingModule = ownerNgModule.get(type);
223223
if (!existingModule) {
224224
errors.push(
225-
`Component ${stringify(type)} is not part of any NgModule or the module has not been imported into your module.`);
225+
`Component ${renderStringify(type)} is not part of any NgModule or the module has not been imported into your module.`);
226226
}
227227
}
228228

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import {Type} from '../../interface/type';
1010
import {Pipe} from '../../metadata/directives';
1111
import {NG_PIPE_DEF} from '../fields';
12-
import {stringify} from '../util';
12+
import {renderStringify} from '../util';
1313

1414
import {getCompilerFacade} from './compiler_facade';
1515
import {angularCoreEnv} from './environment';
@@ -21,7 +21,7 @@ export function compilePipe(type: Type<any>, meta: Pipe): void {
2121
get: () => {
2222
if (ngPipeDef === null) {
2323
ngPipeDef = getCompilerFacade().compilePipe(
24-
angularCoreEnv, `ng://${stringify(type)}/ngPipeDef.js`, {
24+
angularCoreEnv, `ng://${renderStringify(type)}/ngPipeDef.js`, {
2525
type: type,
2626
name: type.name,
2727
deps: reflectDependencies(type),

0 commit comments

Comments
 (0)