Skip to content

Commit

Permalink
[GLIMMER2] Destroy class-based helpers at teardown
Browse files Browse the repository at this point in the history
  • Loading branch information
Godhuda committed Jul 23, 2016
1 parent 011d79a commit 9f0de11
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -37,7 +37,7 @@
"express": "^4.5.0",
"finalhandler": "^0.4.0",
"github": "^0.2.3",
"glimmer-engine": "tildeio/glimmer#13556d2",
"glimmer-engine": "tildeio/glimmer#1df4b45",
"glob": "^5.0.13",
"htmlbars": "0.14.24",
"mocha": "^2.4.5",
Expand Down
6 changes: 3 additions & 3 deletions packages/ember-glimmer/lib/environment.js
Expand Up @@ -322,11 +322,11 @@ export default class Environment extends GlimmerEnvironment {
this.owner.lookup(`helper:${name}`);
// TODO: try to unify this into a consistent protocol to avoid wasteful closure allocations
if (helper.isInternalHelper) {
return (args) => helper.toReference(args);
return (vm, args) => helper.toReference(args);
} else if (helper.isHelperInstance) {
return (args) => SimpleHelperReference.create(helper.compute, args);
return (vm, args) => SimpleHelperReference.create(helper.compute, args);
} else if (helper.isHelperFactory) {
return (args) => ClassBasedHelperReference.create(helper, args);
return (vm, args) => ClassBasedHelperReference.create(helper, vm, args);
} else {
throw new Error(`${name} is not a helper`);
}
Expand Down
6 changes: 4 additions & 2 deletions packages/ember-glimmer/lib/utils/references.js
Expand Up @@ -221,8 +221,10 @@ export class SimpleHelperReference extends CachedReference {
}

export class ClassBasedHelperReference extends CachedReference {
static create(helperClass, args) {
return new ClassBasedHelperReference(helperClass.create(), args);
static create(helperClass, vm, args) {
let instance = helperClass.create();
vm.newDestroyable(instance);
return new ClassBasedHelperReference(instance, args);
}

constructor(instance, args) {
Expand Down
Expand Up @@ -370,7 +370,7 @@ moduleFor('Helpers test: custom helpers', class extends RenderingTest {
}, /Helpers may not be used in the element form/);
}

['@htmlbars class-based helper is torn down']() {
['@test class-based helper is torn down']() {
let destroyCalled = 0;

this.registerHelper('some-helper', {
Expand Down Expand Up @@ -486,7 +486,7 @@ moduleFor('Helpers test: custom helpers', class extends RenderingTest {
this.assertText('Who overcomes by force hath overcome but half his foe');
}

['@htmlbars class-based helper used in subexpression is destroyed']() {
['@test class-based helper used in subexpression is destroyed']() {
let destroyCount = 0;

this.registerHelper('dynamic-segment', {
Expand Down

0 comments on commit 9f0de11

Please sign in to comment.