Skip to content

Commit b614639

Browse files
committed
refactor(change_detection): replaced devMode with ChangeDetectorGenConfig
1 parent 764726d commit b614639

14 files changed

+90
-39
lines changed

modules/angular2/src/change_detection/change_detection.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,21 @@ import {IterableDiffers, IterableDifferFactory} from './differs/iterable_differs
55
import {DefaultIterableDifferFactory} from './differs/default_iterable_differ';
66
import {KeyValueDiffers, KeyValueDifferFactory} from './differs/keyvalue_differs';
77
import {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ';
8-
import {ChangeDetection, ProtoChangeDetector, ChangeDetectorDefinition} from './interfaces';
8+
import {
9+
ChangeDetection,
10+
ProtoChangeDetector,
11+
ChangeDetectorDefinition,
12+
ChangeDetectorGenConfig
13+
} from './interfaces';
914
import {Injector, Inject, Injectable, OpaqueToken, Optional, Binding} from 'angular2/di';
1015
import {List, StringMap, StringMapWrapper} from 'angular2/src/facade/collection';
11-
import {CONST, CONST_EXPR, isPresent, BaseException} from 'angular2/src/facade/lang';
16+
import {
17+
CONST,
18+
CONST_EXPR,
19+
isPresent,
20+
BaseException,
21+
assertionsEnabled
22+
} from 'angular2/src/facade/lang';
1223

1324
export {
1425
ASTWithSource,
@@ -34,7 +45,8 @@ export {
3445
ChangeDispatcher,
3546
ChangeDetection,
3647
ChangeDetectorDefinition,
37-
DebugContext
48+
DebugContext,
49+
ChangeDetectorGenConfig
3850
} from './interfaces';
3951
export {CHECK_ONCE, CHECK_ALWAYS, DETACHED, CHECKED, ON_PUSH, DEFAULT} from './constants';
4052
export {DynamicProtoChangeDetector} from './proto_change_detector';
@@ -101,6 +113,10 @@ export class PreGeneratedChangeDetection extends ChangeDetection {
101113
}
102114

103115
get generateDetectors(): boolean { return true; }
116+
117+
get genConfig(): ChangeDetectorGenConfig {
118+
return new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled());
119+
}
104120
}
105121

106122

@@ -116,6 +132,10 @@ export class DynamicChangeDetection extends ChangeDetection {
116132
}
117133

118134
get generateDetectors(): boolean { return true; }
135+
136+
get genConfig(): ChangeDetectorGenConfig {
137+
return new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled());
138+
}
119139
}
120140

