diff --git a/packages/@ember/-internals/metal/lib/tags.ts b/packages/@ember/-internals/metal/lib/tags.ts index d23b689dc66..7478e1abfd0 100644 --- a/packages/@ember/-internals/metal/lib/tags.ts +++ b/packages/@ember/-internals/metal/lib/tags.ts @@ -20,14 +20,11 @@ export function tagForProperty(object: any, propertyKey: string | symbol, _meta? if (objectType !== 'function' && (objectType !== 'object' || object === null)) { return CONSTANT_TAG; } - let meta = _meta === undefined ? metaFor(object) : _meta; - - if (isProxy(object)) { - return tagFor(object, meta); - } + let meta = _meta === undefined ? metaFor(object) : _meta; let tags = meta.writableTags(); let tag = tags[propertyKey]; + if (tag) { return tag; } diff --git a/packages/@ember/-internals/runtime/lib/mixins/-proxy.js b/packages/@ember/-internals/runtime/lib/mixins/-proxy.js index d145f85fe18..82bb3e19b02 100644 --- a/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +++ b/packages/@ember/-internals/runtime/lib/mixins/-proxy.js @@ -15,7 +15,7 @@ import { tagFor, computed, } from '@ember/-internals/metal'; -import { setProxy } from '@ember/-internals/utils'; +import { setProxy, TRACKABLE_OBJECT } from '@ember/-internals/utils'; import { assert } from '@ember/debug'; function contentPropertyDidChange(content, contentKey) { @@ -44,6 +44,8 @@ export function contentFor(proxy, m) { @private */ export default Mixin.create({ + [TRACKABLE_OBJECT]: true, + /** The object whose properties will be forwarded.