From 419580ff9a6182606b401a9c5bd56379502b4404 Mon Sep 17 00:00:00 2001 From: Matej Janjic Date: Fri, 3 Jan 2020 14:47:17 +0100 Subject: [PATCH] [BUGFIX beta] Fix async functions being treated as falsey --- .../glimmer/tests/utils/shared-conditional-tests.js | 1 + packages/@ember/-internals/runtime/lib/type-of.js | 1 + .../@ember/-internals/runtime/tests/core/is_array_test.js | 2 ++ .../@ember/-internals/runtime/tests/core/type_of_test.js | 6 +++++- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/@ember/-internals/glimmer/tests/utils/shared-conditional-tests.js b/packages/@ember/-internals/glimmer/tests/utils/shared-conditional-tests.js index 46f14523dc8..202c7ef331d 100644 --- a/packages/@ember/-internals/glimmer/tests/utils/shared-conditional-tests.js +++ b/packages/@ember/-internals/glimmer/tests/utils/shared-conditional-tests.js @@ -402,6 +402,7 @@ const IfUnlessWithTestCases = [ ObjectProxy.create({ content: true }), Object, function() {}, + async function() {}, new String('hello'), new String(''), new Boolean(true), diff --git a/packages/@ember/-internals/runtime/lib/type-of.js b/packages/@ember/-internals/runtime/lib/type-of.js index ef6062e38fa..76bf2d1eead 100644 --- a/packages/@ember/-internals/runtime/lib/type-of.js +++ b/packages/@ember/-internals/runtime/lib/type-of.js @@ -8,6 +8,7 @@ const TYPE_MAP = { '[object Number]': 'number', '[object String]': 'string', '[object Function]': 'function', + '[object AsyncFunction]': 'function', '[object Array]': 'array', '[object Date]': 'date', '[object RegExp]': 'regexp', diff --git a/packages/@ember/-internals/runtime/tests/core/is_array_test.js b/packages/@ember/-internals/runtime/tests/core/is_array_test.js index e693353ecd4..3614d993eab 100644 --- a/packages/@ember/-internals/runtime/tests/core/is_array_test.js +++ b/packages/@ember/-internals/runtime/tests/core/is_array_test.js @@ -18,6 +18,7 @@ moduleFor( let length = { length: 12 }; let strangeLength = { length: 'yes' }; let fn = function() {}; + let asyncFn = async function() {}; let arrayProxy = ArrayProxy.create({ content: emberA() }); assert.equal(isArray(numarray), true, '[1,2,3]'); @@ -29,6 +30,7 @@ moduleFor( assert.equal(isArray(strangeLength), false, '{ length: "yes" }'); assert.equal(isArray(global), false, 'global'); assert.equal(isArray(fn), false, 'function() {}'); + assert.equal(isArray(asyncFn), false, 'async function() {}'); assert.equal(isArray(arrayProxy), true, '[]'); } diff --git a/packages/@ember/-internals/runtime/tests/core/type_of_test.js b/packages/@ember/-internals/runtime/tests/core/type_of_test.js index 7b956ad0f8a..8b934d6153a 100644 --- a/packages/@ember/-internals/runtime/tests/core/type_of_test.js +++ b/packages/@ember/-internals/runtime/tests/core/type_of_test.js @@ -17,7 +17,10 @@ moduleFor( let a = null; let arr = [1, 2, 3]; let obj = {}; - let instance = EmberObject.create({ method() {} }); + let instance = EmberObject.create({ + method() {}, + async asyncMethod() {}, + }); assert.equal(typeOf(), 'undefined', 'undefined'); assert.equal(typeOf(null), 'null', 'null'); @@ -36,6 +39,7 @@ moduleFor( assert.equal(typeOf(obj), 'object', 'item of type object'); assert.equal(typeOf(instance), 'instance', 'item of type instance'); assert.equal(typeOf(instance.method), 'function', 'item of type function'); + assert.equal(typeOf(instance.asyncMethod), 'function', 'item of type async function'); assert.equal(typeOf(EmberObject.extend()), 'class', 'item of type class'); assert.equal(typeOf(new Error()), 'error', 'item of type error'); }