121141
/**
@@ -134,4 +154,8 @@ export class JitChangeDetection extends ChangeDetection {
134154
}
135155

136156
get generateDetectors(): boolean { return true; }
157+
158+
get genConfig(): ChangeDetectorGenConfig {
159+
return new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled());
160+
}
137161
}

modules/angular2/src/change_detection/change_detection_jit_generator.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {CodegenNameUtil, sanitizeName} from './codegen_name_util';
1010
import {CodegenLogicUtil} from './codegen_logic_util';
1111
import {EventBinding} from './event_binding';
1212
import {BindingTarget} from './binding_record';
13+
import {ChangeDetectorGenConfig} from './interfaces';
1314

1415

1516
/**
@@ -34,7 +35,7 @@ export class ChangeDetectorJITGenerator {
3435
constructor(private id: string, private changeDetectionStrategy: string,
3536
private records: List<ProtoRecord>, private propertyBindingTargets: BindingTarget[],
3637
private eventBindings: EventBinding[], private directiveRecords: List<any>,
37-
private devMode: boolean) {
38+
private genConfig: ChangeDetectorGenConfig) {
3839
this._names =
3940
new CodegenNameUtil(this.records, this.eventBindings, this.directiveRecords, UTIL);
4041
this._logic = new CodegenLogicUtil(this._names, UTIL, changeDetectionStrategy);
@@ -87,7 +88,8 @@ export class ChangeDetectorJITGenerator {
8788
}
8889

8990
_genPropertyBindingTargets(): string {
90-
var targets = this._logic.genPropertyBindingTargets(this.propertyBindingTargets, true);
91+
var targets = this._logic.genPropertyBindingTargets(this.propertyBindingTargets,
92+
this.genConfig.genDebugInfo);
9193
return `${this._typeName}.gen_propertyBindingTargets = ${targets};`;
9294
}
9395

@@ -318,7 +320,7 @@ export class ChangeDetectorJITGenerator {
318320
}
319321

320322
_genThrowOnChangeCheck(oldValue: string, newValue: string): string {
321-
if (this.devMode) {
323+
if (this.genConfig.genCheckNoChanges) {
322324
return `
323325
if(throwOnChange) {
324326
this.throwOnChangeError(${oldValue}, ${newValue});
@@ -330,7 +332,7 @@ export class ChangeDetectorJITGenerator {
330332
}
331333

332334
_genCheckNoChanges(): string {
333-
if (this.devMode) {
335+
if (this.genConfig.genCheckNoChanges) {
334336
return `${this._typeName}.prototype.checkNoChanges = function() { this.runDetectChanges(true); }`;
335337
} else {
336338
return '';

modules/angular2/src/change_detection/codegen_logic_util.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,12 @@ export class CodegenLogicUtil {
124124
}
125125
}
126126

127-
genPropertyBindingTargets(propertyBindingTargets: BindingTarget[], devMode: boolean): string {
127+
genPropertyBindingTargets(propertyBindingTargets: BindingTarget[],
128+
genDebugInfo: boolean): string {
128129
var bs = propertyBindingTargets.map(b => {
129130
if (isBlank(b)) return "null";
130131

131-
var debug = devMode ? codify(b.debug) : "null";
132+
var debug = genDebugInfo ? codify(b.debug) : "null";
132133
return `${this._utilName}.bindingTarget(${codify(b.mode)}, ${b.elementIndex}, ${codify(b.name)}, ${codify(b.unit)}, ${debug})`;
133134
});
134135
return `[${bs.join(", ")}]`;

modules/angular2/src/change_detection/dynamic_change_detector.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {EventBinding} from './event_binding';
1212
import {BindingRecord, BindingTarget} from './binding_record';
1313
import {DirectiveRecord, DirectiveIndex} from './directive_record';
1414
import {Locals} from './parser/locals';
15+
import {ChangeDetectorGenConfig} from './interfaces';
1516
import {ChangeDetectionUtil, SimpleChange} from './change_detection_util';
1617

1718
import {ProtoRecord, RecordType} from './proto_record';
@@ -26,7 +27,8 @@ export class DynamicChangeDetector extends AbstractChangeDetector<any> {
2627
constructor(id: string, dispatcher: any, numberOfPropertyProtoRecords: number,
2728
propertyBindingTargets: BindingTarget[], directiveIndices: DirectiveIndex[],
2829
modeOnHydrate: string, private records: ProtoRecord[],
29-
private eventBindings: EventBinding[], private directiveRecords: DirectiveRecord[]) {
30+
private eventBindings: EventBinding[], private directiveRecords: DirectiveRecord[],
31+
private genConfig: ChangeDetectorGenConfig) {
3032
super(id, dispatcher, numberOfPropertyProtoRecords, propertyBindingTargets, directiveIndices,
3133
modeOnHydrate);
3234
var len = records.length + 1;

modules/angular2/src/change_detection/interfaces.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ export class ChangeDetection {
3737
}
3838

3939
get generateDetectors(): boolean { return null; }
40+
41+
get genConfig(): ChangeDetectorGenConfig { return null; }
4042
}
4143

4244
export class DebugContext {
@@ -71,8 +73,13 @@ export interface ChangeDetector {
7173

7274
export interface ProtoChangeDetector { instantiate(dispatcher: ChangeDispatcher): ChangeDetector; }
7375

76+
export class ChangeDetectorGenConfig {
77+
constructor(public genCheckNoChanges: boolean, public genDebugInfo: boolean) {}
78+
}
79+
7480
export class ChangeDetectorDefinition {
7581
constructor(public id: string, public strategy: string, public variableNames: List<string>,
7682
public bindingRecords: BindingRecord[], public eventRecords: BindingRecord[],
77-
public directiveRecords: DirectiveRecord[], public devMode: boolean) {}
83+
public directiveRecords: DirectiveRecord[],
84+
public genConfig: ChangeDetectorGenConfig) {}
7885
}

modules/angular2/src/change_detection/jit_proto_change_detector.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class JitProtoChangeDetector implements ProtoChangeDetector {
2525

2626
return new ChangeDetectorJITGenerator(
2727
definition.id, definition.strategy, propertyBindingRecords, propertyBindingTargets,
28-
eventBindingRecords, this.definition.directiveRecords, this.definition.devMode)
28+
eventBindingRecords, this.definition.directiveRecords, this.definition.genConfig)
2929
.generate();
3030
}
3131
}

modules/angular2/src/change_detection/proto_change_detector.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ export class DynamicProtoChangeDetector implements ProtoChangeDetector {
5454
this.definition.id, dispatcher, this._propertyBindingRecords.length,
5555
this._propertyBindingTargets, this._directiveIndices,
5656
ChangeDetectionUtil.changeDetectionMode(this.definition.strategy),
57-
this._propertyBindingRecords, this._eventBindingRecords, this.definition.directiveRecords);
57+
this._propertyBindingRecords, this._eventBindingRecords, this.definition.directiveRecords,
58+
this.definition.genConfig);
5859
}
5960
}
6061

modules/angular2/src/core/compiler/proto_view_factory.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
ProtoChangeDetector,
1313
DEFAULT,
1414
ChangeDetectorDefinition,
15+
ChangeDetectorGenConfig,
1516
ASTWithSource
1617
} from 'angular2/src/change_detection/change_detection';
1718

@@ -234,9 +235,9 @@ export class ProtoViewFactory {
234235
nestedPvVariableNames: string[][],
235236
allRenderDirectiveMetadata: any[]): ProtoChangeDetector[] {
236237
if (this._changeDetection.generateDetectors) {
237-
var changeDetectorDefs =
238-
_getChangeDetectorDefinitions(hostComponentBinding.metadata, nestedPvsWithIndex,
239-
nestedPvVariableNames, allRenderDirectiveMetadata);
238+
var changeDetectorDefs = _getChangeDetectorDefinitions(
239+
hostComponentBinding.metadata, nestedPvsWithIndex, nestedPvVariableNames,
240+
allRenderDirectiveMetadata, this._changeDetection.genConfig);
240241
return changeDetectorDefs.map(changeDetectorDef =>
241242
this._changeDetection.getProtoChangeDetector(
242243
changeDetectorDef.id, changeDetectorDef));
@@ -254,11 +255,13 @@ export class ProtoViewFactory {
254255
*/
255256
export function getChangeDetectorDefinitions(
256257
hostComponentMetadata: RenderDirectiveMetadata, rootRenderProtoView: ProtoViewDto,
257-
allRenderDirectiveMetadata: List<RenderDirectiveMetadata>): List<ChangeDetectorDefinition> {
258+
allRenderDirectiveMetadata: List<RenderDirectiveMetadata>, genConfig: ChangeDetectorGenConfig):
259+
List<ChangeDetectorDefinition> {
258260
var nestedPvsWithIndex = _collectNestedProtoViews(rootRenderProtoView);
259261
var nestedPvVariableNames = _collectNestedProtoViewsVariableNames(nestedPvsWithIndex);
260262
return _getChangeDetectorDefinitions(hostComponentMetadata, nestedPvsWithIndex,
261-
nestedPvVariableNames, allRenderDirectiveMetadata);
263+
nestedPvVariableNames, allRenderDirectiveMetadata,
264+
genConfig);
262265
}
263266

