feat(change_detect): Guard checkNoChanges
behind assertionsEnabled
Always generate `checkNoChanges` tests, but guard them behind `assertionsEnabled` tests. Closes #4560
This commit is contained in:
@ -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) {
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user