From 30dbf0478109ded8f12bb29832135d480c17e367 Mon Sep 17 00:00:00 2001 From: arturmakaranka Date: Wed, 4 May 2022 22:08:54 +0400 Subject: [PATCH] Fix compiling of each block params in strict mode Fixes #1820 Closes #1821 --- lib/handlebars/compiler/javascript-compiler.js | 7 ++++--- spec/builtins.js | 9 +++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/handlebars/compiler/javascript-compiler.js b/lib/handlebars/compiler/javascript-compiler.js index db1c50c62..7762412ef 100644 --- a/lib/handlebars/compiler/javascript-compiler.js +++ b/lib/handlebars/compiler/javascript-compiler.js @@ -537,7 +537,9 @@ JavaScriptCompiler.prototype = { resolvePath: function(type, parts, i, falsy, strict) { if (this.options.strict || this.options.assumeObjects) { - this.push(strictLookup(this.options.strict && strict, this, parts, type)); + this.push( + strictLookup(this.options.strict && strict, this, parts, i, type) + ); return; } @@ -1261,9 +1263,8 @@ JavaScriptCompiler.isValidJavaScriptVariableName = function(name) { ); }; -function strictLookup(requireTerminal, compiler, parts, type) { +function strictLookup(requireTerminal, compiler, parts, i, type) { let stack = compiler.popStack(), - i = 0, len = parts.length; if (requireTerminal) { len--; diff --git a/spec/builtins.js b/spec/builtins.js index a43fb81f5..825de237c 100644 --- a/spec/builtins.js +++ b/spec/builtins.js @@ -324,6 +324,15 @@ describe('builtin helpers', function() { ); }); + it('each with block params and strict compilation', function() { + expectTemplate( + '{{#each goodbyes as |value index|}}{{index}}. {{value.text}}!{{/each}}' + ) + .withCompileOptions({ strict: true }) + .withInput({ goodbyes: [{ text: 'goodbye' }, { text: 'Goodbye' }] }) + .toCompileTo('0. goodbye!1. Goodbye!'); + }); + it('each object with @index', function() { expectTemplate( '{{#each goodbyes}}{{@index}}. {{text}}! {{/each}}cruel {{world}}!'