Skip to content

Commit 03e53fb

Browse files
committed
progress
1 parent e4242d3 commit 03e53fb

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

packages/@ember/object/compat.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import {
66
setClassicDecorator,
77
} from '@ember/-internals/metal';
88
import type { ElementDescriptor } from '@ember/-internals/metal';
9+
import {
10+
identifyModernDecoratorArgs,
11+
isModernDecoratorArgs,
12+
} from '@ember/-internals/metal/lib/decorator-util';
913
import { assert } from '@ember/debug';
1014
import type { UpdatableTag } from '@glimmer/validator';
1115
import { consumeTag, tagFor, track, updateTag } from '@glimmer/validator';
@@ -139,6 +143,25 @@ export function dependentKeyCompat(
139143
);
140144

141145
return wrapGetterSetter(target, key, desc);
146+
} else if (isModernDecoratorArgs(args)) {
147+
const dec = identifyModernDecoratorArgs(args);
148+
assert(
149+
'The @dependentKeyCompat decorator must be applied to getters/setters when used in native classes',
150+
dec.kind === 'getter'
151+
);
152+
return function (this: any) {
153+
let propertyTag = tagFor(this, dec.context.name as string) as UpdatableTag;
154+
let ret;
155+
156+
let tag = track(() => {
157+
ret = dec.value.call(this);
158+
});
159+
160+
updateTag(propertyTag, tag);
161+
consumeTag(tag);
162+
163+
return ret;
164+
};
142165
} else {
143166
const desc = args[0];
144167

0 commit comments

Comments
 (0)