264267
function _collectNestedProtoViews(
@@ -285,7 +288,8 @@ function _collectNestedProtoViews(
285288
function _getChangeDetectorDefinitions(
286289
hostComponentMetadata: RenderDirectiveMetadata,
287290
nestedPvsWithIndex: List<RenderProtoViewWithIndex>, nestedPvVariableNames: List<List<string>>,
288-
allRenderDirectiveMetadata: List<RenderDirectiveMetadata>): List<ChangeDetectorDefinition> {
291+
allRenderDirectiveMetadata: List<RenderDirectiveMetadata>, genConfig: ChangeDetectorGenConfig):
292+
List<ChangeDetectorDefinition> {
289293
return ListWrapper.map(nestedPvsWithIndex, (pvWithIndex) => {
290294
var elementBinders = pvWithIndex.renderProtoView.elementBinders;
291295
var bindingRecordsCreator = new BindingRecordsCreator();
@@ -302,7 +306,7 @@ function _getChangeDetectorDefinitions(
302306
var id = _protoViewId(hostComponentMetadata, pvWithIndex);
303307
var variableNames = nestedPvVariableNames[pvWithIndex.index];
304308
return new ChangeDetectorDefinition(id, strategyName, variableNames, propBindingRecords,
305-
eventBindingRecords, directiveRecords, assertionsEnabled());
309+
eventBindingRecords, directiveRecords, genConfig);
306310
});
307311
}
308312

modules/angular2/src/transform/template_compiler/change_detector_codegen.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class _CodegenState {
8080
final List<EventBinding> _eventBindings;
8181
final CodegenLogicUtil _logic;
8282
final CodegenNameUtil _names;
83-
final bool _devMode;
83+
final ChangeDetectorGenConfig _genConfig;
8484
final List<BindingTarget> _propertyBindingTargets;
8585

8686
_CodegenState._(
@@ -94,7 +94,7 @@ class _CodegenState {
9494
this._directiveRecords,
9595
this._logic,
9696
this._names,
97-
this._devMode)
97+
this._genConfig)
9898
: _changeDetectionMode =
9999
ChangeDetectionUtil.changeDetectionMode(changeDetectionStrategy);
100100

@@ -117,7 +117,7 @@ class _CodegenState {
117117
def.directiveRecords,
118118
logic,
119119
names,
120-
def.devMode);
120+
def.genConfig);
121121
}
122122

123123
void _writeToBuf(StringBuffer buf) {
@@ -170,7 +170,7 @@ class _CodegenState {
170170
}
171171

172172
String _genPropertyBindingTargets() {
173-
var targets = _logic.genPropertyBindingTargets(_propertyBindingTargets, this._devMode);
173+
var targets = _logic.genPropertyBindingTargets(_propertyBindingTargets, this._genConfig.genDebugInfo);
174174
return "static var gen_propertyBindingTargets = ${targets}";
175175
}
176176

@@ -418,7 +418,7 @@ class _CodegenState {
418418
}
419419

420420
String _genThrowOnChangeCheck(String oldValue, String newValue) {
421-
if (this._devMode) {
421+
if (this._genConfig.genCheckNoChanges) {
422422
return '''
423423
if(throwOnChange) {
424424
this.throwOnChangeError(${oldValue}, ${newValue});
@@ -430,7 +430,7 @@ class _CodegenState {
430430
}
431431

432432
String _genCheckNoChanges() {
433-
if (this._devMode) {
433+
if (this._genConfig.genCheckNoChanges) {
434434
return 'void checkNoChanges() { runDetectChanges(true); }';
435435
} else {
436436
return '';

modules/angular2/src/transform/template_compiler/generator.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'dart:async';
44

55
import 'package:angular2/src/change_detection/parser/lexer.dart' as ng;
66
import 'package:angular2/src/change_detection/parser/parser.dart' as ng;
7+
import 'package:angular2/src/change_detection/interfaces.dart';
78
import 'package:angular2/src/core/compiler/proto_view_factory.dart';
89
import 'package:angular2/src/dom/dom_adapter.dart';
910
import 'package:angular2/src/render/api.dart';
@@ -19,6 +20,7 @@ import 'package:angular2/src/reflection/reflection.dart';
1920
import 'package:angular2/src/services/url_resolver.dart';
2021
import 'package:angular2/src/transform/common/asset_reader.dart';
2122
import 'package:angular2/src/transform/common/xhr_impl.dart';
23+
import 'package:angular2/src/facade/lang.dart';
2224
import 'package:barback/barback.dart';
2325

2426
import 'change_detector_codegen.dart' as change;
@@ -56,9 +58,10 @@ Future<String> processTemplates(AssetReader reader, AssetId entryPoint,
5658
}
5759
if (generateChangeDetectors) {
5860
var saved = reflector.reflectionCapabilities;
61+
var genConfig = new ChangeDetectorGenConfig(assertionsEnabled(), assertionsEnabled());
5962
reflector.reflectionCapabilities = const NullReflectionCapabilities();
6063
var defs = getChangeDetectorDefinitions(viewDefEntry.hostMetadata,
61-
protoView, viewDefEntry.viewDef.directives);
64+
protoView, viewDefEntry.viewDef.directives, genConfig);
6265
for (var i = 0; i < defs.length; ++i) {
6366
changeDetectorClasses.generate('${rType.typeName}',
6467
'_${rType.typeName}_ChangeDetector$i', defs[i]);

0 commit comments

Comments
 (0)