Ensure that existing blockParams and depths are respected on dupe programs
Fixes #1186
This commit is contained in:
committed by
Lon Ingram
parent
1b885d496a
commit
8ff49cef52
@@ -778,11 +778,11 @@ JavaScriptCompiler.prototype = {
|
||||
child = children[i];
|
||||
compiler = new this.compiler(); // eslint-disable-line new-cap
|
||||
|
||||
let index = this.matchExistingProgram(child);
|
||||
let existing = this.matchExistingProgram(child);
|
||||
|
||||
if (index == null) {
|
||||
if (existing == null) {
|
||||
this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
|
||||
index = this.context.programs.length;
|
||||
let index = this.context.programs.length;
|
||||
child.index = index;
|
||||
child.name = 'program' + index;
|
||||
this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
|
||||
@@ -791,12 +791,14 @@ JavaScriptCompiler.prototype = {
|
||||
|
||||
this.useDepths = this.useDepths || compiler.useDepths;
|
||||
this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
|
||||
child.useDepths = this.useDepths;
|
||||
child.useBlockParams = this.useBlockParams;
|
||||
} else {
|
||||
child.index = index;
|
||||
child.name = 'program' + index;
|
||||
child.index = existing.index;
|
||||
child.name = 'program' + existing.index;
|
||||
|
||||
this.useDepths = this.useDepths || child.useDepths;
|
||||
this.useBlockParams = this.useBlockParams || child.useBlockParams;
|
||||
this.useDepths = this.useDepths || existing.useDepths;
|
||||
this.useBlockParams = this.useBlockParams || existing.useBlockParams;
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -804,7 +806,7 @@ JavaScriptCompiler.prototype = {
|
||||
for (let i = 0, len = this.context.environments.length; i < len; i++) {
|
||||
let environment = this.context.environments[i];
|
||||
if (environment && environment.equals(child)) {
|
||||
return i;
|
||||
return environment;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user