Skip to content

Commit

Permalink
Merge pull request #91 from glimmerjs/private-local-declaration-fix
Browse files Browse the repository at this point in the history
Read scope variables from current path instead of top level program
  • Loading branch information
chadhietala authored Jan 13, 2021
2 parents a84f14a + 547aa92 commit 0eea50c
Show file tree
Hide file tree
Showing 11 changed files with 190 additions and 53 deletions.
10 changes: 4 additions & 6 deletions packages/@glimmerx/babel-plugin-component-templates/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,12 +310,10 @@ module.exports = function (babel, options) {
const templateScopeTokens = getTemplateTokens(templateSource);

const filtered = [];
const parentScope = path.scope.getProgramParent();

Object.values(parentScope.bindings).forEach((binding) => {
binding.reference(path);

if (templateScopeTokens.includes(binding.identifier.name)) {
templateScopeTokens.forEach((token) => {
const binding = path.scope.getBinding(token);
if (binding) {
binding.reference(path);
filtered.push(binding.identifier.name);
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import OtherComponent from './OtherComponent';
import YetAnotherComponent from './YetAnotherComponent';

const template1 = _setComponentTemplate(_createTemplate({
OtherComponent: OtherComponent,
_t: _t
_t: _t,
OtherComponent: OtherComponent
}, `{{_t "bar"}}<h1>Hello world</h1><OtherComponent/>`), _templateOnlyComponent());

const template2 = _setComponentTemplate(_createTemplate({
YetAnotherComponent: YetAnotherComponent,
_t: _t
_t: _t,
YetAnotherComponent: YetAnotherComponent
}, `{{_t "foo"}}<YetAnotherComponent/>`), _templateOnlyComponent());
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ _setComponentTemplate({
block: "{\"symbols\":[],\"statements\":[[11,\"h1\"],[4,[38,0],null,null],[12],[2,\"Hello world \"],[1,[34,1]],[8,\"MySubComponent\",[],[[],[]],[[\"default\"],[{\"statements\":[[8,\"MaybeComponent\",[],[[],[]],null]],\"parameters\":[]}]]],[13]],\"hasEval\":false,\"upvars\":[\"maybeModifier\",\"unknownValue\"]}",
meta: {
scope: () => ({
maybeModifier: maybeModifier,
unknownValue: unknownValue,
MaybeComponent: MaybeComponent,
maybeModifier: maybeModifier
MaybeComponent: MaybeComponent
})
}
}, MyComponent)
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ _setComponentTemplate({
block: "{\"symbols\":[],\"statements\":[[11,\"h1\"],[4,[38,0],null,null],[12],[2,\"Hello world \"],[1,[34,1]],[8,\"MySubComponent\",[],[[],[]],[[\"default\"],[{\"statements\":[[8,\"MaybeComponent\",[],[[],[]],null]],\"parameters\":[]}]]],[13]],\"hasEval\":false,\"upvars\":[\"maybeModifier\",\"unknownValue\"]}",
meta: {
scope: () => ({
maybeModifier: maybeModifier,
unknownValue: unknownValue,
MaybeComponent: MaybeComponent,
maybeModifier: maybeModifier
MaybeComponent: MaybeComponent
})
}
}, MyComponent)
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ _setComponentTemplate({
block: "{\"symbols\":[],\"statements\":[[11,\"h1\"],[4,[38,0],null,null],[12],[2,\"Hello world \"],[1,[34,1]],[8,\"MySubComponent\",[],[[],[]],[[\"default\"],[{\"statements\":[[8,\"MaybeComponent\",[],[[],[]],null]],\"parameters\":[]}]]],[13]],\"hasEval\":false,\"upvars\":[\"maybeModifier\",\"unknownValue\"]}",
meta: {
scope: () => ({
maybeModifier: maybeModifier,
unknownValue: unknownValue,
MaybeComponent: MaybeComponent,
maybeModifier: maybeModifier
MaybeComponent: MaybeComponent
})
}
}, MyComponent)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import Component, { hbs } from '@glimmerx/component';

function root() {
function nested() {
class OtherComponent extends Component {
static template = hbs`Hello World`;
}

class MyComponent extends Component {
static template = hbs`<h1><OtherComponent/></h1>`
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { setComponentTemplate as _setComponentTemplate } from "@glimmer/core";
import Component from '@glimmerx/component';

function root() {
function nested() {
class OtherComponent extends Component {}

_setComponentTemplate({
id: "L9WxEO3m",
block: "{\"symbols\":[],\"statements\":[[2,\"Hello World\"]],\"hasEval\":false,\"upvars\":[]}",
meta: {
scope: () => ({})
}
}, OtherComponent)

class MyComponent extends Component {}

_setComponentTemplate({
id: "X+3KCppa",
block: "{\"symbols\":[],\"statements\":[[10,\"h1\"],[12],[8,\"OtherComponent\",[],[[],[]],null],[13]],\"hasEval\":false,\"upvars\":[]}",
meta: {
scope: () => ({
OtherComponent: OtherComponent
})
}
}, MyComponent)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ _setComponentTemplate({
block: "{\"symbols\":[],\"statements\":[[11,\"h1\"],[4,[38,0],null,null],[12],[2,\"Hello world \"],[1,[34,1]],[8,\"MySubComponent\",[],[[],[]],[[\"default\"],[{\"statements\":[[8,\"MaybeComponent\",[],[[],[]],null]],\"parameters\":[]}]]],[13]],\"hasEval\":false,\"upvars\":[\"maybeModifier\",\"unknownValue\"]}",
meta: {
scope: () => ({
MaybeComponent: MaybeComponent,
maybeModifier: maybeModifier,
unknownValue: unknownValue,
maybeModifier: maybeModifier
MaybeComponent: MaybeComponent
})
}
}, MyComponent);
2 changes: 1 addition & 1 deletion packages/examples/basic-addon/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"@glimmerx/modifier": "^0.3.0",
"@glimmerx/service": "^0.3.0",
"ember-cli-babel": "^7.19.0",
"ember-cli-htmlbars": "^4.2.3"
"ember-cli-htmlbars": "^5.3.1"
},
"devDependencies": {
"@ember/optional-features": "^1.3.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/examples/ember-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"ember-cli-app-version": "^3.2.0",
"ember-cli-babel": "^7.19.0",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-htmlbars": "^4.2.3",
"ember-cli-htmlbars": "^5.3.1",
"ember-cli-inject-live-reload": "^2.0.2",
"ember-cli-sri": "^2.1.1",
"ember-cli-uglify": "^3.0.0",
Expand Down
Loading

0 comments on commit 0eea50c

Please sign in to comment.