From 1d91d54699ce5fc24d1e1b4cac36d1c7ec7570f1 Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Tue, 30 Apr 2024 07:23:58 -0400 Subject: [PATCH 1/3] Don't introduce unnecessary mutable bindings These unused mutable bindings produce worse build output when building Ember with rollup. And they're wordier anyway. --- .../@ember/-internals/glimmer/lib/utils/managers.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/@ember/-internals/glimmer/lib/utils/managers.ts b/packages/@ember/-internals/glimmer/lib/utils/managers.ts index 2f2f47e5286..54fb7f46656 100644 --- a/packages/@ember/-internals/glimmer/lib/utils/managers.ts +++ b/packages/@ember/-internals/glimmer/lib/utils/managers.ts @@ -1,10 +1,7 @@ import type { InternalOwner } from '@ember/-internals/owner'; import type { ComponentManager } from '@glimmer/interfaces'; -import { - componentCapabilities as glimmerComponentCapabilities, - modifierCapabilities as glimmerModifierCapabilities, - setComponentManager as glimmerSetComponentManager, -} from '@glimmer/manager'; +import { setComponentManager as glimmerSetComponentManager } from '@glimmer/manager'; +export { modifierCapabilities, componentCapabilities } from '@glimmer/manager'; /** Associate a class with a component manager (an object that is responsible for @@ -23,6 +20,3 @@ export function setComponentManager( ): T { return glimmerSetComponentManager(manager, obj); } - -export let componentCapabilities = glimmerComponentCapabilities; -export let modifierCapabilities = glimmerModifierCapabilities; From 4458b92a9c9aedd552805fe1ef4ad9fe8bb9105a Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Tue, 30 Apr 2024 07:28:10 -0400 Subject: [PATCH 2/3] Make tests agnostic to class naming mangling Depending on what build environment the test suite is using, class names could get mangled (because they're getting merged into a shared module namespace for example). This makes the tests not care. --- .../integration/components/curly-components-test.js | 2 +- .../tests/integration/custom-modifier-manager-test.js | 2 +- .../-internals/metal/tests/tracked/validation_test.js | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js b/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js index afa67145fd3..9dfdf6e2ae1 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/components/curly-components-test.js @@ -2537,7 +2537,7 @@ moduleFor( template: '
{{this.wrapper.content}}
', }); - let expectedBacktrackingMessage = backtrackingMessageFor('content', 'Wrapper', { + let expectedBacktrackingMessage = backtrackingMessageFor('content', Wrapper.name, { renderTree: ['x-outer', 'this.wrapper.content'], }); diff --git a/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js b/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js index acea50be7db..b26992d1ccd 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/custom-modifier-manager-test.js @@ -271,7 +271,7 @@ class ModifierManagerTest extends RenderingTestCase { } ); - let expectedMessage = backtrackingMessageFor('name', 'Person', { + let expectedMessage = backtrackingMessageFor('name', Person.name, { renderTree: ['\\(instance of a `foo-bar` modifier\\)'], includeTopLevel: false, }); diff --git a/packages/@ember/-internals/metal/tests/tracked/validation_test.js b/packages/@ember/-internals/metal/tests/tracked/validation_test.js index 47e5ba1a231..307c35dcc4e 100644 --- a/packages/@ember/-internals/metal/tests/tracked/validation_test.js +++ b/packages/@ember/-internals/metal/tests/tracked/validation_test.js @@ -364,18 +364,21 @@ moduleFor( } ['@test gives helpful assertion when a tracked property is mutated after access in with an autotracking transaction']() { - class EmberObject { + class MyObject { @tracked value; + toString() { + return 'MyObject'; + } } - let obj = new EmberObject(); + let obj = new MyObject(); expectAssertion(() => { track(() => { obj.value; obj.value = 123; }); - }, /You attempted to update `value` on `EmberObject`, but it had already been used previously in the same computation/); + }, /You attempted to update `value` on `MyObject`, but it had already been used previously in the same computation/); } ['@test get() does not entangle in the autotracking stack until after retrieving the value']( From 50f06a7328fe9520a48f8d536607a608b134090f Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Tue, 30 Apr 2024 07:31:46 -0400 Subject: [PATCH 3/3] Don't emit empty field initializer for `set` This is arguably just cleaner style, but the reason I care in particular is that there is a bug in babel such that under certain settings this emits: ```js class Registry { // ... set constructor() { // ... } } ``` which is a syntax error because it looks like your constructor is a setter. With `declare`, typescript completely removes the pointless runtime field initializer. --- packages/@ember/-internals/container/lib/registry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@ember/-internals/container/lib/registry.ts b/packages/@ember/-internals/container/lib/registry.ts index 3c8a0d92ee6..b36ebb09484 100644 --- a/packages/@ember/-internals/container/lib/registry.ts +++ b/packages/@ember/-internals/container/lib/registry.ts @@ -56,7 +56,7 @@ export default class Registry { readonly _resolveCache: Record | object>; readonly _typeOptions: Record; - set?: typeof set; + declare set?: typeof set; constructor(options: RegistryOptions = {}) { this.fallback = options.fallback || null;