diff --git a/lib/handlebars/compiler/javascript-compiler.js b/lib/handlebars/compiler/javascript-compiler.js index db1c50c6..7762412e 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 a43fb81f..825de237 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}}!'