Skip to content

Commit 7aa8a01

Browse files
ferhatbvikerman
authored andcommitted
Change anchorelement to local since it is already stored in appelement.
Fix debug element creation for anchors in release builds. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=136555705
1 parent 95a9930 commit 7aa8a01

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

lib/src/compiler/view_compiler/view_builder.dart

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -381,29 +381,46 @@ class ViewBuilderVisitor implements TemplateAstVisitor {
381381

382382
dynamic visitEmbeddedTemplate(EmbeddedTemplateAst ast, dynamic context) {
383383
CompileElement parent = context;
384+
// When logging updates, we need to create anchor as a field to be able
385+
// to update the comment, otherwise we can create simple local field.
386+
bool createFieldForAnchor = view.genConfig.logBindingUpdate;
384387
var nodeIndex = this.view.nodes.length;
385388
var fieldName = '_anchor_${nodeIndex}';
386-
this.view.fields.add(new o.ClassField(fieldName,
387-
outputType: o.importType(view.genConfig.renderTypes.renderComment),
388-
modifiers: const [o.StmtModifier.Private]));
389+
var anchorVarExpr;
390+
if (createFieldForAnchor) {
391+
this.view.fields.add(new o.ClassField(fieldName,
392+
outputType: o.importType(view.genConfig.renderTypes.renderComment),
393+
modifiers: const [o.StmtModifier.Private]));
394+
anchorVarExpr = new o.ReadClassMemberExpr(fieldName);
395+
} else {
396+
anchorVarExpr = o.variable(fieldName);
397+
}
389398
// Create a comment to serve as anchor for template.
390-
var anchorFieldExpr = new o.ReadClassMemberExpr(fieldName);
391-
var createAnchorNodeExpr = new o.WriteClassMemberExpr(
392-
fieldName,
393-
o
394-
.importExpr(Identifiers.HTML_COMMENT_NODE)
395-
.instantiate([o.literal(TEMPLATE_COMMENT_TEXT)]));
396-
view.createMethod.addStmt(createAnchorNodeExpr.toStmt());
399+
if (createFieldForAnchor) {
400+
var createAnchorNodeExpr = new o.WriteClassMemberExpr(
401+
fieldName,
402+
o
403+
.importExpr(Identifiers.HTML_COMMENT_NODE)
404+
.instantiate([o.literal(TEMPLATE_COMMENT_TEXT)]));
405+
view.createMethod.addStmt(createAnchorNodeExpr.toStmt());
406+
} else {
407+
var createAnchorNodeExpr = anchorVarExpr.set(o
408+
.importExpr(Identifiers.HTML_COMMENT_NODE)
409+
.instantiate([o.literal(TEMPLATE_COMMENT_TEXT)]));
410+
view.createMethod.addStmt(createAnchorNodeExpr.toDeclStmt());
411+
}
397412
var addCommentStmt = _getParentRenderNode(parent)
398-
.callMethod('append', [anchorFieldExpr], checked: true)
413+
.callMethod('append', [anchorVarExpr], checked: true)
399414
.toStmt();
400415

401416
view.createMethod.addStmt(addCommentStmt);
402417

403-
view.createMethod
404-
.addStmt(createDbgElementCall(anchorFieldExpr, nodeIndex, ast));
418+
if (view.genConfig.genDebugInfo) {
419+
view.createMethod
420+
.addStmt(createDbgElementCall(anchorVarExpr, nodeIndex, ast));
421+
}
405422

406-
var renderNode = new o.ReadClassMemberExpr(fieldName);
423+
var renderNode = anchorVarExpr;
407424
var templateVariableBindings = ast.variables
408425
.map((VariableAst varAst) => [
409426
varAst.value.length > 0 ? varAst.value : IMPLICIT_TEMPLATE_VAR,

0 commit comments

Comments
 (0)