From d58f0720d30df3157a5f09fe661ac5e51f734680 Mon Sep 17 00:00:00 2001 From: Lenny Burdette Date: Wed, 11 Jul 2018 10:21:54 -0700 Subject: [PATCH] fix: using ...attributes without passing attrs fails Example: A component template with: ```hbs
``` and this invocation: ```hbs ``` fails with: ``` Uncaught TypeError: Cannot convert undefined or null to object at Function.keys () at Object.create (runtime-polyfill.js:99) ``` This invocation succeeds: ```hbs ``` --- .../components/angle-bracket-invocation-test.js | 11 +++++++++++ .../runtime-polyfill.js | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/integration/components/angle-bracket-invocation-test.js b/tests/integration/components/angle-bracket-invocation-test.js index 3ced059..3421031 100644 --- a/tests/integration/components/angle-bracket-invocation-test.js +++ b/tests/integration/components/angle-bracket-invocation-test.js @@ -318,5 +318,16 @@ module('Integration | Component | angle-bracket-invocation', function(hooks) { assert.dom('span[data-test-my-thing]').hasText('hi martin!'); }); + + test('passing into element - unused', async function(assert) { + this.owner.register( + 'template:components/foo-bar', + hbs`hi martin!` + ); + + await render(hbs``); + + assert.dom('span').hasText('hi martin!'); + }); }); }); diff --git a/vendor/angle-bracket-invocation-polyfill/runtime-polyfill.js b/vendor/angle-bracket-invocation-polyfill/runtime-polyfill.js index 719aade..9ecdb90 100644 --- a/vendor/angle-bracket-invocation-polyfill/runtime-polyfill.js +++ b/vendor/angle-bracket-invocation-polyfill/runtime-polyfill.js @@ -104,7 +104,7 @@ import { lte, gte } from 'ember-compatibility-helpers'; let { positional } = args.capture(); let invocationAttributesReference = positional.at(0); let invocationAttributes = invocationAttributesReference.value(); - let attributeNames = Object.keys(invocationAttributes); + let attributeNames = invocationAttributes ? Object.keys(invocationAttributes) : []; let dynamicAttributes = {}; for (let i = 0; i < attributeNames.length; i++) { @@ -235,7 +235,7 @@ import { lte, gte } from 'ember-compatibility-helpers'; let positional = gte('2.15.0-beta.1') ? args.capture().positional : args.positional; let invocationAttributesReference = positional.at(0); let invocationAttributes = invocationAttributesReference.value(); - let attributeNames = Object.keys(invocationAttributes); + let attributeNames = invocationAttributes ? Object.keys(invocationAttributes) : []; let dynamicAttributes = {}; for (let i = 0; i < attributeNames.length; i++) {