Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove LEGACY_OWNER #19651

Merged
merged 1 commit into from Jul 21, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
21 changes: 0 additions & 21 deletions packages/@ember/-internals/container/tests/owner_test.js
Expand Up @@ -14,26 +14,5 @@ moduleFor(

assert.strictEqual(getOwner(obj), owner, 'owner has been set');
}

['@test getOwner deprecates using LEGACY_OWNER'](assert) {
let owner = {};
let obj = {};

setOwner(obj, owner);

let legacyOwner;

// This is not something we expect to happen a lot, but does exist currently
// in the wild: https://github.com/hjdivad/ember-m3/pull/822
for (let key in obj) {
legacyOwner = key;
}

let newObj = { [legacyOwner]: owner };

expectDeprecation(() => {
assert.strictEqual(getOwner(newObj), owner, 'owner has been set');
}, /You accessed the owner using `getOwner` on an object/);
}
}
);
27 changes: 1 addition & 26 deletions packages/@ember/-internals/owner/index.ts
Expand Up @@ -38,11 +38,6 @@ export interface Owner {
routable?: boolean;
}

import { enumerableSymbol } from '@ember/-internals/utils';
import { deprecate } from '@ember/debug';

export const LEGACY_OWNER: unique symbol = enumerableSymbol('LEGACY_OWNER') as any;

/**
Framework objects in an Ember application (components, services, routes, etc.)
are created via a factory and dependency injection system. Each of these
Expand Down Expand Up @@ -88,26 +83,7 @@ export const LEGACY_OWNER: unique symbol = enumerableSymbol('LEGACY_OWNER') as a
@public
*/
export function getOwner(object: any): Owner {
let owner = glimmerGetOwner(object) as Owner;

if (owner === undefined) {
owner = object[LEGACY_OWNER];

deprecate(
`You accessed the owner using \`getOwner\` on an object, but it was not set on that object with \`setOwner\`. You must use \`setOwner\` to set the owner on all objects. You cannot use Object.assign().`,
owner === undefined,
{
id: 'owner.legacy-owner-injection',
until: '3.25.0',
for: 'ember-source',
since: {
enabled: '3.22.0',
},
}
);
}

return owner;
return glimmerGetOwner(object) as Owner;
}

/**
Expand All @@ -124,5 +100,4 @@ export function getOwner(object: any): Owner {
*/
export function setOwner(object: any, owner: Owner): void {
glimmerSetOwner(object, owner);
object[LEGACY_OWNER] = owner;
}
9 changes: 1 addition & 8 deletions packages/@ember/-internals/runtime/lib/system/core_object.js
Expand Up @@ -3,7 +3,7 @@
*/

import { getFactoryFor, setFactoryFor } from '@ember/-internals/container';
import { getOwner, LEGACY_OWNER } from '@ember/-internals/owner';
import { getOwner } from '@ember/-internals/owner';
import {
guidFor,
lookupDescriptor,
Expand Down Expand Up @@ -306,9 +306,6 @@ function defineSelfDestructingImplicitInjectionGetter(obj, keyName, value, messa
*/
class CoreObject {
constructor(owner) {
// setOwner has to set both OWNER and LEGACY_OWNER for backwards compatibility, and
// LEGACY_OWNER is enumerable, so setting it would add an enumerable property to the object,
// so we just set `OWNER` directly here.
this[OWNER] = owner;

// prepare prototype...
Expand Down Expand Up @@ -379,10 +376,6 @@ class CoreObject {
}
}

// Empty setter for absorbing setting the LEGACY_OWNER, which should _not_
// become an enumerable property, and should not be used in general.
set [LEGACY_OWNER](value) {}

reopen(...args) {
applyMixin(this, args);
return this;
Expand Down