feat(change_detect): Guard checkNoChanges behind assertionsEnabled

Always generate `checkNoChanges` tests, but guard them behind
`assertionsEnabled` tests.

Closes #4560
This commit is contained in:
Tim Blasi
2015-10-28 10:06:53 -07:00
parent 2d0c8f1b0e
commit 63e853dcd7
14 changed files with 42 additions and 60 deletions

View File

@ -123,7 +123,8 @@ class _CodegenState {
var names = new CodegenNameUtil(
protoRecords, eventBindings, def.directiveRecords, '$genPrefix$_UTIL');
var logic = new CodegenLogicUtil(names, '$genPrefix$_UTIL', '$genPrefix$_STATE', def.strategy);
var logic = new CodegenLogicUtil(
names, '$genPrefix$_UTIL', '$genPrefix$_STATE', def.strategy);
return new _CodegenState._(
genPrefix,
def.id,
@ -163,8 +164,6 @@ class _CodegenState {
${_maybeGenHandleEventInternal()}
${_genCheckNoChanges()}
${_maybeGenAfterContentLifecycleCallbacks()}
${_maybeGenAfterViewLifecycleCallbacks()}
@ -515,23 +514,11 @@ class _CodegenState {
}
String _genThrowOnChangeCheck(String oldValue, String newValue) {
if (this._genConfig.genCheckNoChanges) {
return '''
if(throwOnChange) {
this.throwOnChangeError(${oldValue}, ${newValue});
}
''';
} else {
return "";
}
}
String _genCheckNoChanges() {
if (this._genConfig.genCheckNoChanges) {
return 'void checkNoChanges() { runDetectChanges(true); }';
} else {
return '';
}
return '''
if(${_genPrefix}assertionsEnabled() && throwOnChange) {
this.throwOnChangeError(${oldValue}, ${newValue});
}
''';
}
String _maybeFirstInBinding(ProtoRecord r) {

View File

@ -28,8 +28,10 @@ import 'compile_data_creator.dart';
///
/// This method assumes a {@link DomAdapter} has been registered.
Future<Outputs> processTemplates(AssetReader reader, AssetId assetId,
{bool reflectPropertiesAsAttributes: false, List<String> ambientDirectives}) async {
var viewDefResults = await createCompileData(reader, assetId, ambientDirectives);
{bool reflectPropertiesAsAttributes: false,
List<String> ambientDirectives}) async {
var viewDefResults =
await createCompileData(reader, assetId, ambientDirectives);
if (viewDefResults == null) return null;
final directiveMetadatas = viewDefResults.ngMeta.types.values;
if (directiveMetadatas.isNotEmpty) {
@ -45,7 +47,7 @@ Future<Outputs> processTemplates(AssetReader reader, AssetId assetId,
var templateCompiler = zone.templateCompiler;
if (templateCompiler == null) {
templateCompiler = createTemplateCompiler(reader,
changeDetectionConfig: new ChangeDetectorGenConfig(assertionsEnabled(),
changeDetectionConfig: new ChangeDetectorGenConfig(
assertionsEnabled(), reflectPropertiesAsAttributes, false));
}