From 31af863dd428d58aaafdd107b200fca0c08efaab Mon Sep 17 00:00:00 2001 From: cibernox Date: Sun, 4 Mar 2018 00:07:00 +0100 Subject: [PATCH] Remove Ember.required, marked as deprecated until 3.0.0 --- packages/ember-metal/lib/index.js | 2 +- packages/ember-metal/lib/mixin.js | 30 +--------- .../ember-metal/tests/mixin/required_test.js | 60 ------------------- .../ember-runtime/lib/system/core_object.js | 6 -- packages/ember/lib/index.js | 3 - packages/ember/tests/reexports_test.js | 5 -- 6 files changed, 3 insertions(+), 103 deletions(-) delete mode 100644 packages/ember-metal/tests/mixin/required_test.js diff --git a/packages/ember-metal/lib/index.js b/packages/ember-metal/lib/index.js index a8d5f2073da..84964cfce30 100644 --- a/packages/ember-metal/lib/index.js +++ b/packages/ember-metal/lib/index.js @@ -80,7 +80,7 @@ export { default as setProperties } from './set_properties'; export { default as expandProperties } from './expand_properties'; export { addObserver, removeObserver } from './observer'; -export { Mixin, aliasMethod, mixin, observer, required, REQUIRED } from './mixin'; +export { Mixin, aliasMethod, mixin, observer } from './mixin'; export { default as InjectedProperty } from './injected_property'; export { setHasViews, tagForProperty, tagFor, markObjectAsDirty } from './tags'; export { default as runInTransaction, didRender, assertNotRendered } from './transaction'; diff --git a/packages/ember-metal/lib/mixin.js b/packages/ember-metal/lib/mixin.js index dc4b7dd3ecb..a210d0170bb 100644 --- a/packages/ember-metal/lib/mixin.js +++ b/packages/ember-metal/lib/mixin.js @@ -3,7 +3,7 @@ */ import { EMBER_METAL_ES5_GETTERS } from 'ember/features'; import { assign, guidFor, ROOT, wrap, makeArray } from 'ember-utils'; -import { assert, deprecate } from 'ember-debug'; +import { assert } from 'ember-debug'; import { DEBUG } from 'ember-env-flags'; import { ENV } from 'ember-environment'; import { descriptorFor, meta as metaFor, peekMeta } from './meta'; @@ -171,10 +171,6 @@ function applyMergedProperties(obj, key, value, values) { function addNormalizedProperty(base, key, value, meta, descs, values, concats, mergings) { if (value instanceof Descriptor) { - if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT && value === REQUIRED && descs[key]) { - return CONTINUE; - } - // Wrap descriptor function to implement // _super() if needed if (value._getter) { @@ -317,10 +313,6 @@ function applyMixin(obj, mixins, partial) { desc = descs[key]; value = values[key]; - if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT && desc === REQUIRED) { - continue; - } - while (desc && desc instanceof Alias) { let followed = followAlias(obj, desc, descs, values); desc = followed.desc; @@ -655,24 +647,6 @@ function _keys(mixin, ret = new Set(), seen = new Set()) { return ret; } -const REQUIRED = new Descriptor(); -REQUIRED.toString = () => '(Required Property)'; - -/** - Denotes a required property for a mixin - - @method required - @for Ember - @private -*/ -export function required() { - deprecate('Ember.required is deprecated as its behavior is inconsistent and unreliable.', false, { - id: 'ember-metal.required', - until: '3.0.0', - }); - return REQUIRED; -} - class Alias extends Descriptor { constructor(methodName) { super(); @@ -763,4 +737,4 @@ export function observer(...args) { return func; } -export { Mixin, REQUIRED }; +export { Mixin }; diff --git a/packages/ember-metal/tests/mixin/required_test.js b/packages/ember-metal/tests/mixin/required_test.js deleted file mode 100644 index 17173b562e8..00000000000 --- a/packages/ember-metal/tests/mixin/required_test.js +++ /dev/null @@ -1,60 +0,0 @@ -import { mixin, Mixin, required, get } from '../..'; -import { ENV } from 'ember-environment'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -let PartialMixin, FinalMixin, obj; -let originalEnvVal; - -moduleFor( - 'Module.required', - class extends AbstractTestCase { - beforeEach() { - originalEnvVal = ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT; - ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT = true; - expectDeprecation(() => { - PartialMixin = Mixin.create({ - foo: required(), - bar: 'BAR', - }); - }, 'Ember.required is deprecated as its behavior is inconsistent and unreliable.'); - - FinalMixin = Mixin.create({ - foo: 'FOO', - }); - - obj = {}; - } - - afterEach() { - PartialMixin = FinalMixin = obj = null; - ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT = originalEnvVal; - } - - ['@test applying a mixin to meet requirement'](assert) { - FinalMixin.apply(obj); - PartialMixin.apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test combined mixins to meet requirement'](assert) { - Mixin.create(PartialMixin, FinalMixin).apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test merged mixin'](assert) { - Mixin.create(PartialMixin, { foo: 'FOO' }).apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test define property on source object'](assert) { - obj.foo = 'FOO'; - PartialMixin.apply(obj); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - - ['@test using apply'](assert) { - mixin(obj, PartialMixin, { foo: 'FOO' }); - assert.equal(get(obj, 'foo'), 'FOO', 'should now be defined'); - } - } -); diff --git a/packages/ember-runtime/lib/system/core_object.js b/packages/ember-runtime/lib/system/core_object.js index 43a3ee90735..00cf79c7c97 100644 --- a/packages/ember-runtime/lib/system/core_object.js +++ b/packages/ember-runtime/lib/system/core_object.js @@ -22,7 +22,6 @@ import { finishChains, sendEvent, Mixin, - REQUIRED, defineProperty, ComputedProperty, InjectedProperty, @@ -986,11 +985,6 @@ let ClassMixinProps = { }, }; -if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT) { - ClassMixinProps.ClassMixin = REQUIRED; - ClassMixinProps.PrototypeMixin = REQUIRED; -} - function injectedPropertyAssertion() { assert('Injected properties are invalid', validatePropertyInjections(this)); } diff --git a/packages/ember/lib/index.js b/packages/ember/lib/index.js index 5f7a59db3d5..1dd59287880 100644 --- a/packages/ember/lib/index.js +++ b/packages/ember/lib/index.js @@ -141,9 +141,6 @@ Ember.expandProperties = metal.expandProperties; Ember.NAME_KEY = utils.NAME_KEY; Ember.addObserver = metal.addObserver; Ember.removeObserver = metal.removeObserver; -if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT) { - Ember.required = metal.required; -} Ember.aliasMethod = metal.aliasMethod; Ember.observer = metal.observer; Ember.mixin = metal.mixin; diff --git a/packages/ember/tests/reexports_test.js b/packages/ember/tests/reexports_test.js index 86718c9f7ce..633da7eea43 100644 --- a/packages/ember/tests/reexports_test.js +++ b/packages/ember/tests/reexports_test.js @@ -1,5 +1,4 @@ import Ember from '../index'; -import { ENV } from 'ember-environment'; import { confirmExport } from 'internal-test-helpers'; import { DEBUG } from 'ember-env-flags'; import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; @@ -255,7 +254,3 @@ let allExports = [ ['DataAdapter', 'ember-extension-support'], ['ContainerDebugAdapter', 'ember-extension-support'], ]; - -if (ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT) { - allExports.push(['required', 'ember-metal']); -}