From b6146394aedcc5d67f372802b11c51032f4ef72d Mon Sep 17 00:00:00 2001 From: vsavkin Date: Thu, 20 Aug 2015 13:50:33 -0700 Subject: [PATCH] refactor(change_detection): replaced devMode with ChangeDetectorGenConfig --- .../src/change_detection/change_detection.ts | 30 +++++++++++++++++-- .../change_detection_jit_generator.ts | 10 ++++--- .../change_detection/codegen_logic_util.ts | 5 ++-- .../dynamic_change_detector.ts | 4 ++- .../src/change_detection/interfaces.ts | 9 +++++- .../jit_proto_change_detector.ts | 2 +- .../change_detection/proto_change_detector.ts | 3 +- .../src/core/compiler/proto_view_factory.ts | 18 ++++++----- .../change_detector_codegen.dart | 12 ++++---- .../template_compiler/generator.dart | 5 +++- .../change_detection/change_detection_spec.ts | 2 +- .../change_detector_config.ts | 23 +++++++++----- .../core/compiler/element_injector_spec.ts | 4 +-- .../core/compiler/proto_view_factory_spec.ts | 2 +- 14 files changed, 90 insertions(+), 39 deletions(-) diff --git a/modules/angular2/src/change_detection/change_detection.ts b/modules/angular2/src/change_detection/change_detection.ts index 68bd95d9f4..62f77a58ac 100644 --- a/modules/angular2/src/change_detection/change_detection.ts +++ b/modules/angular2/src/change_detection/change_detection.ts @@ -5,10 +5,21 @@ import {IterableDiffers, IterableDifferFactory} from './differs/iterable_differs import {DefaultIterableDifferFactory} from './differs/default_iterable_differ'; import {KeyValueDiffers, KeyValueDifferFactory} from './differs/keyvalue_differs'; import {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ'; -import {ChangeDetection, ProtoChangeDetector, ChangeDetectorDefinition} from './interfaces'; +import { + ChangeDetection, + ProtoChangeDetector, + ChangeDetectorDefinition, + ChangeDetectorGenConfig +} from './interfaces'; import {Injector, Inject, Injectable, OpaqueToken, Optional, Binding} from 'angular2/di'; import {List, StringMap, StringMapWrapper} from 'angular2/src/facade/collection'; -import {CONST, CONST_EXPR, isPresent, BaseException} from 'angular2/src/facade/lang'; +import { + CONST, + CONST_EXPR, + isPresent, + BaseException, + assertionsEnabled +} from 'angular2/src/facade/lang'; export { ASTWithSource, @@ -34,7 +45,8 @@ export { ChangeDispatcher, ChangeDetection, ChangeDetectorDefinition, - DebugContext + DebugContext, + ChangeDetectorGenConfig } from './interfaces'; export {CHECK_ONCE, CHECK_ALWAYS, DETACHED, CHECKED, ON_PUSH, DEFAULT} from './constants'; export {DynamicProtoChangeDetector} from './proto_change_detector'; @@ -101,6 +113,10 @@ export class PreGeneratedChangeDetection extends ChangeDetection { } get generateDetectors(): boolean { return true; } + + get genConfig(): ChangeDetectorGenConfig { + return new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled()); + } } @@ -116,6 +132,10 @@ export class DynamicChangeDetection extends ChangeDetection { } get generateDetectors(): boolean { return true; } + + get genConfig(): ChangeDetectorGenConfig { + return new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled()); + } } /** @@ -134,4 +154,8 @@ export class JitChangeDetection extends ChangeDetection { } get generateDetectors(): boolean { return true; } + + get genConfig(): ChangeDetectorGenConfig { + return new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled()); + } } diff --git a/modules/angular2/src/change_detection/change_detection_jit_generator.ts b/modules/angular2/src/change_detection/change_detection_jit_generator.ts index 3ba1564d5f..fe32b84ced 100644 --- a/modules/angular2/src/change_detection/change_detection_jit_generator.ts +++ b/modules/angular2/src/change_detection/change_detection_jit_generator.ts @@ -10,6 +10,7 @@ import {CodegenNameUtil, sanitizeName} from './codegen_name_util'; import {CodegenLogicUtil} from './codegen_logic_util'; import {EventBinding} from './event_binding'; import {BindingTarget} from './binding_record'; +import {ChangeDetectorGenConfig} from './interfaces'; /** @@ -34,7 +35,7 @@ export class ChangeDetectorJITGenerator { constructor(private id: string, private changeDetectionStrategy: string, private records: List, private propertyBindingTargets: BindingTarget[], private eventBindings: EventBinding[], private directiveRecords: List, - private devMode: boolean) { + private genConfig: ChangeDetectorGenConfig) { this._names = new CodegenNameUtil(this.records, this.eventBindings, this.directiveRecords, UTIL); this._logic = new CodegenLogicUtil(this._names, UTIL, changeDetectionStrategy); @@ -87,7 +88,8 @@ export class ChangeDetectorJITGenerator { } _genPropertyBindingTargets(): string { - var targets = this._logic.genPropertyBindingTargets(this.propertyBindingTargets, true); + var targets = this._logic.genPropertyBindingTargets(this.propertyBindingTargets, + this.genConfig.genDebugInfo); return `${this._typeName}.gen_propertyBindingTargets = ${targets};`; } @@ -318,7 +320,7 @@ export class ChangeDetectorJITGenerator { } _genThrowOnChangeCheck(oldValue: string, newValue: string): string { - if (this.devMode) { + if (this.genConfig.genCheckNoChanges) { return ` if(throwOnChange) { this.throwOnChangeError(${oldValue}, ${newValue}); @@ -330,7 +332,7 @@ export class ChangeDetectorJITGenerator { } _genCheckNoChanges(): string { - if (this.devMode) { + if (this.genConfig.genCheckNoChanges) { return `${this._typeName}.prototype.checkNoChanges = function() { this.runDetectChanges(true); }`; } else { return ''; diff --git a/modules/angular2/src/change_detection/codegen_logic_util.ts b/modules/angular2/src/change_detection/codegen_logic_util.ts index 1dd632ed84..26b7506dbb 100644 --- a/modules/angular2/src/change_detection/codegen_logic_util.ts +++ b/modules/angular2/src/change_detection/codegen_logic_util.ts @@ -124,11 +124,12 @@ export class CodegenLogicUtil { } } - genPropertyBindingTargets(propertyBindingTargets: BindingTarget[], devMode: boolean): string { + genPropertyBindingTargets(propertyBindingTargets: BindingTarget[], + genDebugInfo: boolean): string { var bs = propertyBindingTargets.map(b => { if (isBlank(b)) return "null"; - var debug = devMode ? codify(b.debug) : "null"; + var debug = genDebugInfo ? codify(b.debug) : "null"; return `${this._utilName}.bindingTarget(${codify(b.mode)}, ${b.elementIndex}, ${codify(b.name)}, ${codify(b.unit)}, ${debug})`; }); return `[${bs.join(", ")}]`; diff --git a/modules/angular2/src/change_detection/dynamic_change_detector.ts b/modules/angular2/src/change_detection/dynamic_change_detector.ts index 2d23b2f126..a8268c79fa 100644 --- a/modules/angular2/src/change_detection/dynamic_change_detector.ts +++ b/modules/angular2/src/change_detection/dynamic_change_detector.ts @@ -12,6 +12,7 @@ import {EventBinding} from './event_binding'; import {BindingRecord, BindingTarget} from './binding_record'; import {DirectiveRecord, DirectiveIndex} from './directive_record'; import {Locals} from './parser/locals'; +import {ChangeDetectorGenConfig} from './interfaces'; import {ChangeDetectionUtil, SimpleChange} from './change_detection_util'; import {ProtoRecord, RecordType} from './proto_record'; @@ -26,7 +27,8 @@ export class DynamicChangeDetector extends AbstractChangeDetector { constructor(id: string, dispatcher: any, numberOfPropertyProtoRecords: number, propertyBindingTargets: BindingTarget[], directiveIndices: DirectiveIndex[], modeOnHydrate: string, private records: ProtoRecord[], - private eventBindings: EventBinding[], private directiveRecords: DirectiveRecord[]) { + private eventBindings: EventBinding[], private directiveRecords: DirectiveRecord[], + private genConfig: ChangeDetectorGenConfig) { super(id, dispatcher, numberOfPropertyProtoRecords, propertyBindingTargets, directiveIndices, modeOnHydrate); var len = records.length + 1; diff --git a/modules/angular2/src/change_detection/interfaces.ts b/modules/angular2/src/change_detection/interfaces.ts index 08b9ed5ee7..3a3fdae57f 100644 --- a/modules/angular2/src/change_detection/interfaces.ts +++ b/modules/angular2/src/change_detection/interfaces.ts @@ -37,6 +37,8 @@ export class ChangeDetection { } get generateDetectors(): boolean { return null; } + + get genConfig(): ChangeDetectorGenConfig { return null; } } export class DebugContext { @@ -71,8 +73,13 @@ export interface ChangeDetector { export interface ProtoChangeDetector { instantiate(dispatcher: ChangeDispatcher): ChangeDetector; } +export class ChangeDetectorGenConfig { + constructor(public genCheckNoChanges: boolean, public genDebugInfo: boolean) {} +} + export class ChangeDetectorDefinition { constructor(public id: string, public strategy: string, public variableNames: List, public bindingRecords: BindingRecord[], public eventRecords: BindingRecord[], - public directiveRecords: DirectiveRecord[], public devMode: boolean) {} + public directiveRecords: DirectiveRecord[], + public genConfig: ChangeDetectorGenConfig) {} } diff --git a/modules/angular2/src/change_detection/jit_proto_change_detector.ts b/modules/angular2/src/change_detection/jit_proto_change_detector.ts index fe063f4da4..aeb0da7c3d 100644 --- a/modules/angular2/src/change_detection/jit_proto_change_detector.ts +++ b/modules/angular2/src/change_detection/jit_proto_change_detector.ts @@ -25,7 +25,7 @@ export class JitProtoChangeDetector implements ProtoChangeDetector { return new ChangeDetectorJITGenerator( definition.id, definition.strategy, propertyBindingRecords, propertyBindingTargets, - eventBindingRecords, this.definition.directiveRecords, this.definition.devMode) + eventBindingRecords, this.definition.directiveRecords, this.definition.genConfig) .generate(); } } diff --git a/modules/angular2/src/change_detection/proto_change_detector.ts b/modules/angular2/src/change_detection/proto_change_detector.ts index f018c728a6..0e3136ad60 100644 --- a/modules/angular2/src/change_detection/proto_change_detector.ts +++ b/modules/angular2/src/change_detection/proto_change_detector.ts @@ -54,7 +54,8 @@ export class DynamicProtoChangeDetector implements ProtoChangeDetector { this.definition.id, dispatcher, this._propertyBindingRecords.length, this._propertyBindingTargets, this._directiveIndices, ChangeDetectionUtil.changeDetectionMode(this.definition.strategy), - this._propertyBindingRecords, this._eventBindingRecords, this.definition.directiveRecords); + this._propertyBindingRecords, this._eventBindingRecords, this.definition.directiveRecords, + this.definition.genConfig); } } diff --git a/modules/angular2/src/core/compiler/proto_view_factory.ts b/modules/angular2/src/core/compiler/proto_view_factory.ts index 716e79e20d..d2cba49648 100644 --- a/modules/angular2/src/core/compiler/proto_view_factory.ts +++ b/modules/angular2/src/core/compiler/proto_view_factory.ts @@ -12,6 +12,7 @@ import { ProtoChangeDetector, DEFAULT, ChangeDetectorDefinition, + ChangeDetectorGenConfig, ASTWithSource } from 'angular2/src/change_detection/change_detection'; @@ -234,9 +235,9 @@ export class ProtoViewFactory { nestedPvVariableNames: string[][], allRenderDirectiveMetadata: any[]): ProtoChangeDetector[] { if (this._changeDetection.generateDetectors) { - var changeDetectorDefs = - _getChangeDetectorDefinitions(hostComponentBinding.metadata, nestedPvsWithIndex, - nestedPvVariableNames, allRenderDirectiveMetadata); + var changeDetectorDefs = _getChangeDetectorDefinitions( + hostComponentBinding.metadata, nestedPvsWithIndex, nestedPvVariableNames, + allRenderDirectiveMetadata, this._changeDetection.genConfig); return changeDetectorDefs.map(changeDetectorDef => this._changeDetection.getProtoChangeDetector( changeDetectorDef.id, changeDetectorDef)); @@ -254,11 +255,13 @@ export class ProtoViewFactory { */ export function getChangeDetectorDefinitions( hostComponentMetadata: RenderDirectiveMetadata, rootRenderProtoView: ProtoViewDto, - allRenderDirectiveMetadata: List): List { + allRenderDirectiveMetadata: List, genConfig: ChangeDetectorGenConfig): + List { var nestedPvsWithIndex = _collectNestedProtoViews(rootRenderProtoView); var nestedPvVariableNames = _collectNestedProtoViewsVariableNames(nestedPvsWithIndex); return _getChangeDetectorDefinitions(hostComponentMetadata, nestedPvsWithIndex, - nestedPvVariableNames, allRenderDirectiveMetadata); + nestedPvVariableNames, allRenderDirectiveMetadata, + genConfig); } function _collectNestedProtoViews( @@ -285,7 +288,8 @@ function _collectNestedProtoViews( function _getChangeDetectorDefinitions( hostComponentMetadata: RenderDirectiveMetadata, nestedPvsWithIndex: List, nestedPvVariableNames: List>, - allRenderDirectiveMetadata: List): List { + allRenderDirectiveMetadata: List, genConfig: ChangeDetectorGenConfig): + List { return ListWrapper.map(nestedPvsWithIndex, (pvWithIndex) => { var elementBinders = pvWithIndex.renderProtoView.elementBinders; var bindingRecordsCreator = new BindingRecordsCreator(); @@ -302,7 +306,7 @@ function _getChangeDetectorDefinitions( var id = _protoViewId(hostComponentMetadata, pvWithIndex); var variableNames = nestedPvVariableNames[pvWithIndex.index]; return new ChangeDetectorDefinition(id, strategyName, variableNames, propBindingRecords, - eventBindingRecords, directiveRecords, assertionsEnabled()); + eventBindingRecords, directiveRecords, genConfig); }); } diff --git a/modules/angular2/src/transform/template_compiler/change_detector_codegen.dart b/modules/angular2/src/transform/template_compiler/change_detector_codegen.dart index a7f20a9080..c8dad2c33e 100644 --- a/modules/angular2/src/transform/template_compiler/change_detector_codegen.dart +++ b/modules/angular2/src/transform/template_compiler/change_detector_codegen.dart @@ -80,7 +80,7 @@ class _CodegenState { final List _eventBindings; final CodegenLogicUtil _logic; final CodegenNameUtil _names; - final bool _devMode; + final ChangeDetectorGenConfig _genConfig; final List _propertyBindingTargets; _CodegenState._( @@ -94,7 +94,7 @@ class _CodegenState { this._directiveRecords, this._logic, this._names, - this._devMode) + this._genConfig) : _changeDetectionMode = ChangeDetectionUtil.changeDetectionMode(changeDetectionStrategy); @@ -117,7 +117,7 @@ class _CodegenState { def.directiveRecords, logic, names, - def.devMode); + def.genConfig); } void _writeToBuf(StringBuffer buf) { @@ -170,7 +170,7 @@ class _CodegenState { } String _genPropertyBindingTargets() { - var targets = _logic.genPropertyBindingTargets(_propertyBindingTargets, this._devMode); + var targets = _logic.genPropertyBindingTargets(_propertyBindingTargets, this._genConfig.genDebugInfo); return "static var gen_propertyBindingTargets = ${targets}"; } @@ -418,7 +418,7 @@ class _CodegenState { } String _genThrowOnChangeCheck(String oldValue, String newValue) { - if (this._devMode) { + if (this._genConfig.genCheckNoChanges) { return ''' if(throwOnChange) { this.throwOnChangeError(${oldValue}, ${newValue}); @@ -430,7 +430,7 @@ class _CodegenState { } String _genCheckNoChanges() { - if (this._devMode) { + if (this._genConfig.genCheckNoChanges) { return 'void checkNoChanges() { runDetectChanges(true); }'; } else { return ''; diff --git a/modules/angular2/src/transform/template_compiler/generator.dart b/modules/angular2/src/transform/template_compiler/generator.dart index 10d7791ea3..acc782092a 100644 --- a/modules/angular2/src/transform/template_compiler/generator.dart +++ b/modules/angular2/src/transform/template_compiler/generator.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'package:angular2/src/change_detection/parser/lexer.dart' as ng; import 'package:angular2/src/change_detection/parser/parser.dart' as ng; +import 'package:angular2/src/change_detection/interfaces.dart'; import 'package:angular2/src/core/compiler/proto_view_factory.dart'; import 'package:angular2/src/dom/dom_adapter.dart'; import 'package:angular2/src/render/api.dart'; @@ -19,6 +20,7 @@ import 'package:angular2/src/reflection/reflection.dart'; import 'package:angular2/src/services/url_resolver.dart'; import 'package:angular2/src/transform/common/asset_reader.dart'; import 'package:angular2/src/transform/common/xhr_impl.dart'; +import 'package:angular2/src/facade/lang.dart'; import 'package:barback/barback.dart'; import 'change_detector_codegen.dart' as change; @@ -56,9 +58,10 @@ Future processTemplates(AssetReader reader, AssetId entryPoint, } if (generateChangeDetectors) { var saved = reflector.reflectionCapabilities; + var genConfig = new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled()); reflector.reflectionCapabilities = const NullReflectionCapabilities(); var defs = getChangeDetectorDefinitions(viewDefEntry.hostMetadata, - protoView, viewDefEntry.viewDef.directives); + protoView, viewDefEntry.viewDef.directives, genConfig); for (var i = 0; i < defs.length; ++i) { changeDetectorClasses.generate('${rType.typeName}', '_${rType.typeName}_ChangeDetector$i', defs[i]); diff --git a/modules/angular2/test/change_detection/change_detection_spec.ts b/modules/angular2/test/change_detection/change_detection_spec.ts index 24eb8dfdbd..a019b15616 100644 --- a/modules/angular2/test/change_detection/change_detection_spec.ts +++ b/modules/angular2/test/change_detection/change_detection_spec.ts @@ -23,7 +23,7 @@ export function main() { beforeEach(() => { proto = new SpyProtoChangeDetector(); - def = new ChangeDetectorDefinition('id', null, [], [], [], [], true); + def = new ChangeDetectorDefinition('id', null, [], [], [], [], null); }); it("should return a proto change detector when one is available", () => { diff --git a/modules/angular2/test/change_detection/change_detector_config.ts b/modules/angular2/test/change_detection/change_detector_config.ts index 3442a1fef2..41c049431b 100644 --- a/modules/angular2/test/change_detection/change_detector_config.ts +++ b/modules/angular2/test/change_detection/change_detector_config.ts @@ -9,7 +9,8 @@ import { DirectiveRecord, Lexer, Locals, - Parser + Parser, + ChangeDetectorGenConfig } from 'angular2/src/change_detection/change_detection'; import {reflector} from 'angular2/src/reflection/reflection'; import {ReflectionCapabilities} from 'angular2/src/reflection/reflection_capabilities'; @@ -65,6 +66,7 @@ export var PROP_NAME = 'propName'; * In this case, we expect `id` and `expression` to be the same string. */ export function getDefinition(id: string): TestDefinition { + var genConfig = new ChangeDetectorGenConfig(true, true); var testDef = null; if (StringMapWrapper.contains(_ExpressionWithLocals.availableDefinitions, id)) { let val = StringMapWrapper.get(_ExpressionWithLocals.availableDefinitions, id); @@ -90,23 +92,23 @@ export function getDefinition(id: string): TestDefinition { var eventRecords = _createBindingRecords(id); var directiveRecords = []; let cdDef = new ChangeDetectorDefinition(id, strategy, variableBindings, eventRecords, [], - directiveRecords, true); + directiveRecords, genConfig); testDef = new TestDefinition(id, cdDef, null); } else if (ListWrapper.indexOf(_availableEventDefinitions, id) >= 0) { var eventRecords = _createEventRecords(id); - let cdDef = new ChangeDetectorDefinition(id, null, [], [], eventRecords, [], true); + let cdDef = new ChangeDetectorDefinition(id, null, [], [], eventRecords, [], genConfig); testDef = new TestDefinition(id, cdDef, null); } else if (ListWrapper.indexOf(_availableHostEventDefinitions, id) >= 0) { var eventRecords = _createHostEventRecords(id, _DirectiveUpdating.basicRecords[0]); let cdDef = new ChangeDetectorDefinition(id, null, [], [], eventRecords, - [_DirectiveUpdating.basicRecords[0]], true); + [_DirectiveUpdating.basicRecords[0]], genConfig); testDef = new TestDefinition(id, cdDef, null); } else if (id == "onPushObserve") { var records = _createBindingRecords("a"); - let cdDef = new ChangeDetectorDefinition(id, "ON_PUSH_OBSERVE", [], records, [], [], false); + let cdDef = new ChangeDetectorDefinition(id, "ON_PUSH_OBSERVE", [], records, [], [], genConfig); testDef = new TestDefinition(id, cdDef, null); } @@ -148,8 +150,9 @@ class _ExpressionWithLocals { var variableBindings = _convertLocalsToVariableBindings(this.locals); var bindingRecords = _createBindingRecords(this._expression); var directiveRecords = []; + var genConfig = new ChangeDetectorGenConfig(true, true); return new ChangeDetectorDefinition('(empty id)', strategy, variableBindings, bindingRecords, - [], directiveRecords, true); + [], directiveRecords, genConfig); } /** @@ -207,8 +210,10 @@ class _ExpressionWithMode { _createHostEventRecords("(host-event)='false'", dirRecordWithOnPush)) } + var genConfig = new ChangeDetectorGenConfig(true, true); + return new ChangeDetectorDefinition('(empty id)', this._strategy, variableBindings, - bindingRecords, eventRecords, directiveRecords, true); + bindingRecords, eventRecords, directiveRecords, genConfig); } /** @@ -231,9 +236,11 @@ class _DirectiveUpdating { createChangeDetectorDefinition(): ChangeDetectorDefinition { var strategy = null; var variableBindings = []; + var genConfig = new ChangeDetectorGenConfig(true, true); return new ChangeDetectorDefinition('(empty id)', strategy, variableBindings, - this._bindingRecords, [], this._directiveRecords, true); + this._bindingRecords, [], this._directiveRecords, + genConfig); } static updateA(expression: string, dirRecord): BindingRecord { diff --git a/modules/angular2/test/core/compiler/element_injector_spec.ts b/modules/angular2/test/core/compiler/element_injector_spec.ts index 09d051ec5b..e1f7a05d74 100644 --- a/modules/angular2/test/core/compiler/element_injector_spec.ts +++ b/modules/angular2/test/core/compiler/element_injector_spec.ts @@ -980,7 +980,7 @@ export function main() { }); it("should inject ChangeDetectorRef of the component's view into the component", () => { - var cd = new DynamicChangeDetector(null, null, 0, [], [], null, [], [], []); + var cd = new DynamicChangeDetector(null, null, 0, [], [], null, [], [], [], null); var view = new DummyView(); var childView = new DummyView(); childView.changeDetector = cd; @@ -993,7 +993,7 @@ export function main() { }); it("should inject ChangeDetectorRef of the containing component into directives", () => { - var cd = new DynamicChangeDetector(null, null, 0, [], [], null, [], [], []); + var cd = new DynamicChangeDetector(null, null, 0, [], [], null, [], [], [], null); var view = new DummyView(); view.changeDetector =cd; var binding = DirectiveBinding.createFromType(DirectiveNeedsChangeDetectorRef, new DirectiveMetadata()); diff --git a/modules/angular2/test/core/compiler/proto_view_factory_spec.ts b/modules/angular2/test/core/compiler/proto_view_factory_spec.ts index a69e57cd33..51ee5f92be 100644 --- a/modules/angular2/test/core/compiler/proto_view_factory_spec.ts +++ b/modules/angular2/test/core/compiler/proto_view_factory_spec.ts @@ -66,7 +66,7 @@ export function main() { it('should create a ChangeDetectorDefinition for the root render proto view', () => { var renderPv = createRenderProtoView(); var defs = - getChangeDetectorDefinitions(bindDirective(MainComponent).metadata, renderPv, []); + getChangeDetectorDefinitions(bindDirective(MainComponent).metadata, renderPv, [], null); expect(defs.length).toBe(1); expect(defs[0].id).toEqual(`${stringify(MainComponent)}_comp_0`); });