diff --git a/packages/@ember/-internals/metal/index.ts b/packages/@ember/-internals/metal/index.ts index 37fba150cb2..e696b443dd9 100644 --- a/packages/@ember/-internals/metal/index.ts +++ b/packages/@ember/-internals/metal/index.ts @@ -50,7 +50,7 @@ export { removeObserver, flushAsyncObservers, } from './lib/observer'; -export { Mixin, aliasMethod, mixin, observer, applyMixin } from './lib/mixin'; +export { Mixin, mixin, observer, applyMixin } from './lib/mixin'; export { default as inject, DEBUG_INJECTION_FUNCTIONS } from './lib/injected_property'; export { tagForProperty, tagForObject, markObjectAsDirty } from './lib/tags'; export { tracked, TrackedDescriptor } from './lib/tracked'; diff --git a/packages/@ember/-internals/metal/lib/mixin.ts b/packages/@ember/-internals/metal/lib/mixin.ts index 251893144cb..3c3f434e2cc 100644 --- a/packages/@ember/-internals/metal/lib/mixin.ts +++ b/packages/@ember/-internals/metal/lib/mixin.ts @@ -13,8 +13,7 @@ import { wrap, } from '@ember/-internals/utils'; import { EMBER_MODERNIZED_BUILT_IN_COMPONENTS } from '@ember/canary-features'; -import { assert, deprecate } from '@ember/debug'; -import { ALIAS_METHOD } from '@ember/deprecated-features'; +import { assert } from '@ember/debug'; import { DEBUG } from '@glimmer/env'; import { _WeakSet } from '@glimmer/util'; import { @@ -26,7 +25,6 @@ import { import { ComputedDescriptor, descriptorForDecorator, - descriptorForProperty, makeComputedDecorator, nativeDescDecorator, } from './decorator'; @@ -366,39 +364,6 @@ function mergeProps( } } -let followMethodAlias: ( - obj: object, - alias: Alias, - descs: { [key: string]: any }, - values: { [key: string]: any } -) => { desc: any; value: any }; - -if (ALIAS_METHOD) { - followMethodAlias = function ( - obj: object, - alias: Alias, - descs: { [key: string]: any }, - values: { [key: string]: any } - ) { - let altKey = alias.methodName; - let possibleDesc; - let desc = descs[altKey]; - let value = values[altKey]; - - if (desc !== undefined || value !== undefined) { - // do nothing - } else if ((possibleDesc = descriptorForProperty(obj, altKey)) !== undefined) { - desc = possibleDesc; - value = undefined; - } else { - desc = undefined; - value = obj[altKey]; - } - - return { desc, value }; - }; -} - function updateObserversAndListeners(obj: object, key: string, fn: Function, add: boolean) { let meta = observerListenerMetaFor(fn); @@ -446,14 +411,6 @@ export function applyMixin(obj: { [key: string]: any }, mixins: Mixin[], _hideKe let value = values[key]; let desc = descs[key]; - if (ALIAS_METHOD) { - while (value !== undefined && isAlias(value)) { - let followed = followMethodAlias(obj, value, descs, values); - desc = followed.desc; - value = followed.value; - } - } - if (value !== undefined) { if (typeof value === 'function') { updateObserversAndListeners(obj, key, value, true); @@ -785,80 +742,6 @@ function _keys(mixin: Mixin, ret = new Set(), seen = new Set()) { return ret; } -declare class Alias { - public methodName: string; - constructor(methodName: string); -} - -let AliasImpl: typeof Alias; - -let isAlias: (alias: any) => alias is Alias; - -if (ALIAS_METHOD) { - const ALIASES = new _WeakSet(); - - isAlias = (alias: any): alias is Alias => { - return ALIASES.has(alias); - }; - - AliasImpl = class AliasImpl { - constructor(public methodName: string) { - ALIASES.add(this); - } - } as typeof Alias; -} - -/** - Makes a method available via an additional name. - - ```app/utils/person.js - import EmberObject, { - aliasMethod - } from '@ember/object'; - - export default EmberObject.extend({ - name() { - return 'Tomhuda Katzdale'; - }, - moniker: aliasMethod('name') - }); - ``` - - ```javascript - let goodGuy = Person.create(); - - goodGuy.name(); // 'Tomhuda Katzdale' - goodGuy.moniker(); // 'Tomhuda Katzdale' - ``` - - @method aliasMethod - @static - @deprecated Use a shared utility method instead - @for @ember/object - @param {String} methodName name of the method to alias - @public -*/ -export let aliasMethod: (methodName: string) => any; - -if (ALIAS_METHOD) { - aliasMethod = function aliasMethod(methodName: string): Alias { - deprecate( - `You attempted to alias '${methodName}, but aliasMethod has been deprecated. Consider extracting the method into a shared utility function.`, - false, - { - id: 'object.alias-method', - until: '4.0.0', - url: 'https://deprecations.emberjs.com/v3.x#toc_object-alias-method', - for: 'ember-source', - since: { - enabled: '3.9.0', - }, - } - ); - return new AliasImpl(methodName); - }; -} - // .......................................................... // OBSERVER HELPER // diff --git a/packages/@ember/-internals/metal/tests/mixin/alias_method_test.js b/packages/@ember/-internals/metal/tests/mixin/alias_method_test.js deleted file mode 100644 index 3532d2f2809..00000000000 --- a/packages/@ember/-internals/metal/tests/mixin/alias_method_test.js +++ /dev/null @@ -1,101 +0,0 @@ -import { get, Mixin, mixin, aliasMethod } from '../..'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -function validateAliasMethod(assert, obj) { - assert.equal(obj.fooMethod(), 'FOO', 'obj.fooMethod()'); - assert.equal(obj.barMethod(), 'FOO', 'obj.barMethod should be a copy of foo'); -} - -moduleFor( - 'aliasMethod', - class extends AbstractTestCase { - ['@test methods of another name are aliased when the mixin is applied'](assert) { - expectDeprecation(() => { - let MyMixin = Mixin.create({ - fooMethod() { - return 'FOO'; - }, - barMethod: aliasMethod('fooMethod'), - }); - - let obj = MyMixin.apply({}); - validateAliasMethod(assert, obj); - }, /aliasMethod has been deprecated. Consider extracting the method into a shared utility function/); - } - - ['@test should follow aliasMethods all the way down'](assert) { - expectDeprecation(() => { - let MyMixin = Mixin.create({ - bar: aliasMethod('foo'), // put first to break ordered iteration - baz() { - return 'baz'; - }, - foo: aliasMethod('baz'), - }); - - let obj = MyMixin.apply({}); - assert.equal(get(obj, 'bar')(), 'baz', 'should have followed aliasMethods'); - }, /aliasMethod has been deprecated. Consider extracting the method into a shared utility function/); - } - - ['@test should alias methods from other dependent mixins'](assert) { - expectDeprecation(() => { - let BaseMixin = Mixin.create({ - fooMethod() { - return 'FOO'; - }, - }); - - let MyMixin = Mixin.create(BaseMixin, { - barMethod: aliasMethod('fooMethod'), - }); - - let obj = MyMixin.apply({}); - validateAliasMethod(assert, obj); - }, /aliasMethod has been deprecated. Consider extracting the method into a shared utility function/); - } - - ['@test should alias methods from other mixins applied at same time'](assert) { - expectDeprecation(() => { - let BaseMixin = Mixin.create({ - fooMethod() { - return 'FOO'; - }, - }); - - let MyMixin = Mixin.create({ - barMethod: aliasMethod('fooMethod'), - }); - - let obj = mixin({}, BaseMixin, MyMixin); - validateAliasMethod(assert, obj); - }, /aliasMethod has been deprecated. Consider extracting the method into a shared utility function/); - } - - ['@test should alias methods from mixins already applied on object'](assert) { - expectDeprecation(() => { - let BaseMixin = Mixin.create({ - quxMethod() { - return 'qux'; - }, - }); - - let MyMixin = Mixin.create({ - bar: aliasMethod('foo'), - barMethod: aliasMethod('fooMethod'), - }); - - let obj = { - fooMethod() { - return 'FOO'; - }, - }; - - BaseMixin.apply(obj); - MyMixin.apply(obj); - - validateAliasMethod(assert, obj); - }, /aliasMethod has been deprecated. Consider extracting the method into a shared utility function/); - } - } -); diff --git a/packages/@ember/deprecated-features/index.ts b/packages/@ember/deprecated-features/index.ts index 8d07921c304..3bb3d98032e 100644 --- a/packages/@ember/deprecated-features/index.ts +++ b/packages/@ember/deprecated-features/index.ts @@ -9,7 +9,6 @@ export const MERGE = !!'3.6.0-beta.1'; export const ROUTER_EVENTS = !!'4.0.0'; export const COMPONENT_MANAGER_STRING_LOOKUP = !!'3.8.0'; export const JQUERY_INTEGRATION = !!'3.9.0'; -export const ALIAS_METHOD = !!'3.9.0'; export const APP_CTRL_ROUTER_PROPS = !!'3.10.0-beta.1'; export const FUNCTION_PROTOTYPE_EXTENSIONS = !!'3.11.0-beta.1'; export const MOUSE_ENTER_LEAVE_MOVE_EVENTS = !!'3.13.0-beta.1'; diff --git a/packages/@ember/object/index.js b/packages/@ember/object/index.js index cf1f7dccc1c..ba3d1bd47a3 100644 --- a/packages/@ember/object/index.js +++ b/packages/@ember/object/index.js @@ -16,7 +16,6 @@ export { observer, computed, trySet, - aliasMethod, } from '@ember/-internals/metal'; import { computed } from '@ember/-internals/metal'; diff --git a/packages/ember/index.js b/packages/ember/index.js index f0d1f8cab34..bdaa04e107f 100644 --- a/packages/ember/index.js +++ b/packages/ember/index.js @@ -305,7 +305,6 @@ Ember.setProperties = metal.setProperties; Ember.expandProperties = metal.expandProperties; Ember.addObserver = metal.addObserver; Ember.removeObserver = metal.removeObserver; -Ember.aliasMethod = metal.aliasMethod; Ember.observer = metal.observer; Ember.mixin = metal.mixin; Ember.Mixin = metal.Mixin; diff --git a/packages/ember/tests/reexports_test.js b/packages/ember/tests/reexports_test.js index 2f25248286a..98e0ce868d9 100644 --- a/packages/ember/tests/reexports_test.js +++ b/packages/ember/tests/reexports_test.js @@ -282,7 +282,6 @@ let allExports = [ // @ember/object ['Object', '@ember/object', 'default'], ['_action', '@ember/object', 'action'], - ['aliasMethod', '@ember/object', 'aliasMethod'], ['computed', '@ember/object', 'computed'], ['defineProperty', '@ember/object', 'defineProperty'], ['get', '@ember/object', 'get'], diff --git a/tests/docs/expected.js b/tests/docs/expected.js index ac6c522d29e..bb3f901e2f8 100644 --- a/tests/docs/expected.js +++ b/tests/docs/expected.js @@ -75,7 +75,6 @@ module.exports = { 'advanceReadiness', 'afterModel', 'alias', - 'aliasMethod', 'all', 'allSettled', 'and',