@@ -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