Skip to content

Commit

Permalink
Fix compiling of each block params in strict mode
Browse files Browse the repository at this point in the history
Fixes #1820
Closes #1821
  • Loading branch information
arturmakaranka authored and jaylinski committed May 25, 2022
1 parent e3a5448 commit 30dbf04
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
7 changes: 4 additions & 3 deletions lib/handlebars/compiler/javascript-compiler.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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--;
Expand Down
9 changes: 9 additions & 0 deletions spec/builtins.js
Original file line number Diff line number Diff line change
Expand Up @@ -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}}!'
Expand Down

0 comments on commit 30dbf04

Please sign in to comment.